Способ проверки ядра был выполнен в CUDA

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

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

Ответ 1

попробуйте это

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

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

EDIT: Ниже приведен более подробный ответ о том, как правильно проверять ошибки в CUDA:

Ответ 2

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