我声明了共享内存,并尝试使用 Visual Studio 2010 的 Nsight 2.2 对其进行跟踪。我将 CUDA 4.2 与 quadro 5000 一起使用。
在我的 kernel.cu 中:
extern __shared__ ushort2 sampleGatheringSM[];
在我调用内核的函数中:
sampleGathering_SM_size =dimBlock.x*dimBlock.y*4*sizeof(ushort2)*2; // = 10240
sampleGatheringKernel<<<dimGrid, dimBlock, sampleGathering_SM_size >>>(dev_image, dev_gradient, width, height);
当我查看 Nsight 上的 analisys 活动然后“CUDA Launches”时,它告诉我:
- 每个块分配的寄存器:10240
- 每个块分配的共享内存:0
- 块限制原因:寄存器
我是否正确分配了共享内存?我不明白如何分配寄存器。
编辑:
它还告诉我:
- 每个线程注册:32
- 每个块的动态共享内存:0
- 每个块的静态共享内存:0