Cuda Общая память отображается как регистр в Nsight

Я объявил общую память и попытался отследить ее с помощью 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 Launches", она говорит мне, что:

  • Выделенных регистров на блок: 10240
  • Выделенная общая память на блок: 0
  • Причина ограничения блока: регистры

Правильно ли я выделил общую память? Я не понимаю, как я мог бы выделить регистр.

РЕДАКТИРОВАТЬ:

это говорит мне также:

  • Регистрация на темы: 32
  • Динамическая общая память на блок: 0
  • Статическая общая память на блок: 0

1 ответ

Решение

Объявление динамической разделяемой памяти является правильным. В отчете трассировки анализа Nsight 2.2 есть ошибка, которая возникает только для операций трассировки CUDA. Действия трассировки анализа выполняются с параметром Nsight | Варианты| Анализ | Режим трассировки ядра CUDA = Serialized и Analysis Profiler. Действия CUDA показывают правильное значение. Эта ошибка будет исправлена ​​в следующей версии Nsight.

Другие вопросы по тегам