我正在寻找一种优雅的方式来在CUDA内核中传递多个重复的参数,
众所周知,每个内核参数位于每个CUDA线程的堆栈上,因此,内核将参数传递给位于每个堆栈上的每个线程和内存之间可能存在重复。
为了尽量减少传递的重复参数的数量,我正在寻找一种优雅的方式。
为了解释我的担忧:假设我的代码如下:
kernelFunction<<<gridSize,blockSize>>>(UINT imageWidth, UINT imageWidth, UINT imageStride, UINT numberOfElements,x,y,ect...)
[UINT imageWidth,UINT imageWidth,UINT imageStride,UINT numberOfElements参数位于每个线程库中,
我正在寻找一种技巧,可以减少参数传递并从其他来源访问数据。
我曾在考虑使用常量内存,但是由于常量内存位于全局变量中,因此将其删除。不用说,存储位置应该很快。
c.f。 programming guide:
__ global__函数参数传递到设备:
通过共享内存,在计算设备上限制为256个字节 能力1.x,
- 通过恒定内存,在设备上限制为4 KB 2.x及更高版本的计算能力。