使用 nvidia-smi 获取权力的最佳策略是什么

Using nvidia-smi what is the best strategy to capture power

我正在使用 Tesla K20c 并使用 nvidia-smi 测量功率,因为​​我的应用程序是 运行。我的问题是功耗没有达到稳定状态,而是不断上升。例如,如果我的应用 运行s 进行 100 次迭代,功率达到 106W(4 秒),1000 次迭代 117 W(41 秒),10000 次迭代 122W(415 秒)等等略有增加每次。我正在写一些关于我应该记录哪个功率值的建议。在我的实验设置中,我有超过 400 个实验,每个实验都进行 10000 次迭代至少目前是不可行的。该应用程序是矩阵乘法,只需几毫秒即可在一次迭代中完成。增加迭代次数不会给结果带来任何价值,但会增加 运行 允许电源监控的时间。

您看到功耗随时间增加的原因是 GPU 在持续负载下升温。电子元件在温度升高时消耗更多功率,这主要是由于欧姆电阻的增加。此外,Tesla K20c 是主动冷却的 GPU:随着 GPU 升温,卡上的风扇旋转得更快,因此需要更多的功率。

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

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

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