Cuda 为什么nvprof和nvidia smi在电源方面报告了不同的结果?
我使用nvprof和nvidia smi分别监控GPU功耗,但观察到不同的结果,总结如下表所示Cuda 为什么nvprof和nvidia smi在电源方面报告了不同的结果?,cuda,profiling,Cuda,Profiling,我使用nvprof和nvidia smi分别监控GPU功耗,但观察到不同的结果,总结如下表所示 ---------------------------------------------------------------- gpu | busy | idle model | nvprof[Watt] smi[Watt] | nvprof[Watt] smi[Watt] -------
----------------------------------------------------------------
gpu | busy | idle
model | nvprof[Watt] smi[Watt] | nvprof[Watt] smi[Watt]
----------------------------------------------------------------
M2090 | ~151 ~151 | ~100 ~75
K20 | ~105 ~102 | ~63 ~43
----------------------------------------------------------------
注0:“忙”表示我的代码正在受监控的GPU上运行
注1:nvprof报告所有设备的电源。因此,我使用nvprof为特定GPU获取“空闲”电源的方法就是让代码在另一个GPU上运行
注2:nvidia smi报告了两个不同的功率量,但我关注的是“功率消耗”
注3:cuda版本:5.5
所以我的问题是:为什么nvidia smi报告的功率通常小于nvprof,为什么在监测空闲功率时,这种差异会变得更大?最后,我应该更信任哪一种效用
另外,为了确保这两个实用程序测量的功率是指输入电功率(p=I*U)而不是输出热功率,对吗
谢谢你的建议
更新 @njuffa和@Talonmes的猜测很有道理。因此,为了进行功耗分析,我对smi进行了更多的探索。然而,结果对我来说毫无意义 补充说明:
忽略p-状态。他们把你弄糊涂了 nvprof(单独)使用的GPU数量远远超过nvidia smi(单独)。因此,运行nvprof时消耗的“空闲”功率高于仅运行nvidia smi时消耗的“空闲”功率。nvprof启动GPU上的许多引擎,而nvidia smi只启动一些寄存器和一些I2C电路 GPU有许多p状态,真正的空闲p状态为P8或更低(即更大) 仅仅运行nvidia smi可以(经常会)将GPU的p状态从“真正空闲”的p状态提升到更高的p状态,如P0。这并没有告诉你: -p状态升高发生的时间(nvidia smi的采样周期过粗) -实际消耗了多少电能。是的,p-state是一个指示器,但不会以校准的方式告诉您任何事情。GPU在P0时可能或多或少处于“空闲”状态(例如,将GPU置于持久模式) 这两个测量值之间的差异已经得到了解释。图表和附加更新没有任何用处,只是让你感到困惑
如果您想测量功率,请使用任一方法。很明显,它们在GPU“忙”的情况下是非常相关的,而在“空闲”的情况下它们看起来是不同的,这一事实仅仅意味着你在这两种情况下都对“空闲”做出了假设,这根本不是真的。忽略p状态。他们把你弄糊涂了 nvprof(单独)使用的GPU数量远远超过nvidia smi(单独)。因此,运行nvprof时消耗的“空闲”功率高于仅运行nvidia smi时消耗的“空闲”功率。nvprof启动GPU上的许多引擎,而nvidia smi只启动一些寄存器和一些I2C电路 GPU有许多p状态,真正的空闲p状态为P8或更低(即更大) 仅仅运行nvidia smi可以(经常会)将GPU的p状态从“真正空闲”的p状态提升到更高的p状态,如P0。这并没有告诉你: -p状态升高发生的时间(nvidia smi的采样周期过粗) -实际消耗了多少电能。是的,p-state是一个指示器,但不会以校准的方式告诉您任何事情。GPU在P0时可能或多或少处于“空闲”状态(例如,将GPU置于持久模式) 这两个测量值之间的差异已经得到了解释。图表和附加更新没有任何用处,只是让你感到困惑
如果您想测量功率,请使用任一方法。很明显,它们在GPU“忙碌”的情况下是非常相关的,而在“空闲”的情况下,它们看起来是不同的,这一事实仅仅意味着你对这两种情况下的“空闲”都做出了假设,而这根本不是真的。@Robert Crovella。为了以防万一,我把那个部分去掉了。谢谢你提醒我。繁忙测量的区别看起来像测量噪音。在“空闲”测量的情况下,当nvprof处于活动状态时,电源状态可能无法降至较低的状态,换句话说,nvprof更具侵入性。这只是一个有效的假设,可能是也可能不是可验证的。我同意诺伯特的假设
nvprof
可能在使用硬件信息API之前将GPU拉到比nvidia smi更高的p状态。顺便说一句,我需要分析我的程序的功耗。请您解释一下如何使用nvprof
和nvidia smi
@muradin执行此操作,本手册非常清楚地解释了命令行选项。简言之,(1)nvprof—系统评测(2)nvidia smi—查询—id=${DEVICE_id}