我正在处理一组(大的2k x 2k)图像,
我需要按照几个连续图像的堆栈进行逐像素操作.
有没有关于使用单个2D大纹理+计算偏移与使用3D阵列的意见?
看起来3D阵列在CUDA api中有点"脱离主流",分配传递函数与相同的2D函数非常不同.
似乎没有关于CUDA的更高级别"如何和为什么"而不是具体调用的任何良好文档
有最佳实践指南,但它没有解决这个问题
小智 6
我建议你阅读"Cuda by Example"一书.它经历了所有这些没有记录的事情,它将解释"如何以及为什么".
我认为如果你渲染CUDA内核的结果你应该使用的是使用OpenGL互操作.这样,您的代码就可以处理GPU上的图像并将处理后的数据留在那里,从而使渲染速度更快.书中有一个很好的例子.
如果每个CUDA线程只需要读取第一帧中的一个像素和下一帧中的一个像素,则不需要使用纹理.如果每个线程在一堆连续像素中读取,纹理只会使您受益.所以你最好使用3D阵列.