amdgpu-pro
rocm-smi

amdgpu-pro 17.40 beta + rocm-smi でアンダークロックする

漢なら Linux でも amdgpu-pro ドライバで AMD GPU をアンダークロックし, 電力効率の良い計算したいですね!

やりましょう!

以前はできなかったのですが, amdgpu-pro 17.40 あたりからできるようになっているようです.

環境

Ubuntu 16.04.3 LTS(Kernel 4.10.0-37)

セットアップ

amdgpu-pro 17.40 beta ドライバを --compute でインストールしておきます.

ROCM-smi をクローンしておきます.

https://github.com/RadeonOpenCompute/ROC-smi

制御する

rocm-smi では NVIDIA の nvidia-smi とは異なり, パワーリミットを設定することができず, コアクロックか GPU クロックの調整のみ可能です.
(OC 用に OverDrive レベルを設定できるが, これは負の値を取れないのでアンダークロックには使えない)

また, クロックは MHz やパーセンテージ指定ではなく, レベルを指定します.

$ rocm-smi --setsclk N
====================    ROCm System Management Interface    ====================
================================================================================
 GPU  DID    Temp     AvgPwr   SCLK     MCLK     Fan      Perf    OverDrive  ECC
  3   67df   70.0c    69.73W   1145Mhz  2000Mhz  33.73%   manual    0%       N/A      
...
================================================================================
====================           End of ROCm SMI Log          ====================

XMR(モネロ)マイニングプログラムでは, RX 480 で hashrate 620 H/s -> 610 H/s と少しの低下に抑えつつ, AvgPwr が 90W -> 70W 程度に下がりました.
(rocm-smi での表示なので, 実際の消費電力はもう少し大きい可能性があります)

R9 Nano などは GPU クロックはレベルが一つしかないので変更できません(Windows ではできるが...)

TODO

rocmi-smi は単なるスクリプトなので, /sys あたりを直接叩けばより詳細なアンダークロック制御ができるかもしれません.

アンダーボルティングはサポートされません( https://github.com/RadeonOpenCompute/ROCm/issues/216 )が, 昔はできていたのでカーネルをハックすればいけるかも?