背景
来年あたりメタバース関連で RDNA2 or later AMD GPU で GPU レイトレクラスタを構築する必要が出てきた(来年になったら Vulkan raytrace がまともに使えそうになりそう + AMD GPU はデータセンターで動かしても OK)
とりあえずはマイニングして稼いだり, Vulkan 周り環境整備しておきたい
AMD GPU のよいところ
- powerlimit がユーザー権限で行える(正確には
render
グループ?) - データセンターで動かしても OK(EULA で制限なし. また OSS stack ならそもそも EULA 不必要)
- X11 入れなくても細かいクロック制御とファンコントロールできる(はず. 未検証)
環境
- amdgpu 21.40(2021/11/11 release)
- Ubuntu 20.04.03 or latewr
- GPU は RDNA2 or later(post VEGA)を想定します.
- OpenCL は
rocr
(OSS 版). Polaris だと OpenCL のスタックが異る(proprietary しかない? ため)
- OpenCL は
- マイニングや Vulkan の利用を想定(OpenGL は使わない)
カーネルは HWE 5.11 系ではどうも不調になりやすい(デバイスが認識されない, 負荷がかかるとリセットされる)ようです. 5.8 (2022/01 時点での LTS generic(non-hwe)?)にしておいたほうがよいでしょう(新し目のマザーボードだと 2.5 GbE など 5.11 でないといろいろ認識されないものがでてくるかもなので, マザーボードはそこそこ古いのが理想).
driver
最近は AMD も SW 周りに裂ける予算が多くなったのか, ドライバスタックもこなれてきたのか, 昨年の Navi(RX5700)の頃に比べると Linux のドライバまともになってきた感があります.
21.40 から, nvidia ドライバのように network install が基本になりました.
のサイトから落とせるのはメタパッケージになります.
apt で入れた後,
$ amdgpu-install
で一式入ります. デフォルトでは OSS 版(rocm opencl)が入ります.
Ubuntu 20.04 の場合は render
と video
グループに登録が必要になります.
powerlimit
grub に
amdgpu.ppfeaturemask=0xffffffff
を入れます.
/sys
ファイルシステム経由でいろいろ設定できるようですが, めんどいんでとりあえずは rocm-smi でやります.
amdgpu-install あたりで入る rocm 関連には rocm-smi は入っていないので, 自前でビルドします.
$ git clone https://github.com/RadeonOpenCompute/rocm_smi_lib
$ cd rocm_smi_lib
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=`pwd`/../dist ..
$ make && make install
これで rocm_smi_lib/dist
に rocm-smi 関連入ります.
引数なしに動かすと
rsmi_status_t get_frequencies(amd::smi::DevInfoTypes, uint32_t, rsmi_frequencies_t*, uint32_t*): Assertion `f->frequency[i-1] <= f->frequency[i]' failed.
Aborted (core dumped)
などと落ちますが, 一応 powerlimit は大丈夫っぽそうです.
$ rocm-smi --setpoweroverdrive 100
複数 GPU ある場合は -d N
で指定.
利用ワットを見る場合は
$ rocm-smi --showpower # or rocm-smi -P
とりあえず 100W に powerlimit で RX6800(RDNA2)で teamredminer で 56 MH/s @ 110W でました
HiveOS とかで動かすのに比べれば効率やや低いかもですが, まあ十分でしょう.
Vulkan ray tracing.
OSS 版はレイトレ関連まだありません.
Vulkan pro 版(proprietary 版)だといけるっぽい.
Mesa(AMDVLK) もうすぐかしらん?