cuda_abort_with_error

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
__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.

  1. Текстовое описание задается динамическим байтовым C-массивом и его размером.
  2. Текстовое описание задается статически заданной строкой или байтовым массивом символов.
  3. Вызов, задающий код ошибки без описания.
  4. Вызов, задающий код ошибки без описания.
Параметры шаблона
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) , его эффект игнорируется.