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.
    [out]cbDescrБайтовая длина строки pDescr.
    См. также
    Шаблон:Relation diagram usageДиаграмма отношений

Установка ошибки на устройстве CUDA имеет эффект для всего устройства - всех ядер, всех потоков stream и всех потоков центрального процессора. При вызове на хосте функции cuda_stream_synchronize при установленном на текущем устройстве CUDA ненулевом коде ошибки производится сброс устройства и генерация исключения cuda_user_exception. Если при одновременном выполнении другого ядра kernel на том же устройстве CUDA производится вызов функции cuda_abort_with_error (в момент времени после оригинального вызова cuda_abort_with_error и до вызова cuda_stream_synchronize) , его эффект игнорируется.