最新情報
ROCm 3.10 だと Navi GPU がハングするようになりました.
(e.g. rocminfo
などを実行)
ROCm で Navi は, オフィシャルから正式対応があるまで(あれば良いですが...)あきらめましょう.
発端
@AMD #ROCm version 3.7 finally supports Navi 10! I've tested it on my 5700XT card. Hopefully @PyTorch will run on Navi 10 now. Steps to reproduce on @fedora: https://t.co/PJ42oj9jTc pic.twitter.com/A9DSf1Pd7B
— Erik Rigtorp (@rigtorp) August 24, 2020
長らく ROCm で Navi は動きませんでしたが, 3.7 からひっそりと OpenCL は動くようになりました.
HIP(clang 利用) はまだうごかない: https://qiita.com/syoyo/items/240a1b08cb72f1ea6fbe
上記 tweet にあるように, (Ubuntu の場合)自前で最新 upstream カーネル(or Navi 対応 dkms module?)を使うなどすればいけるかもはしれません.
また, 3.7 から OpenCL imaging 部分も open source になったようで, OpenCL 周りのより OSS 化が進んでいます.
環境
- Ubuntu 20.04.1
- RX 5700 無印
- X570 mobo
セットアップ
ROCm の手順にあるとおりです.
render group
Ubuntu 20.04 からは, /dev/kfd
(AMD GPU HW へのインターフェイス?) の権限が代わり, render
group に追加も必要になっていますので注意しましょう.
動作確認(OpenCL)
/opt/rocm-3.7.0/opencl/bin/clinfo
で確認します.
libOpenCL.so
が rocm のを使うように(本来は /etc/OpenCL/vendors
の ICD 設定で見に行く .so を指定したほうがよいのであろうが),
LD_LBRARY_PATH
で /opt/rocm-3.7.0/opencl/lib
にパスを通しておきます.
xmrig で cryptonight-heavy(Haven)を動かしてみます.
そのままでは libOpenCL.so 関連の探索がうまくいかないのか, OpenCL 見つからないエラーになるので,
--opencl-loader=/opt/rocm-3.7.0/opencl/lib/libamdocl64.so
として直接指定します.
* ABOUT XMRig/6.3.2 gcc/9.3.0
* LIBS libuv/1.34.2 OpenSSL/1.1.1f hwloc/2.1.0
* HUGE PAGES supported
* 1GB PAGES disabled
* CPU AMD Ryzen 9 3950X 16-Core Processor (1) x64 AES
L2:8.0 MB L3:64.0 MB 16C/32T NUMA:1
* MEMORY 2.2/94.3 GB (2%)
* DONATE 1%
* ASSEMBLY auto:ryzen
* POOL #1 haven.miner.rocks:4005 algo cn-heavy/xhv
* COMMANDS hashrate, pause, resume, results, connection
* ADL press e for health report
* OPENCL #0 AMD Accelerated Parallel Processing/OpenCL 2.0 AMD-APP (3182.0)
* OPENCL GPU #0 0b:00.0 Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (gfx1010) 1750 MHz cu:18 mem:6949/8176 MB
* CUDA disabled
[2020-08-30 18:16:42.095] net use pool haven.miner.rocks:4005 51.38.152.26
[2020-08-30 18:16:42.095] net new job from haven.miner.rocks:4005 diff 30000 algo cn-heavy/xhv
[2020-08-30 18:16:42.095] opencl use profile cn-heavy (2 threads) scratchpad 4096 KB
| # | GPU | BUS ID | INTENSITY | WSIZE | MEMORY | NAME
| 0 | 0 | 0b:00.0 | 864 | 8 | 3456 | Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (gfx1010)
| 1 | 0 | 0b:00.0 | 864 | 8 | 3456 | Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (gfx1010)
[2020-08-30 18:16:42.368] opencl GPU #0 compiling...
[2020-08-30 18:16:54.703] net new job from haven.miner.rocks:4005 diff 30000 algo cn-heavy/xhv
[2020-08-30 18:17:00.754] opencl GPU #0 compilation completed (18386 ms)
[2020-08-30 18:17:00.757] opencl READY threads 2/2 (18662 ms)
[2020-08-30 18:17:23.399] opencl accepted (1/0) diff 30000 (359 ms)
[2020-08-30 18:17:42.181] opencl #0 0b:00.0 109W 58C 2289RPM 1750/875MHz
[2020-08-30 18:17:42.181] miner speed 10s/60s/15m 1342.2 n/a n/a H/s max 1343.3 H/s
[2020-08-30 18:17:44.078] net new job from haven.miner.rocks:4005 diff 21428 algo cn-heavy/xhv
[2020-08-30 18:18:01.697] opencl accepted (2/0) diff 21428 (359 ms)
[2020-08-30 18:18:42.284] opencl #0 0b:00.0 132W 67C 2282RPM 1750/875MHz
Voila!
Powerlimit 運用でハッシュレート 1340 H/s 出ました.
本来は 2000 H/s が期待されるところですが, intensity なり調整すれば出るかしらん?
ETH マイニング性能
Teamredminer 0.7.9 で確認してみます.
rocm-smi --setsclk 2 で,
GPU 0 [61C, fan 69%] ethash: 48.62Mh/s, avg 47.19Mh/s
48 MH/s @ 110 W でした.
amdgpu-pro(プロプライエタリ OpenCL ドライバ)でも大体同等のワットパフォーマンスでしたので, ROCm 版 OpenCL で性能が落ちるのは確認できませんでした(ので良い!)
動きはするが... 将来が不安
Navi で動くというのは ROCm 3.7 リリースノートにはありません.
今回の進展は CDNA に向けての布石でしょうから, 今後 ROCm で RDNA できちんと OpenCL が動作するか + RDNA Navi/RDNA2 BigNavi 自体が正式サポートするかどかは不明です.
(一応ソースコードには gfx10xx 系(Navi)の対応はあるが)
また, github issue のやり取りを見る限り, 最近はより HPC 顧客(Frontier とかでしょうね)向けに業務しており, 一般ユーザ向けはないがしろにされています.
一般ユーザ向けには, 引き続き通常の amdgpu ドライバ(で OpenCL)を利用したほうがよいと思われます.
amdgpu, amdgpu-pro のメモ
https://qiita.com/syoyo/items/154e0be7157a579e1d32