有很多方法可以衡量 CPU 上下文切换开销。似乎没有太多资源来测量 GPU 上下文切换开销。CPU 上下文切换和 GPU 上下文切换非常不同。
GPU 调度基于 Warp 调度。要计算 GPU 上下文切换的开销,需要知道上下文切换的 Warp 时间和未经上下文切换的 Warp 时间,并进行相减得出开销。
我对如何测量带上下文切换时间的 Warp 时间感到困惑。是否有人有一些想法可以测量?
有很多方法可以衡量 CPU 上下文切换开销。似乎没有太多资源来测量 GPU 上下文切换开销。CPU 上下文切换和 GPU 上下文切换非常不同。
GPU 调度基于 Warp 调度。要计算 GPU 上下文切换的开销,需要知道上下文切换的 Warp 时间和未经上下文切换的 Warp 时间,并进行相减得出开销。
我对如何测量带上下文切换时间的 Warp 时间感到困惑。是否有人有一些想法可以测量?
我认为在GPU上谈论“上下文切换”的“开销”没有太多意义。
在CPU上,上下文切换是通过内核中的“调度程序”函数在软件中完成的。调度程序是普通代码,是一系列处理器必须运行的机器指令,而运行调度程序所花费的时间不是用于执行“有用”的工作。
另一方面,GPU在硬件上进行上下文切换,没有调度程序,并且速度足够快,以至于当一个任务遇到管道停滞时,可以引入另一个任务来利用否则空闲的管道阶段。这被称为“隐藏延迟”-一个任务的延迟被其他任务的进展所隐藏。实际上,上下文切换允许在给定时间内完成更多的“有用”工作。
有关更多信息,请参见我在SuperUser上针对相关问题写的此答案。