Joe*_*Joe 10 arrays textures cuda
我对设备指针和cudaArray
结构的预期用途之间的区别感到困惑.有人可以解释为什么我会使用一个与另一个?我的基本问题是,在查看文档并阅读"CUDA by Example"一书后,我不明白API设计者的意图.
从我所看到的,似乎cudaArray
应该用于纹理和指针应该用于直接访问内存.似乎3D纹理只能使用a创建cudaArray
.是否应该使用cudaArray
?分配所有纹理?许多例子似乎都没有.另外,为什么有一个函数cudaMallocArray
和cudaMallocArray3D
,但没有类似cudaMallocArray2D
?相反,有cudaBindTexture
和cudaBindTexture2D
,但没有cudaBindTexture3D
?
Rog*_*ahl 21
cudaArray
是一个不透明的内存块,已针对绑定到纹理进行了优化.纹理可以使用存储在空间填充曲线中的存储器,由于更好的2D空间局部性,这允许更好的纹理缓存命中率.将数据复制到a cudaArray
将使其格式化为这样的曲线.
因此,在a中存储数据cudaArray
是一种优化技术,可以产生更好的纹理缓存命中率.在早期的CUDA架构中,cudaArray
内核也无法访问它.但是,计算能力> = 2.0的体系结构可以通过CUDA表面访问数组.
确定是否应cudaArray
在全局内存中使用或使用常规缓冲区归结为内存的预期用法和访问模式.它将是项目特定的.
cudaMallocArray()
实际上分配一个2D数组,所以我认为问题只是不一致的命名.打电话可能更合乎逻辑cudaMallocArray2D()
.
我没有使用3D纹理.希望有人会回答,让我们知道为什么没有必要cudaBindTexture3D()
.
归档时间: |
|
查看次数: |
5423 次 |
最近记录: |