sibradzic / amdgpu-clocks

Simple script to control power states of amdgpu driven GPUs
GNU General Public License v2.0
390 stars 43 forks source link

Setting SCLK states from previous card #30

Closed pavelis closed 3 years ago

pavelis commented 3 years ago

I have two different cards: card1: RX 580 card2: RX 5700

$ sudo amdgpu-clocks 
Won't write initial state to /tmp/amdgpu-custom-states.card1.initial, it already exists.
Detecting the state values at /sys/class/drm/card1/device/pp_od_clk_voltage:
  SCLK state 0: 300MHz, 750mV
  SCLK state 1: 600MHz, 769mV
  SCLK state 2: 900MHz, 825mV
  SCLK state 3: 1150MHz, 850mV
  SCLK state 4: 1150MHz, 850mV
  SCLK state 5: 1150MHz, 850mV
  SCLK state 6: 1150MHz, 850mV
  SCLK state 7: 1150MHz, 850mV
  MCLK state 0: 300MHz, 750mV
  MCLK state 1: 1000MHz, 800mV
  MCLK state 2: 2100MHz, 850mV
  Maximum clocks & voltages:
    SCLK clock 2000MHz
    MCLK clock 2300MHz
    VDDC voltage 1200mV
  Curent power cap: 145W
Verifying user state values at /etc/default/amdgpu-custom-states.card1:
  SCLK state 0: 300MHz, 750mV
  SCLK state 1: 600MHz, 769mV
  SCLK state 2: 900MHz, 825mV
  SCLK state 3: 1150MHz, 850mV
  SCLK state 4: 1150MHz, 850mV
  SCLK state 5: 1150MHz, 850mV
  SCLK state 6: 1150MHz, 850mV
  SCLK state 7: 1150MHz, 850mV
  MCLK state 0: 300MHz, 750mV
  MCLK state 1: 1000MHz, 800mV
  MCLK state 2: 2100MHz, 850mV
  Maximum clocks & voltages:
    SCLK clock 2000MHz
    MCLK clock 2250MHz
    VDDC voltage 1200mV
  Force power cap to 140W
  Force performance level to manual
Committing custom states to /sys/class/drm/card1/device/pp_od_clk_voltage:
  Done
Won't write initial state to /tmp/amdgpu-custom-states.card2.initial, it already exists.
Detecting the state values at /sys/class/drm/card2/device/pp_od_clk_voltage:
  SCLK state 0: 800Mhz
  SCLK state 1: 1350Mhz
  MCLK state 1: 900MHz
  VDDC Curve state 0: 800MHz @ 780mV
  VDDC Curve state 1: 1300MHz @ 800mV
  VDDC Curve state 2: 1960MHz @ 1162mV
  Maximum clocks & voltages:
    SCLK clock 2000Mhz
    MCLK clock 930Mhz
  Curent power cap: 140W
Verifying user state values at /etc/default/amdgpu-custom-states.card2:
  SCLK state 1: 1300MHz
  MCLK state 1: 900MHz
  VDDC Curve state 0: 800MHz @ 780mV
  VDDC Curve state 1: 1300MHz @ 800mV
  VDDC Curve state 2: 1960MHz @ 1162mV
  Force power cap to 140W
  Force performance level to manual
Committing custom states to /sys/class/drm/card2/device/pp_od_clk_voltage:
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 141: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 144: echo: write error: Invalid argument
/usr/local/bin/amdgpu-clocks: line 144: echo: write error: Invalid argument
  Done

The amdgpu-clocks tries to commit 580's SCLK states to 5700, because SCLK array with 580's states is longer than 5700's one and SCLK variable doesn't clear. May I fix it in PR?

sibradzic commented 3 years ago

Thanks for the PR, have a nice day!