CUDA stream和event的同步机制?cudaStreamSynchronize?CUDA stream和event的同步机制?cudaStreamSynchronize?
CUDA stream 是设备上的操作队列,同一 stream 内 kernel、memcpy 顺序执行,不同 stream 可并发。Event 是时间点标记,可 cudaEventRecord(event, stream) 在 stream 某处插入,再 cudaStreamWaitEvent(stream2, event) 让另一 stream 等待该点。
cudaStreamSynchronize(stream) 阻塞当前 host 线程直到该 stream 上所有已提交操作完成。与 cudaDeviceSynchronize() 区别:后者等所有 stream,前者只等指定 stream。用于「host 需要该 stream 结果后再继续」的场景。
用 event 做 stream 间依赖(如 stream B 等 stream A 的 kernel 完成);用 stream 做 kernel 与 memcpy 重叠;需要 host 取结果时对该 stream 做 cudaStreamSynchronize。
| 返回模块 | 返回总览 |