2015-09-06 125 views
0

我正在使用Tesla K20c和nvidia-smi测量功率,因为​​我的应用程序正在运行。我的问题是耗电量没有达到稳定状态,而是持续上升。例如,如果我的应用程序运行100次迭代,则功率达到106W(4秒),1000次迭代117W(41秒),10000次迭代122W(415秒),每次都略微增加。我正在写一些关于我应该记录哪种功率值的建议。在我的实验设置中,我进行了400多次实验,并且每次进行10000次迭代至少目前是不可行的。该应用程序是矩阵乘法,只需要几个毫秒就可以执行一次迭代。增加迭代次数不会给结果带来任何价值,但会增加运行时间,从而实现功率监控。使用nvidia-smi什么是捕获能量的最佳策略

+1

我之前已经在K20c上进行了这样的实验,时间超过10分钟,并且基于此我认为您会发现在约5至6分钟之后达到稳定状态,之后仅存在+/-的噪声振荡2W。这些卡有一个非常大的金属背板,因此带有存储器的整个GPU需要一些时间来加热,电子设备的功耗随着温度的升高而增加。此外,卡被积极冷却,卡温度越高意味着风扇旋转速度越快,如果使用内存,则会产生大约5W的差异。你打算如何使用你的测量结果? – njuffa

+0

感谢您的洞察力。这是非常有用的知道。我正在为不同的矩阵大小和另一个参数即元素数量对GPU性能和功耗进行建模。我有大约20个矩阵大小需要考虑,每个矩阵大小大约有20个不同数量的元素。 – Tania

+0

如果您只需要这些版本的*相对功耗,是否不足以在30秒内运行每个版本,然后让GPU闲置30秒以使其冷却(以大致均衡每次运行的启动条件)?您的400个实验每个需要一分钟,并可能在一夜之间完成。请记住,GPU上的功率传感器并非旨在提供高精度测量,因此您应该假设总测量噪声可能为5%。您可能希望平均来自同一类型的多个GPU的测量结果,以考虑制造公差 – njuffa

回答

3

随着时间的推移,功耗增加的原因是GPU在持续负载下升温。电子元件在升高的温度下吸收更多的功率主要是由于欧姆电阻的增加。另外,特斯拉K20c是一种主动散热的GPU:随着GPU的升温,卡上的风扇旋转更快,因此需要更多功率。

我已经在K20c上进行了与您非常相似的实验,时间长达10分钟左右。我发现在5到6分钟之后功率平稳,并且之后只有+/- 2W的噪声水平振荡。这可能是由于风扇温度控制反馈回路中存在滞后现象,或者是由于每个内核结束时GPU未完全利用造成的短期波动。由于风扇速度差异造成的功率消耗差异大约为5 W. GPU达到稳定状态需要相当长的时间的原因是整个组件的热容量相当大,包括一个坚固的金属背板。

您的测量似乎针对于确定相对与400个不同的代码变体运行时的功耗。稳态功耗的实现似乎并不关键,只是每种变体的测试条件与实际情况相同。请记住,GPU的功率传感器并非设计用于提供高精度测量,因此出于比较目的,您应该假定噪声级别为5%。为了进行精确比较,您甚至可能希望平均来自同一类型的多个GPU的测量结果,因为制造公差可能会导致多个“相同”GPU之间的功耗变化。

因此,我会建议以下协议:运行每个变种30秒,测量功耗接近该间隔结束。然后在运行下一个内核之前让GPU闲置30秒让它冷却下来。这应该为每个变体提供大致相同的开始条件。如果您发现温度保持较长时间,您可能需要延长建议的空闲时间。 nvidia-smi报告的温度数据可以引导您在这里。通过这个过程,您应该能够在一夜之间完成400个变体的测试。

相关问题