如何取消设置 CUDA 事件?
How can I unset a CUDA event?
我在主机上有一个处理循环,我在其中记录 GPU 流中的事件。然后另一个流等待该事件(等待事件的状态 "set" 或 "true")。此函数 (cudaStreamWaitEvent) 是否会取消设置此事件(因此,将其切换为 "unset" 或 "false")?如果没有,我可以使用什么 CUDA 函数来取消设置此事件?
这听起来很像 XY question。您最好在更高的层次上描述您正在尝试完成什么,或者您面临或认为您面临的问题。
cudaStreamWaitEvent
没有 "unset" 事件。
当在流中遇到事件时,cudaStreamWaitEvent
将解除阻塞,任何后续对同一事件的 cudaStreamWaitEvent
调用将立即解除阻塞 (假设没有为该事件再次发布 cudaEventRecord
)。这种行为很容易用一个简单的代码示例来证明。
"unsets"一个cudaEvent是cudaEventRecord()
的函数。在该事件被记录后发出的任何 cudaStreamWaitEvent
呼叫将再次等待,直到再次遇到它。
您可能需要阅读 cudaEventRecord
and cudaStreamWaitEvent
的运行时 API 文档。请注意以下摘录:
cuda事件记录:
If cudaEventRecord() has previously been called on event, then this call will overwrite any existing state in event. Any subsequent calls which examine the status of event will only examine the completion of this most recent call to cudaEventRecord().
cudaStreamWaitEvent:
The stream stream
will wait only for the completion of the most recent host call to cudaEventRecord() on event
.
我在主机上有一个处理循环,我在其中记录 GPU 流中的事件。然后另一个流等待该事件(等待事件的状态 "set" 或 "true")。此函数 (cudaStreamWaitEvent) 是否会取消设置此事件(因此,将其切换为 "unset" 或 "false")?如果没有,我可以使用什么 CUDA 函数来取消设置此事件?
这听起来很像 XY question。您最好在更高的层次上描述您正在尝试完成什么,或者您面临或认为您面临的问题。
cudaStreamWaitEvent
没有 "unset" 事件。
当在流中遇到事件时,cudaStreamWaitEvent
将解除阻塞,任何后续对同一事件的 cudaStreamWaitEvent
调用将立即解除阻塞 (假设没有为该事件再次发布 cudaEventRecord
)。这种行为很容易用一个简单的代码示例来证明。
"unsets"一个cudaEvent是cudaEventRecord()
的函数。在该事件被记录后发出的任何 cudaStreamWaitEvent
呼叫将再次等待,直到再次遇到它。
您可能需要阅读 cudaEventRecord
and cudaStreamWaitEvent
的运行时 API 文档。请注意以下摘录:
cuda事件记录:
If cudaEventRecord() has previously been called on event, then this call will overwrite any existing state in event. Any subsequent calls which examine the status of event will only examine the completion of this most recent call to cudaEventRecord().
cudaStreamWaitEvent:
The stream
stream
will wait only for the completion of the most recent host call to cudaEventRecord() onevent
.