我似乎无法将 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 年,你可能需要使用一些优质的导热膏来更换它非导电粘贴。要特别小心,不要触碰闪亮的硅中介层可见的碎片似乎就停留在上面。你会不可逆转的损害你的人体模型如果您触摸中介层,则可能会损坏芯片。不要试图刮掉中介层上干燥的导热膏残留物,因为这可能会损坏它。基本上不要做任何可能划伤它的事情。