Способ проверить ядро ​​было выполнено в CUDA - PullRequest
13 голосов
/ 21 июня 2011

Когда я вызываю ядро ​​с некорректно установленными параметрами (например, более 512 потоков на блок) или когда операции внутри него требуют больше, чем может предложить мое устройство (например, слишком много регистров), ядро ​​просто не выполняется. Хотя не существует исключения или возвращаемого значения, чтобы указать, что произошло.

Я хотел бы знать, есть ли способ проверить, было ли выполнено ядро ​​или нет.

Ответы [ 2 ]

22 голосов
/ 21 июня 2011

попробуйте

kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess) 
    printf("Error: %s\n", cudaGetErrorString(err));

Это должно дать вам подробную ошибку о том, что пошло не так.

РЕДАКТИРОВАТЬ: Вот более подробный ответ о том, как правильно проверить ошибки в CUDA:

1 голос
/ 20 апреля 2012

Также вы можете напечатать что-нибудь из ядра. Это может быть полезно для отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...