cuda_kernel_call
Версия от 16:00, 20 марта 2018; Андрей Чусов (обсуждение | вклад)
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_stream_synchronize Синхронизирует выполнение задач, связанных с указанным потоком CUDA stream, и производит дополнительную общую постобработку результатов. cuda_abort_with_error Устанавливает код ошибки с опциональным связанным текстовым описанием в глобальной памяти устройства, на котором производится вызов, и досрочно завершает выполнения ядра (kernel) CUDA.
Вызов
cuda_kernel_call(my_kernel, 10, 100, 0, cuda_stream().get(), x, y, z);
аналогичен вызову
my_kernel<<<10, 100, 0, cuda_stream.get()>>>(x, y, z);