CUDA:当进程在 GPU 上运行时,是否可以动态限制核心/线程/时钟频率的数量?

CUDA:当进程在 GPU 上运行时,是否可以动态限制核心/线程/时钟频率的数量?

我在 Ubuntu 10.04 下运行多个 NVidia GTX 680,环境非常热(机架冷却有问题),有时温度会超过 95C。当我检测到过热时,我能否以某种方式告诉驱动程序减少使用的资源,例如

  • 线程数
  • 核心数
  • GPU时钟频率
  • 内存时钟频率
  • ..?

动态地,无需重新启动进程,以便 GPU 可以稍微冷却下来?也许有类似的东西nvidia-smi可以nvidia-settings让我这样做?唯一的问题是:我需要在外部执行此操作,而无需修改实际代码。

该过程运行数天并执行一些科学计算而没有任何图形输出,因此如果矩阵乘法在一段时间内减慢速度就没问题。

答案1

当你检测到过热时,试图通过限制 GPU 来“解决”问题是一种馊主意
您正在信封的不规则边缘上操作,即使您开始以 90 度(nVidia 指定的“红线”前 8 度)的速度减速,也不能保证您不会超出冷却的限制(以及硬件的安全操作范围)。

这条路只会带来痛苦——计算错误、硬件损坏以及高昂的维修/更换费用。


如果您足够早地限制 GPU,则会有所帮助。
您可以一直限制 GPU 的运行,防止它们超过其最高工作温度。这将节省您的硬件,但会降低性能以保持系统处于安全温度。
您可以使用PID 算法它开始将 GPU 的温度限制在 80 度左右,以将其保持在 90 度或以下。

虽然您可能在这个计算场上花了很多钱,但限制它有点违背目的(快速获得结果)。


解决冷却问题是唯一的真正的解决方案
正如评论者指出的那样,您的核心问题是冷却不良/不足。

我们不知道为什么您的冷却系统不够完善,解决方案取决于根本原因。

  • 如果机箱气流不畅,您可以添加鼓风机以使更多空气通过系统。
  • 如果您的数据中心的冷却气流不佳,您可以重新设计您的房间以确保进气更凉爽。
  • 如果您的数据中心长期过热,您可能需要添加更多的冷却设备(无论如何都需要处理您的热负荷)。

相关内容