是否可以在不阻塞主机的情况下同步两个CUDA流?我知道有cudaStreamWaitEvent
,这是非阻塞的。但是如何使用cudaEventCreate
创建和销毁事件呢?
和cudaEventDestroy
。
cudaEventDestroy
的{{3}}说:
如果事件已被记录但尚未完成时 调用cudaEventDestroy()后,函数将立即返回 与事件关联的资源将自动释放一次 设备已完成活动。
我在这里不明白的是录制的事件和已完成的事件之间的区别。这似乎意味着这一点 如果事件尚未记录,则呼叫将被阻止。
任何可以对此有所了解的人?
答案 0 :(得分:4)
使用awk '!/^(Subtotal Group [0-9]+|Grand total)[[:blank:]]*$/' file
sed -E '/^(Subtotal Group [0-9]+|Grand total)[[:blank:]]*$/d' file
,您走在正确的轨道上。创建事件确实会带来一些成本,但是可以在应用程序启动期间创建它们,以防止在GPU例程期间创建时间成本高昂。
当您将事件放入流中时,记录事件。在事件完成之前放入流中的所有活动之后已完成。 录制该事件基本上会在您的信息流中添加一个标记,这使得cudaStreamWaitEvent
能够阻止信息流前进,直到事件完成。