是否可以从设备端代码触发 CUDA 事件?
Can a CUDA event be fired from device-side code?
有什么方法可以从 CUDA 中的设备内核触发事件(出于基准测试目的,类似于 CPU 代码中的 cudaEvents)?
例如假设我想测量从内核启动到第一个开始计算的线程的时间以及从最后一个离开计算的线程到 CPU return.[=10= 的时间]
我可以这样做吗?
设备运行时 API(与动态并行一起使用)确实有 limited stream and events support,但不支持事件计时。
所以,不,你不能那样做。
一个丑陋的解决方法是写入某个 managed-memory 位置,然后让 host-side 线程轮询它并在值更改时触发事件。
有什么方法可以从 CUDA 中的设备内核触发事件(出于基准测试目的,类似于 CPU 代码中的 cudaEvents)?
例如假设我想测量从内核启动到第一个开始计算的线程的时间以及从最后一个离开计算的线程到 CPU return.[=10= 的时间]
我可以这样做吗?
设备运行时 API(与动态并行一起使用)确实有 limited stream and events support,但不支持事件计时。
所以,不,你不能那样做。
一个丑陋的解决方法是写入某个 managed-memory 位置,然后让 host-side 线程轮询它并在值更改时触发事件。