Профилировщик NSight аварийно завершает работу приложения

Я пытаюсь профилировать следующее ядро ​​с помощью NSight Visual Studio Profiler:

__global__ void cuMultiplyMatricesStandard(float* A, float* B, float* C, int matrixSize)
{
int gridsPerMatrixX = (matrixSize + (blockDim.x*gridDim.x) - 1)/(blockDim.x*gridDim.x);
int gridsPerMatrixY = (matrixSize + (blockDim.y*gridDim.y) - 1)/(blockDim.y*gridDim.y);
for (int i = 0; i < (gridsPerMatrixX * gridsPerMatrixY); i++)
{
int row = (blockIdx.y * blockDim.y + threadIdx.y) + (i/gridsPerMatrixX)*gridDim.y*blockDim.y;
int col = (blockIdx.x * blockDim.x + threadIdx.x) + (i%gridsPerMatrixX)*gridDim.x*blockDim.x;
if (row >= matrixSize || col >= matrixSize) continue;
float Clocal = 0;
for (int k = 0; k < matrixSize; k++)
Clocal += A[row*matrixSize + k]*B[k*matrixSize + col];
C[row*matrixSize + col] = Clocal;
}
}

Код вызова находится под http://pastebin.com/kB7c7s9W если это имеет значение.

Когда я запускаю приложение в отладчике NSight без профилирования, оно работает нормально («P» означает «pass», «F» означает «fail»):

P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
Press any key to continue . . .

Однако, когда я пытаюсь профилировать приложение CUDA из опции «NSIGHT -> Start Performance Analysis» (используя любую конфигурацию эксперимента), происходит сбой:

Nsight: Profiling CUDA Kernel cuMultiplyMatricesStandard on device [0] GeForce GTX 760
Nsight:     Saving Pinned Host Memory     0 allocations    0.0 MB
Nsight:     Saving Device Memory          3 allocations    0.0 MB
Nsight:                           Dependency Analysis ( 1/ 9):.
Nsight:                                 Memory Global ( 2/ 9):
Nsight: Experiments complete, total replays needed:  1
CUDA ERROR IN LINE 83 OF FILE C:/Users/Maciej/Documents/Visual Studio 2012/Projects/CUDA-PR/CUDA-PR/Main.cu: unknown error (30)
CUDA ERROR IN LINE 86 OF FILE C:/Users/Maciej/Documents/Visual Studio 2012/Projects/CUDA-PR/CUDA-PR/Main.cu: unknown error (30)
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
Press any key to continue . . .

Строка 83 — это вызов ядра, строка 86 — следующий cudaMemcpy. Затем профилировщик жалуется, что не регистрирует какие-либо запуски ядра, а я не получаю данных Что случилось?

0

Решение

В Nsight 3.1 была ошибка в эксперименте по анализу зависимостей профилировщика CUDA, что привело к сбою некоторых ядер при следующем воспроизведении. Обновление до более поздней версии Nsight устраняет проблему.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]