今回はAMDがリリースしているUbuntu用Radeonドライバーの使用方法を紹介します。第471回 の更新になります。
Radeon用ドライバーについて
AMDはNVIDIAと違いドライバーをオープンソースで開発しています。アップストリームのカーネルやMESA で開発しているため、新しいUbuntuでは新しいGPUが使用可能となります。
それだけでなく、AMDもRadeonのドライバー配布ページ でUbuntu用(だけではありませんが)ドライバーである「Radeon Software for Linux」を配布しています。第471回 によると、2016年からドライバーとプロプライエタリなVulkan 実行環境を含んで配布されていたようです。
それからしばらく経ち、2021年11月にリリースされた21.40.1 で大きな変更がありました。
これまでは関連するパッケージを含んだ状態で配布しており、ローカルにリポジトリを作成してパッケージを取得するという方式でした。しかし21.40.1からはリポジトリの情報をパッケージとして配布し、ドライバーその他に関してAMDが用意しているリポジトリから取得するようになりました。すなわち、最初にダウンロードするファイルのサイズが劇的に小さくなりました[1] 。
また「GPU演算向けのオープン・ソフトウェア・プラットフォーム」であるROCm も含むようになりました。必ずしもオープンソースというわけではないようですが、OpenCLなどオープンソースでも使用可能な部分があります。
特にアナウンスはありませんが、AMDVLK によるVulkanのオープンソースドライバーも使用できるようになっています。
すなわち、21.40.1以降オープンソースでもOpenCLが高速化され、Vulkanまで使用できるようになりました。
AMDはまた、Radeon PRO シリーズも展開しています。Radeon Software for LinuxはこのRadeon PROにも対応しており、より性能を引き出すためのプロプライエタリな部分(具体的にはOpenGLドライバーとVulkanドライバーが該当)を使用します。
よって次のように役割分担が明確になりました。
Radeon:オープンソースのみで構成
Radeon PRO:オープンソース+プロプライエタリ
長々と述べましたが、NVIDIA GeForceではクローズドソースにしている部分も、Radeonであればオープンソースで使用できるのが大きな特徴です。
今回使用したハードウェア
今回使用したハードウェアは、RD-RX6500XT-E4GB/SF です。写真を見ればわかるとおりOEM元はPowerColor です。GPUはRadeon RX 6500 XTです。
Radeon RX 6500 XTは広く伝えられているように、あまりにも割り切りがよすぎて便利な場面が限定されるため、お勧めするのはなかなか難しいです。筆者はOpenCLが高速化されたことを期待し[2] 、かつディスプレイ出力も1つあれば充分(むしろほとんどがヘッドレス運用[3] )なので購入しました。
今回使用したRadeon Software for Linuxのバージョン
今回使用したRadeon Software for Linuxのバージョンは20.50 です。Radeon RX 6500 XTとUbuntu 20.04.4 LTSのHWEカーネル(5.13)に対応した最初のバージョンです。
ここからもわかるように今回使用したUbuntuのバージョンは20.04 LTSです。カーネルのバージョンが同じなので21.10でも使用できるかもしれませんが、確認はしていません。
パッケージのダウンロードとインストール
パッケージのダウンロードは、Radeonのドライバー配布ページ からGPUを選択し、「 Ubuntu x86 64ビット」にある「Radeon Software for Linux installer version 21.50 for Ubuntu 20.04.4」の「ダウンロード」をクリックします。
インストールは、ダウンロードしたパッケージをダブルクリックしてUbuntu Softwareを起動し、インストールするのが簡単でしょう。
Radeon Software for Linuxのインストール
Radeon Software for Linuxをインストールするには、端末を起動して次のコマンドを実行します。
$ sudo amdgpu-install --usecase=graphics --vulkan=amdvlk --opencl=rocr
これでVulkanとOpenCLともにオープンソースのバージョンを選択してインストールできます。
インストール完了後、再起動してください。「 このシステムについて」を表示すると図1のようになりました。Radeon RX 6500 XTは「Beige goby[4] 」というコードネームであることがわかります。
図1 「 グラフィック」が「Beige goby」になっている
パッケージを確認する
インストールしたパッケージの中身を確認してみましょう。
$ dpkg -L amdgpu-install
/.
/etc
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/amdgpu.list
/etc/apt/sources.list.d/rocm.list
/etc/apt/trusted.gpg.d
/etc/apt/trusted.gpg.d/rocm-keyring.gpg
/usr
/usr/bin
/usr/bin/amdgpu-install
/usr/share
/usr/share/amdgpu-install
/usr/share/amdgpu-install/AMDGPUPROEULA
/usr/share/doc
/usr/share/doc/amdgpu-install
/usr/share/doc/amdgpu-install/changelog.Debian.gz
/usr/share/doc/amdgpu-install/copyright
おおむねリポジトリ情報とインストールスクリプトしかないことがわかります。
amdgpu.listの中身も見てみましょう。
$ cat /etc/apt/sources.list.d/amdgpu.list
deb https://repo.radeon.com/amdgpu/21.50/ubuntu focal main
#deb-src https://repo.radeon.com/amdgpu/21.50/ubuntu focal main
なんと、バージョンごとにリポジトリを分けています。新しいバージョンのドライバーがリリースされた場合は、パッケージのダウンロードをやり直してアップデートする方式を想定しているようで、注意が必要です。
ベンチマーク
それではPhoronix Test Suite でグラフィック関連のテストを行った結果を見ていきましょう。
まずはゲームを3つほど試してみます。図2 はSuperTuxKart 、図3 はTesseract 、図4 はUnigine Valley です。なお図3はTesseract OCR とは別物で、ファーストパーソンシューティングゲームです。
図2 SuperTuxKartのベンチマーク
図3 Tesseractのベンチマーク結果
図4 Unigine Valleyのベンチマーク結果
図2はほぼ差がなく、このクラスのGPUではSuperTuxKartだとベンチマークにならないほど軽いゲームであることがわかります。
図3と図4は、期待どおりの結果といえます。
次の図5 から図14 まではvkpeak というベンチマークのテスト です。Vulkanの性能をさまざまな方式でテストしています。
図5 int16-scalarの結果
図6 int16-vec4の結果
図7 fp16-scalarの結果
図8 fp16-vec4の結果
図9 int32-scalarの結果
図10 int32-vec4の結果
図11 fp32-scalarの結果
図12 fp32-vec4の結果
図13 fp64-scalarの結果
図14 fp64-vec4の結果
表にまとめると次のとおりです。
int16-scalar(図5)
速
遅
int16-vec4(図6)
遅
速
fp16-scalar(図7)
速
遅
fp16-vec4(図8)
遅
速
int32-scalar(図9)
遅
速
int32-vec4(図10)
遅
速
fp32-scalar(図11)
速
遅
fp32-vec4(図12)
速
遅
fp64-scalar(図13)
速
遅
fp64-vec4(図14)
速
遅
32/64ビット浮動小数点と16ビットスカラーが高速で、あとは低速という傾向があるようです。もちろんこの結果だけで断言できるものではありませんが。
あとは長すぎるので結果の提示は省略しますが、GpuTest ではおおむねRadeon RX 6500XTが高速で、GL-vs-VK ではおおむねGeForce GTX 1650が高速でした。
OpenCLの結果はありません。エラーとなって実行できませんでした。clinfo
コマンドを実行すると、次のように表示されます。
fatal error: cannot open file '/usr/local//usr/lib/clc/gfx1030-amdgcn-mesa-mesa3d.bc': No such file or directory
User Guide for AMDGPU Backend を見る限り「gfx1030」は誤りと思われるので(「 gfx1032」が正解?) 、このバージョンのROCmでは未対応なのかもしれません。
Radeon Software for Linuxを使用する上での注意点
Radeon Software for Linuxを使用する上での注意点は大きく2点あります。1点は前述のとおり普段の更新では最新バージョンにならず、更新するためには何らかのアクションが必要になります。
もう1点は、新しいカーネルに追随するまで時間がかかるということです。今回の例であれば、20.04 LTSで5.13カーネルが使用できるようになったのは今年1月半ば(筆者の手元では1月19日)のことであり、20.50のリリースは2月16日で、対応までに1か月くらいかかっています[5] 。
[5] ちなみにRD-RX6500XT-E4GB/SFが筆者宅に到着したのは1月28日で、20.50がリリースされるまでひたすら待っていました。ただ現在は入手性が悪くなっているようで、早めに購入しておいてよかったです。それでもOpenCLが実行できない問題は残っていますが……。