gpt4 book ai didi

c - 内核启动和执行之间的平均时间?

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:18 24 4
gpt4 key购买 nike

如果我理解正确,当您异步启动 CUDA 内核时,它可能会立即开始执行,或者它可能会等待先前的异步调用(传输、内核等)先完成。 (我也明白内核在某些情况下可以并发运行,但我现在想忽略它)。

如何找出启动内核(“排队”)和内核实际开始执行之间的时间。事实上,我真的只是想知道在我的程序单次运行中所有启动的平均“排队时间”(通常在数万或数十万次内核启动中。)

我可以很容易地计算出每个带有事件的内核的平均执行时间 (~500us)。我尝试模拟 - 每次启动内核时我都会删除 CLOCK() 的结果,这样我就可以确定每个内核启动时启动队列的长度。但是 CLOCK() 没有足够高的精度(0.01 秒)- 有时一次似乎启动了多达 60 个内核,当然实际上很多内核都没有启动。

最佳答案

使用 QueryPerformanceTimer 而不是 clock,它根据机器时钟周期进行计数。

Code for QueryPerformanceTimer

其次,分析工具 (Visual Profiler) 仅测量串行启动 [ see page 24 ] 和 [ see post number 3 ].

因此,最好的选择是 (1) 使用 QueryPerformanceTimer(或 Visual Profiler),以便准确测量单次启动,以及 (2) 使用 QueryPerformanceTimer获取多次启动的时序,观察时序结果是否表明发生了异步启动。

关于c - 内核启动和执行之间的平均时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com