跳转至

CUDA流

参考书目: CUDA编程基础与实践

作者: 樊哲勇

章节: 第11章 CUDA流

CUDA流

cuda流是由主机发出的在一个设备中执行的cuda操作,多个cuda流会并发或交错的进行,在没有指定cuda流的情况,所有cuda操作都在默认的空流进行的,非空流是在主机端产生和销毁的,可由cudaStream_t表示

cudaError_t cudaStreamCreate(cudaStream_t*);
cudaError_t cudaStreamDestory(cudaStream_t);

以下是构建,销毁一个CUDA流的例子

cudaStream_t stream_1;
cudaStreamCreate(&stream_1);
cudaStreamDestory(stream_1);

为了实现不同CUDA流之间的并发,主机在某个CUDA流发布一系列指令后,必须立刻获得程序控制权,不用等待CUDA在设备中执行完毕

检查一个CUDA流中的操作是否在设备中执行完毕

cudaError_t cudaStreamSynchronize(cudaStream_t stream);//强制阻塞主机,等待CUDA流完成
cudaError_t cudaStreamQuery(cudaStream_t stream);//只返回是否完成的表示