Я объявил общую память и попытался отследить ее с помощью Nsight 2.2 для Visual Studio 2010. Я использую 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, а затем «Запуск CUDA», он говорит мне, что:
- Выделенные регистры на блок: 10240
- Выделенная общая память на блок: 0
- Причина ограничения блокировки: регистры
Правильно ли я выделил разделяемую память? Я не понимаю, как я мог выделить Register.
РЕДАКТИРОВАТЬ:
это говорит мне также:
- Регистраций в темах: 32
- Динамическая общая память на блок: 0
- Статическая общая память на блок: 0
extern __shared__ ushort2 sampleGatheringSM[]
объявлен вне глобальной функции в файле global. - person Seltymar   schedule 11.10.2012