【问题标题】:Using nvidia-smi what is the best strategy to capture power使用 nvidia-smi 获取权力的最佳策略是什么
【发布时间】:2015-12-02 10:06:33
【问题描述】:

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

【问题讨论】:

  • 我之前在 K20c 上做过这样的实验,大约 10 分钟,基于此我想你会发现大约 5 到 6 分钟后达到稳定状态,之后只有噪音+/- 2W 的振荡。这些卡有一个相当大的金属背板,因此带有内存的整个 GPU 需要一些时间来加热,并且随着温度的升高,电子设备的功耗会增加。此外,该卡是主动冷却的,并且较热的卡意味着风扇会旋转得更快,如果有记忆的话,这会产生大约 5W 的差异。您打算如何使用测量结果?
  • 感谢您的洞察力。知道这一点很有帮助。我正在为不同矩阵大小和另一个参数(即元素数量)建模 GPU 性能和功耗。我有大约 20 个矩阵大小需要考虑,每个矩阵大小大约有 20 个不同数量的元素。
  • 如果你只需要这些版本的相对功耗,每个版本运行30秒还不够,然后让GPU空闲30秒让它冷却(大致平衡每次运行的起始条件)?您的 400 次实验每次都需要一分钟,并且可以在一夜之间完成。请记住,GPU 上的功率传感器并非旨在提供高精度测量,因此您需要假设总测量噪声可能为 5%。您可能希望对同一类型的多个 GPU 的测量值进行平均,以考虑制造公差
  • 我觉得这个策略不错。谢谢。

标签: cuda gpu nvidia nvml


【解决方案1】:

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

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

您的测量似乎旨在确定使用 400 种不同的代码变体运行时的相对功耗。实现稳态功耗似乎并不重要,只是测试每个变体的条件与实际可实现的条件相同。请记住,GPU 的功率传感器并非旨在提供高精度测量,因此为了进行比较,您需要假设噪声水平约为 5%。为了进行准确的比较,您甚至可能需要对多个相同类型 GPU 的测量值进行平均,因为制造公差可能会导致多个“相同”GPU 之间的功耗差异。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 2011-12-19
    • 2021-12-27
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多