最近のAIブームで筆者もまあまあいろいろなことをしているが、とにかく計算資源が足らない。
そこではるか昔に使っていたRX470が二枚ほどあったのでこれを活用し、何らかの形で現在のメインPCの肩代わりをさせようと思った。
が、ドライバーを入れる際にかなりつまずいたのでそれの共有。
環境
入れたてほやほやのUBUNTU Desktop 22.04.3 LTS
RX470 2枚
CPU:3400G
インストール
ここからドライバーを持ってくる。
今回はOpenCLをインストールすることにする。Llama.cppのOpenBlastに使ってみようと思う。
RadeonにはROCmがあるが、RX470はROCmとOpenCL(ROCm)のサポートが終了しているため、今回はlegacy版のドライバーを入れる。
1
2
|
dpkg -i amdgpu-install-VERSION.deb(ご自身の環境に合わせてVERSIONを変更)
amdgpu-install --opencl=legacy --accept-eula
|
--accept-eula
を付けないとエラーを吐いてうまくいかなかった。
さてエラーを吐かずにインストールできたのでclinfo
コマンドでGPUが表示されるはずだ。
表示されなかった場合、inxi -G
コマンドを使う。
1
2
3
|
Graphics:
Device-1: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] driver: amdgpu v: kernel
Device-2: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] driver: amdgpu v: kernel
|
正常ではこのように表示される。driver
がamdgpu
なことを確認。
筆者Tips
筆者はここでつまずいたがdriverが正常にインストールされず、N/Aと表示されていた。
インストールできているとunloaded
にamdgpu
が表示されている。
その際にはmodprobe amdgpu
としてドライバーを再起動してあげるとよい。
結果
大体うまくいった、が、いくつか問題が発生している。
1.一枚しかOpenCLが動作しない。
2枚あるRX470のうち1枚のみしかOpenCLが動作していないようである。現状モニターには出力されており、壊れているわけではなく、clinfo
もほぼ正常に見える。
2.clinfoに謎のデバイスがみられる。
ほぼ正常というのは
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
NULL platform behavior
clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...) No platform
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) No platform
clCreateContext(NULL, ...) [default] No platform
clCreateContext(NULL, ...) [other] Success [AMD]
clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT) Success (1)
Platform Name AMD Accelerated Parallel Processing
Device Name gfx803
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) Success (1)
Platform Name AMD Accelerated Parallel Processing
Device Name gfx803
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) Success (1)
Platform Name AMD Accelerated Parallel Processing
Device Name gfx803
|
というものが表示されている。
gfx803はRX470のことなので、何かがおかしいのかもしれない。