AMD GPU(Radeon Instinct MI25 加速器)的功率限制为 110W,但应该能够达到 300W

AMD GPU(Radeon Instinct MI25 加速器)的功率限制为 110W,但应该能够达到 300W

我似乎无法将 AMD GPU 的功率限制提高到 110W 以上,甚至无法接近 300W 的 TDP 额定值:

ghoti@fish:~$ cat /sys/class/drm/card1/device/hwmon/hwmon2/power1_cap
110000000
ghoti@fish:~$ echo 120000000 | sudo tee /sys/class/drm/card1/device/hwmon/hwmon2/power1_cap
[sudo] password for ghoti: 
120000000
tee: /sys/class/drm/card1/device/hwmon/hwmon2/power1_cap: Invalid argument
ghoti@fish:~$ 

类似的工具rocm-smi使用相同的 sysfs 接口并且以相同的方式失败。

我怎样才能从这张卡上获得超过 110W 的功率呢?应该能达到 300W

答案1

(我找到了自己的解决方案,如果这是不礼貌的,我很抱歉。我只是不想让其他人遭受这种痛苦,而且我讨厌人们扔掉完好的硅片的想法。)

问题

出于某种原因,此卡上的 VBIOS 参数“TDPODLimit”(热设计功率超速限制)设置为 0%。也许此卡的原始用户(主要是大型云公司)从 AMD 获得了可以解决此问题的自定义驱动程序?

解决方案

这可能很危险。请自行承担风险。

我修补了内核驱动程序,假装 TDPODLimit 为 75%,并忽略 BIOS 中的最大 OverDrive 参数。这类似于AMD 的 WattMan在 Windows 上显然如此。请注意此政策适用于您系统中的所有 AMD GPU,而不仅仅是 Radeon Instinct。注意不要将显卡的功率限制设置得太高而烧坏显卡。请注意,此补丁仅影响您可以设置的最大功率限制可选地在卡上设置。在启动时,卡将始终以其预定义的正常限制(在本例中为 110W)启动。

还请注意,“TDP”可能与 OverDrive“功率限制”不同。功率限制可能仅适用于芯片功率,但 TDP 还包括电压调节器和其他也会耗散功率的组件。为了安全起见,如果您的显卡的额定 TDP 为 300W,请将功率限制设置为远低于 300W。(感谢 Tim Roberts 提出这个问题!)。

另外我认为你可能需要amdgpu.ppfeaturemask=0xffffffff补充内核命令行参数(就像GRUB_CMDLINE_LINUX中的行一样/etc/default/grub)。

这是我应用的补丁:

--- drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c    2022-10-01 00:00:00.000000000 -0100
+++ drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c    2022-10-01 00:00:00.000000000 -0100
@@ -922,21 +922,22 @@
        if (hwmgr->hwmgr_func->set_power_limit == NULL) {
                pr_info_ratelimited("%s was not implemented.\n", __func__);
                return -EINVAL;
        }
 
        if (limit == 0)
                limit = hwmgr->default_power_limit;
 
        max_power_limit = hwmgr->default_power_limit;
        if (hwmgr->od_enabled) {
-               max_power_limit *= (100 + hwmgr->platform_descriptor.TDPODLimit);
+               /* max_power_limit *= (100 + hwmgr->platform_descriptor.TDPODLimit); */
+               max_power_limit *= (100 + 75);
                max_power_limit /= 100;
        }
 
        if (limit > max_power_limit)
                return -EINVAL;
 
        hwmgr->hwmgr_func->set_power_limit(hwmgr, limit);
        hwmgr->power_limit = limit;
        return 0;
 }

结果:

ghoti@fish:~$ echo 120000000 | sudo tee /sys/class/drm/card1/device/hwmon/hwmon2/power1_cap
[sudo] password for ghoti: 
120000000
ghoti@fish:~$ cat /sys/class/drm/card1/device/hwmon/hwmon2/power1_cap
120000000

是不是太热了?

在阅读以下警告之前,请勿更换导热膏如果显卡已经使用了 2-3 年,你可能需要使用一些优质的导热膏来更换它非导电粘贴。要特别小心,不要触碰闪亮的硅中介层可见的碎片似乎就停留在上面。你会不可逆转的损害你的人体模型如果您触摸中介层,则可能会损坏芯片。不要试图刮掉中介层上干燥的导热膏残留物,因为这可能会损坏它。基本上不要做任何可能划伤它的事情。

相关内容