在库达定时连续事件

时间:2011-06-28 00:29:25

标签: events cuda timing

如果您有多个连续的CUDA事件(在单个流中),您想要计时(例如cudaMemcpy后跟内核启动,然后是另一个cudaMemcpy),那么仅安全/正确/准确地同步事件?例如:

cudaEventRecord(event1_start);
// do something
cudaEventRecord(event1_stop);

cudaEventRecord(event2_start);
// do something else
cudaEventRecord(event2_stop);

cudaEventSynchronize(event2_stop);
cudaEventElapsedTime(&time1, event1_start, event1_stop);
cudaEventElapsedTime(&time2, event2_start, event2_stop);

我的理解是这些事件和实际的cuda调用被放入FIFO队列中。然后CPU需要等到最后一个事件被记录下来才能记录所有的时间。这是对的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果它们都在同一个流或默认流中执行,它们将按顺序执行,所以我会说是,如果你只同步最后一个,那么其他应该完成。我不保证,因为我从未测试过它。我建议你用一个简单的情况来测试它,你同步这两个事件或只是最后一个,然后比较时间。