Способ проверки ядра был выполнен в CUDA
Когда я вызываю ядро с неудовлетворенными параметрами (например, более 512 потоков на блок), или когда для операций внутри него требуется больше, чем мое устройство может предложить (например, слишком много регистров), ядро просто не выполняется. Нет никакого исключения или возвращаемого значения, чтобы указать, что произошло.
Я хотел бы знать, есть ли способ проверить, было ли ядро запущено или нет.
Ответы
Ответ 1
попробуйте это
kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess)
printf("Error: %s\n", cudaGetErrorString(err));
Это должно дать вам подробную ошибку о том, что пошло не так.
EDIT: Ниже приведен более подробный ответ о том, как правильно проверять ошибки в CUDA:
Ответ 2
Также вы можете печатать что-то из ядра. Это может быть полезно для отладки.