cuda_abort_with_error
__device__ void cuda_abort_with_error(device_error_code_t err, const char* pDescr, std::size_t cbDescr); //1
template <std::size_t N>
__device__ void cuda_abort_with_error(device_error_code_t err, const char (&pDescr)[N]); //2
__device__ void cuda_abort_with_error(device_error_code_t err, std::nullptr_t); //3
__device__ void cuda_abort_with_error(device_error_code_t err); //4
Устанавливает код ошибки с опциональным связанным текстовым описанием в глобальной памяти устройства, на котором производится вызов, и досрочно завершает выполнения ядра (kernel) CUDA.
- Текстовое описание задается динамическим байтовым C-массивом и его размером.
- Текстовое описание задается статически заданной строкой или байтовым массивом символов.
- Вызов, задающий код ошибки без описания.
- Вызов, задающий код ошибки без описания.
N | Размер массива-строки для перегрузки 2. |
err | Код завершения ядра CUDA. | |
[in] | pDescr | Текстовое описание, ассоциируемое с ошибкой err. |
cbDescr | Байтовая длина строки pDescr. |
cuda_error_info | Класс состояния, которое переносит сведения об ошибке, сгенерированной на устройстве CUDA с помощью cuda_abort_with_error. |
cuda_kernel_call | Если необходимо, создает и инициализирует и инициализирует разделяемое состояние для ядер CUDA, после чего производит вызов указанного ядра. |
cuda_stream_synchronize | Синхронизирует выполнение задач, связанных с указанным потоком CUDA stream, и производит дополнительную общую постобработку результатов. |
Установка ошибки на устройстве CUDA имеет эффект для всего устройства - всех ядер, всех потоков stream и всех потоков центрального процессора.
При вызове на хосте функции cuda_stream_synchronize при установленном на текущем устройстве CUDA ненулевом коде ошибки производится сброс устройства и генерация исключения cuda_user_exception.
Для использования функций cuda_abort_with_error и cuda_stream_synchronize вызов ядра CUDA должен быть выполнен с помощью cuda_kernel_call.
Если при одновременном выполнении другого ядра kernel на том же устройстве CUDA производится вызов функции cuda_abort_with_error (в момент времени после оригинального вызова cuda_abort_with_error и до вызова cuda_stream_synchronize) , его эффект игнорируется.