Ubuntu 18.04 LTS에서 Ubuntu 20.04 LTS로 업그레이드한 후 더 이상 Sapphire Radeon RX 580 Pulse 또는 Sapphire Radeon RX 580 Nitro+ SE의 클럭 및 전압 설정을 조정할 수 없었습니다. 팬 및 전력 제한을 변경해도 문제가 없습니다. amdgpu 드라이버 20.30-1109583을 사용하고 있습니다. amdgpu 드라이버 20.20을 사용해 보았으나 동일한 문제가 발생했습니다.
Bash 스크립트, Wattman_GTK, amdgpu-clocks를 사용하여 수동으로 시도하고 CoreCtrl(충돌)을 사용하려고 시도했습니다.
다음을 포함하도록 /etc/default/grub을 변경했습니다.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffffff"
그리고 또한 시도했다
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.si_support=0 amdgpu.si_support=1 amdgpu.dpm=1 amdgpu.ppfeaturemask=0xffffffff"
내 Bash 스크립트는 다음과 같습니다.
#!/bin/bash
# Get path for card 1
card_path=`readlink -f /sys/class/drm/card1/device`
echo "Path for card: $card_path"
echo "Initial values for card:"
echo "Power limit: $(cat $card_path/hwmon/hwmon2/power1_cap)"
echo "Fan settings: $(cat $card_path/hwmon/hwmon2/pwm1)"
pwm1_max=`cat $card_path/hwmon/hwmon2/pwm1_max`
echo "pwm1_max: $pwm1_max"
echo "GPU and memory clocks and voltages"
echo "$(cat $card_path/power_dpm_force_performance_level)"
echo "$(cat $card_path/pp_od_clk_voltage)"
echo " "
# Set power limit
echo "Setting card power limit:"
echo 101000000 > $card_path/hwmon/hwmon2/power1_cap
echo " "
# Set GPU and mem clocks and voltages
echo "Setting GPU and Mem clocks and voltages:"
echo manual > $card_path/power_dpm_force_performance_level
echo 's 0 300 750' > $card_path/pp_od_clk_voltage
echo 's 1 751 793' > $card_path/pp_od_clk_voltage
echo 's 2 848 806' > $card_path/pp_od_clk_voltage
echo 's 3 858 812' > $card_path/pp_od_clk_voltage
echo 's 4 900 820' > $card_path/pp_od_clk_voltage
echo 's 5 1059 840' > $card_path/pp_od_clk_voltage
echo 's 6 1194 880' > $card_path/pp_od_clk_voltage
echo 's 7 1280 890' > $card_path/pp_od_clk_voltage
echo 'm 0 300 750' > $card_path/pp_od_clk_voltage
echo 'm 1 1000 800' > $card_path/pp_od_clk_voltage
echo 'm 2 2215 895' > $card_path/pp_od_clk_voltage
echo c > $card_path/pp_od_clk_voltage
# Set Fan
echo " "
echo "Setting Fan:"
echo 1 > $card_path/hwmon/hwmon2/pwm1_enable
pwr_prc=$((pwm1_max * 7/10))
echo "$pwr_prc"
echo $pwr_prc > $card_path/hwmon/hwmon2/pwm1
# Check values
echo " "
echo "Check settings"
echo "Power limit: $(cat $card_path/hwmon/hwmon2/power1_cap)"
echo " "
echo "Fan settings: $(cat $card_path/hwmon/hwmon2/pwm1)"
echo " "
echo "Clocks and voltages: "
echo "$(cat $card_path/power_dpm_force_performance_level)"
echo "$(cat $card_path/pp_od_clk_voltage)"
다음을 사용하여 스크립트 실행
sudo sh -c ./card1.sh
수익률:
Initial values for card:
Power limit: 101000000
Fan settings: 173
pwm1_max: 255
GPU and memory clocks and voltages
manual
OD_SCLK:
0: 300MHz 750mV
1: 751MHz 793mV
2: 1048MHz 1006mV
3: 1158MHz 1112mV
4: 1240MHz 1150mV
5: 1309MHz 1150mV
6: 1364MHz 1150mV
7: 1430MHz 1150mV
OD_MCLK:
0: 300MHz 750mV
1: 1000MHz 800mV
2: 2100MHz 950mV
OD_RANGE:
SCLK: 300MHz 2000MHz
MCLK: 300MHz 2250MHz
VDDC: 750mV 1200mV
Setting card power limit:
Setting GPU and Mem clocks and voltages:
./card1.sh: line 28: echo: write error: Invalid argument
./card1.sh: line 29: echo: write error: Invalid argument
./card1.sh: line 30: echo: write error: Invalid argument
./card1.sh: line 31: echo: write error: Invalid argument
./card1.sh: line 32: echo: write error: Invalid argument
./card1.sh: line 33: echo: write error: Invalid argument
./card1.sh: line 34: echo: write error: Invalid argument
./card1.sh: line 35: echo: write error: Invalid argument
./card1.sh: line 37: echo: write error: Invalid argument
./card1.sh: line 38: echo: write error: Invalid argument
./card1.sh: line 39: echo: write error: Invalid argument
./card1.sh: line 41: echo: write error: Invalid argument
Setting Fan:
178
Check settings
Power limit: 101000000
Fan settings: 173
Clocks and voltages:
manual
OD_SCLK:
0: 300MHz 750mV
1: 751MHz 793mV
2: 1048MHz 1006mV
3: 1158MHz 1112mV
4: 1240MHz 1150mV
5: 1309MHz 1150mV
6: 1364MHz 1150mV
7: 1430MHz 1150mV
OD_MCLK:
0: 300MHz 750mV
1: 1000MHz 800mV
2: 2100MHz 950mV
OD_RANGE:
SCLK: 300MHz 2000MHz
MCLK: 300MHz 2250MHz
VDDC: 750mV 1200mV
Wattman_GTK 및 amdgpu-clocks에서도 오류가 발생했습니다.
write error: Invalid argument
다음을 사용하여 스크립트 실행
$sudo sh card1.sh
"에코: 쓰기 오류: 잘못된 인수" 대신에 다음을 제공합니다.
echo: echo: I/O error
명령줄에서 시계와 전압을 변경하려고 할 때도 이런 현상이 발생합니다.
$sudo echo 's 7 1280 895' > /sys/devices/pci0000:00/0000:00:1c.7/0000:0d:00.0/pp_od_clk_voltage
결과는 다음과 같습니다.
-bash: /sys/devices/pci0000:00/0000:00:1c.7/0000:0d:00.0/pp_od_clk_voltage: Permission denied
답변1
기본 커널(5.4)에서도 동일한 문제가 발생했습니다. 커널을 Edge 커널(linux-generic-hwe-20.04-edge)로 업데이트한 후 문제가 사라졌습니다.
답변2
이것은 20.04 및 드라이버 20.45가 설치된 Radeon VII에서 작동합니다.
모든 코어 클럭 레벨 변경의 경우:
echo 's 0 300 750' > $card_path/pp_od_clk_voltage
에게:
echo 'vc 0 300 750' > $card_path/pp_od_clk_voltage
메모리 레벨은 최대 주파수에 대해 하나의 설정만 가져오므로 삭제하십시오.
echo 'm 0 300 750' > $card_path/pp_od_clk_voltage
echo 'm 1 1000 800' > $card_path/pp_od_clk_voltage
그리고 변경:
echo 'm 2 2215 895' > $card_path/pp_od_clk_voltage
에게:
echo 'm 1 2215' > $card_path/pp_od_clk_voltage
답변3
저도 같은 문제가 있었는데 큰 따옴표(")를 간단한 따옴표(')로 변경했는데 잘 작동했습니다.
IE 변경:
echo "s 0 300 750" > /sys/class/drm/card0/device/pp_od_clk_voltage
에게:
echo 's 0 300 750' > /sys/class/drm/card0/device/pp_od_clk_voltage
도움이 되었기를 바랍니다.