国产经典剧情一曲二曲
非默认的 CUDA 流(也称为非空流)是在主机端产生与销毁的。一个 CUDA 流由类型为 cudaStream_t 的变量表示,它可由如下 CUDA 运行时 API 函数产生:
cudaError_t cudaStreamCreate(cudaStream_t*); cudaError_t cudaStreamDestroy(cudaStream_t);
cudaStream_t stream_1; cudaStreamCreate(&stream_1); // 注意要传流的地址 cudaStreamDestroy(stream_1);
为了检查一个 CUDA 流中的所有操作是否都在设备中执行完毕,CUDA 运行时 API 提 供了如下两个函数:
cudaError_t cudaStreamSynchronize(cudaStream_t stream); cudaError_t cudaStreamQuery(cudaStream_t stream);
函数 cudaStreamSynchronize 会强制阻塞主机,直到 CUDA 流 stream 中的所有操作都执行完毕。函数 cudaStreamQuery 不会阻塞主机,只是检查 CUDA 流 stream 中的所有操作是否都执行完毕。若是,返回 cudaSuccess,否则返回 cudaErrorNotReady。