Purpose:
– script to overclock Radeon VII
For reference:
– I have 6 cards.
– Running Arch Linux.
Things at first glance to improve:
– Expression that could automatically discoverer the GPUs
Here is what I wrote:
!!CODE!!
function watch_gpus()
{
cards=(0 1 2 3 4 5)
for i in echo ${cards[@]}
; do clear &&
echo -e “card $i\n” && cat /sys/kernel/debug/dri/$i/amdgpu_pm_info &&
sleep 5; done
}
function set_fans()
{
cards=(0 1 2 3 4 5)
for i in echo ${cards[@]}
; do
fan=ls /sys/class/drm/card$i/device/hwmon/
&&
echo “1” > /sys/class/drm/card$i/device/hwmon/fan/pwm1_enable; done &&
for i in `echo {cards[@]}; do fan=
ls /sys/class/drm/card$i/device/hwmon/` &&
echo “255” > /sys/class/drm/card$i/device/hwmon/$fan/pwm1; done
}
function set_fans_auto()
{
cards=(0 1 2 3 4 5)
for i in echo ${cards[@]}
; do
fan=ls /sys/class/drm/card$i/device/hwmon/
&&
echo “2” > /sys/class/drm/card$i/device/hwmon/$fan/pwm1_enable; done
}
function set_power_state()
{
cards=(0 1 2 3 4 5)
for i in echo ${cards[@]}
; do
echo “manual” > /sys/class/drm/card$i/device/power_dpm_force_performance_level
echo “6 7” > /sys/class/drm/card$i/device/pp_dpm_sclk
echo “2” > /sys/class/drm/card$i/device/pp_dpm_mclk; done
}
function set_power_limit()
{
cards=(0 1 2 3 4)
for i in echo ${cards[@]}
; do
fan=ls /sys/class/drm/card$i/device/hwmon/
&&
echo 250000000 > /sys/class/drm/card$i/device/hwmon/$fan/power1_cap; done
}
function set_gpu_clocks(){
cards=(0 1 2 3 4 5)
for i in echo ${cards[@]}
; do
echo “vc 2 1800 1075” > /sys/class/drm/card$i/device/pp_od_clk_voltage
echo “s 1 1800” > /sys/class/drm/card$i/device/pp_od_clk_voltage
echo “c” > /sys/class/drm/card$i/device/pp_od_clk_voltage
echo “manual” > /sys/class/drm/card$i/device/power_dpm_force_performance_level
echo “6 7” > /sys/class/drm/card$i/device/pp_dpm_sclk
echo “2” > /sys/class/drm/card$i/device/pp_dpm_mclk; done
}
set_fans &&
set_power_limit &&
set_gpu_clocks
usage:
set_single_gpu_clock
function set_single_gpu_clock(){
echo “vc 2 $2 $3” > /sys/class/drm/card$1/device/pp_od_clk_voltage
echo “s 1 $2” > /sys/class/drm/card$1/device/pp_od_clk_voltage
echo “c” > /sys/class/drm/card$1/device/pp_od_clk_voltage
echo “manual” > sys/class/drm/card$1/device/power_dpm_force_performance_level
echo “6 7” > /sys/class/drm/card$1/device/pp_dpm_sclk
echo “2” > /sys/class/drm/card$1/device/pp_dpm_mclk
cat /sys/kernel/debug/dri/$1/amdgpu_pm_info
}
!!CODE!!
I am working on better commenting this, but I would appreciate any help from the community on improving the functionality, versatility, and or accuracy of this script and or its functions.
Pic of my application: