CUDA中流的非阻塞同步?

时间:2016-08-08 10:24:13

标签: c cuda synchronization gpu cuda-events

是否可以在不阻塞主机的情况下同步两个CUDA流?我知道有cudaStreamWaitEvent,这是非阻塞的。但是如何使用cudaEventCreate创建和销毁事件呢? 和cudaEventDestroy

cudaEventDestroy的{​​{3}}说:

  

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

我在这里不明白的是录制的事件和已完成的事件之间的区别。这似乎意味着这一点 如果事件尚未记录,则呼叫将被阻止。

任何可以对此有所了解的人?

1 个答案:

答案 0 :(得分:4)

使用awk '!/^(Subtotal Group [0-9]+|Grand total)[[:blank:]]*$/' file sed -E '/^(Subtotal Group [0-9]+|Grand total)[[:blank:]]*$/d' file ,您走在正确的轨道上。创建事件确实会带来一些成本,但是可以在应用程序启动期间创建它们,以防止在GPU例程期间创建时间成本高昂。

当您将事件放入流中时,记录事件。在事件完成之前放入流中的所有活动之后已完成录制该事件基本上会在您的信息流中添加一个标记,这使得cudaStreamWaitEvent能够阻止信息流前进,直到事件完成