我有一个CUDA程序,其中内核寄存器将最大理论达到的占用限制在%50。因此,我决定使用共享内存,而不是寄存器,这些变量是块线程之间的常量,并且在整个内核运行过程中几乎是只读的。我不能在这里提供源代码;我所做的在概念上是这样的:
我最初的计划是:
__global__ void GPU_Kernel (...) {
__shared__ int sharedData[N]; //N:maximum amount that doesn't limit maximum occupancy
int r_1 = A; //except for this first initial