【发布时间】:2011-07-13 13:35:59
【问题描述】:
如果我理解正确,当您异步启动 CUDA 内核时,它可能会立即开始执行,或者它可能会等待先前的异步调用(传输、内核等)首先完成。 (我也知道内核在某些情况下可以同时运行,但我现在想忽略它)。
我怎样才能找出启动内核(“排队”)和它实际开始执行之间的时间。事实上,我真的只是想知道在我的程序的一次运行中所有启动的平均“排队时间”(通常在数万或数十万次内核启动中)。
我可以通过事件轻松计算每个内核的平均执行时间(~500us)。我试图模拟 - 每次启动内核时我都会删除 CLOCK() 的结果,这样我就可以确定每个内核启动时启动队列的时间。但是CLOCK() 没有足够高的精度(0.01 秒) - 有时似乎一次启动了多达 60 个内核,而实际上很多内核并没有。
【问题讨论】: