cuda_stream_synchronize

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
void cuda_stream_synchronize(cudaStream_t stream);

Синхронизирует выполнение задач, связанных с указанным потоком CUDA stream, и производит дополнительную общую постобработку результатов.

Параметры
streamПоток CUDA, который необходимо синхронизировать с выполнением на CPU.
Возможные исключения
cuda_exceptionШаблон:Cuda exception brief
cuda_user_exceptionШаблон:Cuda user exception brief
См. также
cuda_kernel_callЕсли необходимо, создает и инициализирует и инициализирует разделяемое состояние для ядер CUDA, после чего производит вызов указанного ядра.
cuda_abort_with_errorУстанавливает код ошибки с опциональным связанным текстовым описанием в глобальной памяти устройства, на котором производится вызов, и досрочно завершает выполнения ядра (kernel) CUDA.

Функция предназначена для синхронизации одновременных вызовов ядер CUDA по указанным потокам. Ядра должны быть вызваны с помощью функции cuda_kernel_call, иначе эффект функции cuda_stream_synchronize не определен.

Пример
unsigned pVector[100];
auto pDeviceVector = make_cuda_unique_ptr<unsigned>(sizeof(pVector));
cuda_kernel_call(my_kernel, 10, 10, 0, stream, true, thread_id, pDeviceVector.get());
cuda_runtime_call(cudaMemcpyAsync, pVector, pDeviceVector.get(), sizeof(pVector), cudaMemcpyDeviceToHost, stream);
cuda_stream_synchronize(stream);