我对 OpenCL 还很陌生,所以请多多包涵。
在我的代码的第一次迭代中,我为大型数据集使用了基本的内存缓冲区,并将它们声明为全局的。然而,现在我正在寻求改进时间,我想为此使用纹理内存。在 CUDA 版本中,我们使用 cudaBindTexture 和 tex1Dfetch 来获取大型一维浮点数组的数据。根据我对规范的理解,纹理内存与图像内存是一回事。但是,由于只有最大高度和宽度的 2D 和 3D 图像对象,我遇到了一些问题。我的数组大于最大高度/宽度,但不是最大高度 * 最大宽度。我必须将我的一维数组转换为二维吗?或者有更好的方法吗?
还是我完全关闭了?
我确实阅读了http://forums.nvidia.com/index.php?showtopic=151743和http://forums.nvidia.com/index.php?showtopic=150454但它们在纹理内存是否具有确切的结论最佳实践和编程指南中提到的实际上是图像对象。
谢谢,非常欢迎任何帮助/建议!