nvidia编程指南中的示例显示了他们将pitchedPtr传递到其内核:

__global__ void MyKernel(cudaPitchedPtr devPitchedPtr,int width, int height, int depth)


但是,与其相反,为什么不只是以相同的方式分配,而是像这样调用:

__global__ void MyKernel(float* devPtr,int pitch, int width, int height, int depth)


然后根据需要访问元素。我希望使用后者,但是为什么编程指南会给出另一个示例(尽管是一个不好的示例-说明了如何访问元素,但也说明了不应使用cuda实现的设计模式)。

编辑:表示float * devPtr是cudaPitchedPtr的ptr(void * ptr)成员。

最佳答案

两种方法都同样有效-纯粹是您的审美决定。

对我来说,甚至还不清楚为什么cudaPitchedPtr具有额外的成员-真正重要的是基本指针和基音。

关于c - 使用3D cuda Memory时,最好传递关联的cudaPitchedPtr或仅传递cudaPitchedPtr结构中的原始指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8618964/

10-12 15:59