Cuda 2d或3d阵列

时间:2011-06-09 16:45:08

标签: cuda

我正在处理一组(大的2k x 2k)图像 我需要在几个连续图像的堆栈中进行每像素操作。

对于使用单个2D大纹理+计算偏移与使用3D阵列有什么意见吗?

似乎3D阵列在CUDA api中有点“脱离主流”,分配传递函数与相同的2D函数非常不同。

似乎没有关于CUDA的更高级别“如何和为什么”而不是特定呼叫的任何良好文档

best practices guide,但它没有解决此问题

2 个答案:

答案 0 :(得分:6)

我建议你阅读“Cuda by Example”一书。它经历了所有这些没有记录的事情,它将解释“如何以及为什么”。

我认为如果你渲染CUDA内核的结果,你应该使用的是使用OpenGL互操作。这样,您的代码就可以处理GPU上的图像并将处理后的数据留在那里,从而使渲染速度更快。这本书就是一个很好的例子。

如果每个CUDA线程只需要读取第一帧中的一个像素和下一帧中的一个像素,则不需要使用纹理。如果每个线程在一堆连续像素中读取,纹理只会使您受益。所以你最好使用3D阵列。

答案 1 :(得分:0)

以下是使用CUDA和3D cuda阵列的示例: https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st

相关问题