cuda_kernel_call
template <class F, class...Args>
void cuda_kernel_call(F func, unsigned cBlocks, unsigned cThreadsPerBlock, std::size_t cbSharedMemory, cudaStream_t stream, Args&&...args);
Если необходимо, создает и инициализирует и инициализирует разделяемое состояние для ядер CUDA, после чего производит вызов указанного ядра.
- Параметры шаблона
F Тип С функции, реализующей ядро со спецификатором __global__, которому делегируется вызов. Args Типы аргументов args, которые передаются вызываемому ядру CUDA. - Параметры
func С функция, заданная со спецификатором __global__, которой делегируется вызов. cBlocks Число блоков CUDA, которые реализуют выполнение ядра func. cThreadsPerBlock Число графических потоков в одном блоке CUDA, выполняющих ядро func. cbSharedMemory Объем используемой ядром func разделяемой памяти. stream Поток, используемый для вызова ядра func. args Набор аргументов, которые передаются ядру func при его вызове. Типы всех аргументов должны удовлетворять требованиям StandardLayoutType, иначе корректное поведение функции cuda_kernel_call и ядра не гарантируется. При вызове производится их автоматическое копирование/перемещение в глобальную память текущего устройства CUDA. - См. также
cuda_error_info Класс состояния, которое переносит сведения об ошибке, сгенерированной на устройстве CUDA с помощью cuda_abort_with_error. cuda_abort_with_error Устанавливает код ошибки с опциональным связанным текстовым описанием в глобальной памяти устройства, на котором производится вызов, и досрочно завершает выполнения ядра (kernel) 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) , его эффект игнорируется.