У меня есть код, который использует разделяемую память:
__global__ void PDH_kernel(/*arguments*/) {
extern __shared__ atom currentBlocks[];
int thisThread = blockDim.x * blockIdx.x + threadIdx.x;
double dist;
int histogramBin;
int next;
if (thisThread < PDH_acnt) {
currentBlocks[threadIdx.x] = aList[thisThread];
for (int i = blockIdx.x + 1; i < gridDim.x; i++) {
next = thisThread + (i * blockDim.x);
currentBlocks[threadIdx.x + blockDim.x] = aList[next];
__syncthreads();
Когда я иду отлаживать его в Visual Studio (сообщество, 2019, версия 16.1.1) с помощью программы отладки CUDA следующего поколения (в разделе «Расширения»> «Nsight»> «Начать отладку CUDA (следующего поколения)), я m не может видеть содержимое массива currentBlocks
выше; вместо этого отладчик показывает адрес массива, а затем { ??? }
. Я использую конфигурацию Debug x64 для компиляции программы.
Другая информация, которая может иметь отношение к делу:
- CUDA версия 10.1
- NVIDIA NsightVisual Studio Edition 2019.2.0.19109
Есть ли какой-либо другой флаг, который мне нужно добавить, чтобы правильно просмотреть этот массив?