CUDA:是否有可能dynamic限制核心/线程/时钟频率的数量。 而一个进程在GPU上运行?

我在Ubuntu 10.04下运行了多个NVidia GTX 680,在相当炎热的环境下(机架散热困扰),有时候会超过95C。 当我检测到过热时,我能不知何故告诉司机减less使用的资源,例如

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

dynamic,而不重新启动的过程,让GPU可以冷却一点? 也许有像nvidia-sminvidia-settings可以让我这样做? 唯一的问题是:我需要在外部进行,而不修改实际的代码。

这个过程运行几天,并执行一些科学计算,没有任何graphics输出,所以如果matrix乘法会放慢一段时间,那就好了。

当您检测到过热时试图通过调节GPU来“修复”问题是一个坏主意
你正在信封的边缘进行操作,即使你开始在90度(在nVidia指定的“红线”之前8度)处开始遏制,也不能保证你不会超出你的冷却极限硬件的安全操作范围)。

在这条路上,只有苦难 – 计算错误,硬件损坏和大量维修/replace费用。


如果你足够早的话,调节GPU可以提供帮助。
您可以一直扼杀GPU,防止它们超过最高运行温度。 这样可以节省您的硬件,但是会使系统处于安全温度,从而使系统性能下降。
你可以用一个PIDalgorithm实现这个function,开始在80度左右扼制GPU,使它们保持在90度以下。

据推测,虽然你在这个计算农场上花了很多钱 – 扼杀它有点挫败目的(快速获得结果)。


解决你的散热问题是唯一真正的解决scheme
像评论者指出的那样,你的核心问题是冷却不良/不足。

我们不知道你为什么没有足够的冷却,解决scheme将取决于潜在的原因。

  • 如果气stream不畅,您可以添加鼓风机,将更多的空气通过系统。
  • 如果您的数据中心散热不良,则可以重新devise房间以确保进气温度较低。
  • 如果您的数据中心长时间过热,则可能需要增加更多的散热(无论您需要多less处理散热)。