有很多方法可以衡量 CPU 上下文切换开销。似乎几乎没有资源来衡量 GPU 上下文切换开销。 CPU 上下文切换和 GPU 是完全不同的。
GPU调度基于warp调度。为了计算GPU上下文切换的开销,我需要知道有上下文切换的warp和没有上下文切换的warp的时间,并做减法得到开销。
我对如何通过上下文切换测量扭曲时间感到困惑?有没有人有一些想法可以衡量?
最佳答案
我认为谈论 GPU 上上下文切换的“开销”真的没有意义。
在 CPU 上,上下文切换是在软件中通过内核中称为“调度程序”的函数完成的。调度程序是普通代码,是处理器必须运行的一系列机器指令,运行调度程序所花费的时间不是花在“有用”工作上的时间。
另一方面,GPU 在没有调度程序的情况下在硬件中进行上下文切换,而且速度足够快,以至于当一个任务遇到流水线停顿时,可以引入另一个任务来利用否则会空闲的流水线阶段。这称为“延迟隐藏”——一项任务的延迟被其他任务的进度隐藏。上下文切换实际上允许在给定的时间范围内完成更多有用的工作。
如需更多信息,请参阅 this answer我写了一个关于 super 用户的相关问题。
关于cuda - 测量GPU中上下文切换的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254975/