spf*_*rnd 2 c synchronization cuda gpu cuda-events
是否可以在不阻塞主机的情况下同步两个CUDA流?我知道有cudaStreamWaitEvent
,它是非阻塞的。但是使用cudaEventCreate
和创建和破坏事件呢cudaEventDestroy
?
该文档的cudaEventDestroy
说:
如果调用cudaEventDestroy()时已记录事件但尚未完成事件,则该函数将立即返回,并且一旦设备完成事件,与事件关联的资源将自动释放。
我不明白的是,已记录事件和已完成事件之间有什么区别。同样,这似乎意味着如果尚未记录该事件,则呼叫正在阻塞。
任何人都可以对此有所了解吗?
小智 5
使用,您将走在正确的轨道上cudaStreamWaitEvent
。创建事件确实会带来一定的成本,但是可以在应用程序启动期间创建事件,以防止在GPU例程期间创建时间过长。
当您将事件放入流中时,将记录一个事件。它完成的是被放入流的情况下完成之前所有的活动后。记录事件基本上会在您的流中添加一个标记,这可以使cudaStreamWaitEvent
流停止前进,直到事件完成为止。
归档时间: |
|
查看次数: |
755 次 |
最近记录: |