c - CUDA中流的非阻塞同步



是否可以同步两个CUDA流而不阻塞主机?我知道这是cudaStreamWaitEvent,它是非阻塞的。但是使用cudaEventCreate来创建和销毁事件呢和cudaEventDestroy .

cudaEventDestroy的文档说:

如事件已记录但尚未完成时调用cudaEventDestroy()时,该函数将立即返回事件关联的资源将自动释放一次设备已完成事件。

这里我不明白的是记录的事件和完成的事件之间的区别是什么。这似乎也暗示了如果事件尚未记录,则呼叫阻塞。

有谁能解释一下吗?

使用cudaStreamWaitEvent是正确的。创建事件确实会带来一些成本,但可以在应用程序启动期间创建事件,以防止在GPU例程期间创建时间花费过多。

当您将事件放入流中时,事件被记录。在事件完成之前放入流中的所有活动之后,完成记录事件基本上是在你的流中放置一个标记,这是使cudaStreamWaitEvent能够停止流上的前进进程,直到事件完成

相关内容

  • 没有找到相关文章

最新更新