第523回 ではハイエンドNUCである「NUC8i7HVK 」( Hades Canyon)にUbuntu 18.04 LTSをインストールして、CPUやSSDの性能を調べました。今回はより新しいドライバーを導入してHades
Canyonの特徴とも言うべきdGPUを使ってみます。
AMDのGPUドライバー事情
GPU(Graphics Processing Unit)はコンピューターにおいて、2D/3Dのレンダリングを主目的とした演算装置です。最近はひたすら猫画像かどうかを識別させられたり、終わりのない表計算をさせられたり、仮想通貨を発掘させられたりと「なんでも屋」の様相を呈していますが、基本的にはグラフィックス関連の演算を担います。
さて、デスクトップPCで主に使われているGPUは次の3つのメーカーに大別されます。
もちろん他にもGPUを作っているメーカーはいますし、たとえばスマートフォン向けだと上記以外のGPUのほうが多いです。とは言え一般的なデスクトップPCに載っているGPUとなると、おそらく上記3つのいずれかになるでしょう。
Intel製のGPUはCPUに組み込まれたiGPUとして提供されています。ソフトウェアについても「Intel Graphics for Linux 」を始めとしてIntel自身が昔から積極的にLinuxカーネルやグラフィックススタックにコミットしてもいるのです。よって一般的なLinuxディストリビューションならたいていの場合、特に何もせずとも3Dアクセラレーションも含めて「きちんと動作する」可能性が高く、安心して利用できます。新製品がリリースされた時点で、Linuxでもそれなりに使えるようになっていることもメリットのひとつです。
それに対してNVIDIAは、LinuxをはじめとするFLOSSへのコミットに消極的です。NVIDA製GPU向けドライバーとしてコミュニティが開発しているnouveauに対しては、ある程度のヘルプは行っているものの直接的な関与は控えているように見えます[1] 。第454回 でも紹介しているように、NVIDIA製のGPUを本格的に使うならまずはプロプライエタリなドライバーをインストールすることになるでしょう。
ここ数年で一気に状況が変わったのがAMDです。元々はAMDもNVIDIAと同じように、コミュニティが開発しているradeonドライバーとAMDが提供しているプロプライエタリなCatalyst(fglrx)ドライバーの2つが並立している状況でした。しかしながらGCNアーキテクチャー になって以降は、AMD自身がradeonドライバーベースの新しいグラフィックスドライバーであるAMDGPUを開発・提供することになります[2] 。特にカーネルドライバーと一部のユーザーランドドライバーについてはFLOSSとして提供されているため、Intelと同様に「Ubuntuをインストールしたらそのまま動く」状況になったのです。
ここまでをまとめると、「 デスクトップLinux」においては、それぞれのGPUは次のように特徴づけられるでしょう。
Intel: グラフィックスの性能を求めないのであればこれを選んでおけばまず間違いない。明示的に選ばなくてもIntel製のCPUを採用していれば、だいたいのPCについてくるはず。
NVIDIA: 機械学習などのGPGPU用途においてCUDAや各種ライブラリといったNVDIA固有の機能が必要になる場合に選ぶ。
AMD: ゲームやOpenCLなど、IntelではGPU性能が物足りない場合の選択肢。
もちろん最近はどんなデバイスも「ひと手間かければそれなりに動く」ことのほうが多いので、結局のところ「好きなものを選べばいい」になってはしまうのですが。
AMDGPUとAMDGPU-PRO
AMDGPUには主に2種類のインストール方法が存在します。
Ubuntuのパッケージリポジトリからインストールする方法(AMDGPU)
AMDのサイトからAMDGPU-PROをインストールする方法
利用しているUbuntuのバージョンとGPUがリリースされた時期にも依存しますが、基本的には1.の方法で問題ありません。何もしなくても最初からインストールされているはずです。2.を選ぶ必要が出てくるのは主に次のようなケースに該当する場合です。
Ubuntuのカーネルバージョンが古く、使っているGPUをサポートしていない
Ubuntuのユーザーランド(Mesaなど)が古く、使っているGPUをサポートしていない
ワークステーション向けのAMD FireProを使用したい
最初の2つについては第278回 でも紹介しているHardWareEnablement(HWE)スタック で解決できる可能性があります。5年間のサポート期間を設けているLTSの場合、リリース前後からサポート期間中に発売されたデバイスには対応できません。そこで、より新しいリリースのカーネルとグラフィックススタックを直近のLTSにも提供することで、新しいハードウェアのLTSにおけるサポートを充実するための措置がHWEです。Ubuntu
18.04 LTSについても、今後18.10、19.04とリリースされるごとに新しいリリースのカーネルとグラフィックススタックを18.04でも利用できるようになる見込みです。
残念ながら18.04はまだリリースされたばかりなので、HWEスタックが存在しません。しかしながらLinuxカーネルは18.04で採用している4.15より新しい4.17がリリースされています。また3DグラフィックスライブラリーであるMesaもまた、18.04で採用されている18.0より新しい18.1がリリースされています。これらのリリースに加えられた変更点については、AMDGPU-PROに取り込まれている可能性があります。よってAMDGPU-PROを導入することで、比較的新しいデバイスについてもきちんと動作する可能性があるのです。
AMDGPU-PROの導入方法については第471回 を参照してください。AMDGPU-PROはバイナリパッケージのみの提供となっていますが、カーネル側のドライバーについてはDKMSとして提供されています。つまりカーネルのソースコードの内容は確認可能です。また、Vega M向けのファームウェアは含まれていないようです[3] 。
[3] 最近のデバイスはドライバーとは別に「ファームウェア」と呼ばれるバイナリデータを要求することがあります。Ubuntuの場合はlinux-firmwareパッケージが/lib/firmware
ディレクトリにインストールします。たとえばAMDGPUなら/lib/firmware/amdgpu
以下のファイルがファームウェアです。
ちなみに18.04向けのAMDGPU-PRO は、6月15日にAMDGPU-PRO 18.20 としてリリースされたばかりです[4] 。
[4] この記事を見直している間にリリースされてしまいました。ちなみに5月3日に18.20のEarly Preview版がリリースされていました。Early Preview版は今後のアップデートやアップグレードをサポートする予定はないという位置付けなので、インストール済みの場合は一度削除するか、18.20を再インストールしてください。
さて、本題のHades Canyonに搭載されたRadeon RX Vega Mについてです。Ubuntu 18.04 LTSのKernel 4.15/Mesa 18.0ではサポートしていません。また、AMDGPU-PRO 18.20にも対応コードは入っていないようです。つまりどちらの方法も使えません。
Radeon RX Vega Mになんとかして対応する
組み込みのドライバーもAMDGPU-PROも対応していないRadeon RX Vega Mですが、ドライバーが開発されていないわけではありません。むしろ現在絶賛対応中です。おそらくカーネルドライバーは4.18あたりで対応することになるでしょう。カーネル対応と同じくらいのタイミングでファームウェアも正式に提供されるはずです。ユーザランドドライバーは5月半ばにリリースされたMesa 18.1で対応したことになっています。
実はカーネル・ファームウェア・Mesaの開発中のコードはすでに公開されています。そこで今回はこれらを個別にビルドして取り込むことにします。ちなみにこれから説明する方法は、他の新しいデバイスに対してもある程度は有効です。ただし次の点には注意してください。
一部開発中のコードを使うため、普段よりも動作が不安定になる可能性があります。
コードをチェックアウト・ビルドしたタイミングによってはPCが起動できなくなる可能性があります。
セキュリティアップデートは提供されません。各自で適宜ビルド・インストールしなおしてください。
独自ビルドのカーネルを使うためセキュアブートはオフにしてください。
起動できなくなったとしてもPCが壊れることは稀です。大抵の場合はGRUBから「以前にうまく起動した」カーネルを選択し、CLIからユーザーランドドライバーをダウングレードすれば復旧はできます。当然のことながらプロダクション用途には向きません。本格的に運用する予定であれば、おとなしく新しいカーネル・ユーザーランドドライバーがリリースされるのを待ちましょう。
主な手順は次のとおりです。
ファームウェアをインストールする
新しい開発中のカーネルをビルド&インストールする
新しいユーザーランドドライバーをビルド&インストールする
ファームウェアをインストールする
ファームウェアはデバイスを動かすために必要な小さなバイナリブロブです。この言葉が示す範囲は文脈によって多少増減しますが、Linuxの場合はデバイスドライバーがロードするバイナリファイルだと思えばいいでしょう。NICやGPUのような性能要件が厳しいデバイスは、ファームウェアをかんたんに更新できるようにファイルの形で提供されることが増えています。
Ubuntuの場合は、カーネルチームが管理しているlinux-firmwareパッケージ 経由でファームウェアが提供されています。このパッケージの大元はkernel.orgのlinux-firmwareリポジトリ です。残念ながら6月上旬の時点で、どちらのリポジトリにもVega
Mのファームウェアは存在しません。
しかしながらAMDのAlex Deucher(agd5f)がファームウェアを公開して くれているので、それを使うことにします。
$ mkdir ~/firmware && cd $_
$ wget -mnp https://people.freedesktop.org/~agd5f/radeon_ucode/vegam/ -R "index.html*"
(中略)
ダウンロード完了: 20 ファイル、1.2M バイトを 17s で取得 (77.5 KB/s)
$ sudo cp people.freedesktop.org/~agd5f/radeon_ucode/vegam/*.bin /lib/firmware/amdgpu
$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-4.15.0-23-generic
update-initramfs: Generating /boot/initrd.img-4.15.0-22-generic
これでファームウェアのインストールは完了です。
新しい開発中のカーネルをビルド&インストールする
次期カーネル向けのGPUドライバーの開発はfreedesktop.orgのdrm リポジトリで行われます。5月半ばにdrmリポジトリにVega M対応が取り込まれ 、6月頭にdrmリポジトリの成果がカーネルのリポジトリに取り込まれました 。よって現時点でも開発中のカーネルを使えば、Vega M対応コードが有効になっているのです。
さて開発中のカーネルを利用する方法はいくつか存在します。
カーネルのソースコードに用意されているdeb-pkgターゲットを用いてビルドする
UbuntuのKernel Teamが提供するメインラインビルドを利用する
最近のカーネルは、カーネルソースコードをチェックアウトするだけでカーネルのdebパッケージファイルを作ることができます。最新のカーネルを「そのまま」使いたいのであればこのdeb-pkgターゲットを利用する方法がお手軽です。ただしUbuntu固有のパッチは適用されません。また作られるパッケージそのものも、Ubuntuで使っているカーネルパッケージと様相が異なります。異なるとは言え、作られたカーネルが使えないわけではありません。デバッグ・開発目的で最新のカーネルを使いたい場合は、十分に役にたってくれるでしょう。
パッケージの構成やカーネルコンフィグをUbuntuのカーネルパッケージのそれにある程度揃えたい場合は、後者のメインラインビルド を使います。メインラインビルドの利点のひとつは、既にビルド済みのバイナリが用意されている点です。Kernel Teamは毎日Linusリポジトリの最新版ならびに各バージョンの最新版をそれぞれUbuntuのパッケージと同じ構成でビルドしています。よって、「 とりあえずビルド済みのバイナリパッケージが欲しい」場合に有用です。
今回は既にVaga M対応がカーネルに取り込まれているので、メインラインビルドのバイナリを使用します[5] 。方法は最新のビルド結果 から必要なdebパッケージファイルをダウンロードしてインストールする、ただそれだけです。
$ mkdir ~/kernel && cd $_
$ wget -mnp -erobots=off http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/ -R "*lowlatency*" -A "*_all.deb" -A "*_amd64.deb"
(中略)
ダウンロード完了: 14 ファイル、61M バイトを 1m 20s で取得 (785 KB/s)
$ sudo apt install ./kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/*.deb
メインラインビルドでは、Ubuntuのサポートアーキテクチャー(amd64、i386、armhf、arm64、ppc64el、s390x)とフレーバー(generic、lowlatency、generic-lpae、snapdragon)をすべてビルドしています。そこで上記のコマンドでは、allアーキテクチャーとamd64のgenericフレーバーだけダウンロードしています。
なおメインラインビルドはあくまで不具合追求やテスト目的で提供されています。実運用環境で使うことは想定されていないので注意してください。特にセキュリティアップデートに関しては、適用済みのリビジョンを探しだし、そのリビジョンが含まれる日以降のメインラインビルドを自分でダウンロードしインストールし直す必要があります。繰り返しになりますが、実運用環境でVega Mを使いたい場合は、少なくとも18.04向けHWEが有効化されるまで待ったほうが良いでしょう。
新しいユーザーランドドライバーをビルド&インストールする
Vega Mを正しく認識してくれるカーネルとファームウェアを準備できたので、次にユーザーランドドライバー(Mesa)をインストールします。Ubuntuリポジトリの最新版がMesa 18.0(のリリース候補、まもなく18.0.5に更新予定)なので、少なくとも18.1以上に上げる必要があります[6] 。
[6] コミットログを見る限りMesa 18.1でVega Mに対応しているようなのですが、18.1.0のリリースノート には何も書いていません。もしかすると正式には18.2以降でサポート扱いとするのかもしれません。
Mesaのリリース前の最新版を入手したい場合は、「 Padoka PPA」として有名なPaulo DiasのPPA を利用します。最新リリース版を提供するPdoka Stable PPA も存在します。また、UbuntuのHWEのテスト用PPA にて、将来的なポイントリリースに向けてのアーリプレビューのような扱いとして、18.1のパッケージが6月13日に公開 されました[7] 。
[7] UbuntuのLTS版では、定期的にアップデート適用済みのインストーラーイメージを提供するポイントリリースを行っています。18.04の最初のポイントリリースである18.04.1は7月ごろを予定しています。さらに10月の18.10リリース後には2回目のポイントリリースである18.04.2が予定されています。18.04.2以降は直近の最新リリースのカーネルやMesaもHWEとして提供される予定です。このためおそらく18.04.2ではさらに新しいMesa 18.2が使われるものと思われます。
Vega M対応を目的とするのであれば、どのPPAを使ってもかまいません。Padoka PPAは安定性は除外し、常に最新を追いかけたい場合に便利です。Ubuntuリポジトリより新しいMesaが欲しいけどより安定していてほしいならPadoka Stable PPAを選ぶことになるでしょう。HWE用PPAは常に最新のMesaがあるとは限りませんが、HWE対応ポイントリリースで採用される予定のMesaをテストしたい場合に便利です。
今回は比較的汎用性の高い、Padoka Stable PPAを使いましょう。いつものPPAの使い方と同じなので至極シンプルです。
$ sudo add-apt-repository ppa:paulo-miguel-dias/pkppa
$ sudo apt full-upgrade
(中略)
以下のパッケージはアップグレードされます:
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles2-mesa-dev
libglx-mesa0 libwayland-egl1-mesa libxatracker2 mesa-common-dev mesa-va-drivers mesa-vdpau-drivers
アップグレード: 15 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
(後略)
$ apt policy libgl1-mesa-dri
libgl1-mesa-dri:
インストールされているバージョン: 18.1.1-0~b~padoka0
候補: 18.1.1-0~b~padoka0
バージョンテーブル:
*** 18.1.1-0~b~padoka0 500
500 http://ppa.launchpad.net/paulo-miguel-dias/pkppa/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
18.0.0~rc5-1ubuntu1 500
500 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
何かをインストールするのではなく、既存のパッケージを更新するだけです。最後のコマンドによりMesa 18.1がインストールされていることがわかります。
システムを再起動する
すべてインストールが完了したらシステムを再起動しましょう。ただしその前に前回設定したnomodeset
を解除する必要があります。
$ sudo sed -i 's/nomodeset//' /etc/default/grub
$ sudo update-grub
GRUBの設定が終わったら、再起動してください。nomodeset
を外し忘れて起動した場合は、たとえばGRUBの画面で手動で削除すれば良いでしょう。
再起動したら、正しく認識していることを確認します。まずカーネルがメインライン版になっていることを確認します。
$ uname -a
Linux nuc8 4.17.0-999-generic #201806152201 SMP Sat Jun 16 02:04:03 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ dmesg | grep -i vegam
[ 1.602894] [drm] initializing kernel modesetting (VEGAM 0x1002:0x694C 0x8086:0x2073 0xC0).
前回動作しなかったKMSも正しく動いているようです。
図1 設定画面を表示するとADMGPUが動いていることがわかる
図2 ディスプレイ出力も選択肢が増えている
またMini DisplayPortやThunderbolt 3も認識するようになりました。ただし4K UHDTV(3840x2160)については、Thunderbolt 3経由でのみ表示ができました。原因は不明です。ディスプレイ側はいずれもHDMI端子を利用していた(Mini DisplayPortやThunderbolt3は変換コネクタを経由した)ので、ディスプレイ・ケーブル側よりはdGPU側かソフトウェア側の問題のような気がします。
図3 4Kディスプレイ出力でも収まりきらないbootchart
ちなみに前回使用したsensors
コマンドの結果にも、Vega Mのデータが表示されるようになっています。
$ sensors
(中略)
amdgpu-pci-0100
Adapter: PCI adapter
vddgfx: +0.75 V
temp1: +44.0°C (crit = +89.0°C, hyst = -273.1°C)
power1: 5.04 W (cap = 75.00 W)
mesa-utilsパッケージに同梱されているglxinfo
コマンドを使うと、OpenGL関連の詳細なサポート情報を取得できます。ここではシンプル表示のみ掲載しておきます。
$ sudo apt install mesa-utils
$ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: X.Org (0x1002)
Device: AMD VEGAM (DRM 3.26.0, 4.17.0-999-generic, LLVM 6.0.0) (0x694c)
Version: 18.1.1
Accelerated: yes
Video memory: 4073MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.1
Memory info (GL_ATI_meminfo):
VBO free memory - total: 4073 MB, largest block: 4073 MB
VBO free aux. memory - total: 4092 MB, largest block: 4092 MB
Texture free memory - total: 4073 MB, largest block: 4073 MB
Texture free aux. memory - total: 4092 MB, largest block: 4092 MB
Renderbuffer free memory - total: 4073 MB, largest block: 4073 MB
Renderbuffer free aux. memory - total: 4092 MB, largest block: 4092 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 4073 MB
Total available memory: 8167 MB
Currently available dedicated video memory: 4073 MB
OpenGL vendor string: X.Org
OpenGL renderer string: AMD VEGAM (DRM 3.26.0, 4.17.0-999-generic, LLVM 6.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.1.1 - padoka PPA
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 18.1.1 - padoka PPA
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.1.1 - padoka PPA
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
ソフトウェアレンダラーであるLLVMpipe版のときは次のような結果でした。Vega M版では「yes」だった「Accelerated」が「no」になっていますね。また「Video memory」はホストのメモリーサイズ(32GiB)がそのまま表示されています。
$ glxinfo -B
name of display: :1
display: :1 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: VMware, Inc. (0xffffffff)
Device: llvmpipe (LLVM 6.0, 256 bits) (0xffffffff)
Version: 18.0.0
Accelerated: no
Video memory: 32087MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.0-rc5
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 18.0.0-rc5
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.0.0-rc5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
GPUのベンチマーク
最後にdGPUのベンチマークを取ってみましょう。いくつか方法は存在しますが、Phoronix Test Suite を導入すればかんたんにテストし、なおかつデータを保存できます。
$ sudo apt install phoronix-test-suite
$ phoronix-test-suite list-available-tests
NOTICE: The following PHP extensions are OPTIONAL but recommended:
SQLite3 The PHP SQLite3 extension is required when running a Phoromatic server.
CURL PHP CURL is recommended for an enhanced download experience.
PHP FPDF PHP FPDF is recommended if wishing to generate PDF reports.
[NOTICE] count(): Parameter must be an array or an object that implements Countable in pts_module:119
Phoronix Test Suite v5.2.1
User Agreement
Phoronix Test Suite User Agreement & Notices:
For more information on the Phoronix Test Suite and its features,
visit http://www.phoronix-test-suite.com/ or view the included
documentation.
Do you agree to these terms and wish to proceed (Y/n):
Enable anonymous usage / statistics reporting (Y/n):
Enable anonymous statistical reporting of installed software / hardware (Y/n):
(中略)
(利用可能なベンチマーク一覧)
Phoronix Test Suiteは初回実行時に注意事項と、いくつかの情報を送信するかどうかの同意画面を表示します。その後、list-available-testsサブコマンドに応じて利用可能なベンチマークの一覧を表示します。
glmark2
まずかんたんにインストールできるのがglmark2 です。ちなみにglmark2はUbuntuリポジトリにもパッケージがあるので、それをそのまま利用することも可能です。今回はPhoronix Test Suite経由で最新版をインストールします。
$ phoronix-test-suite install-tests pts/glmark2
(中略)
The following dependencies are needed and will be installed:
- freeglut3-dev
This process may take several minutes.
[sudo] shibata のパスワード:
(中略)
Phoronix Test Suite v5.2.1
To Install: pts/glmark2-1.1.0
Determining File Requirements ..........................................
Searching Download Caches ..............................................
1 Test To Install
1 File To Download [7.49MB]
59MB Of Disk Space Is Needed
pts/glmark2-1.1.0:
Test Installation 1 of 1
1 File Needed [7.49 MB]
Downloading: glmark2-20170617.tar.gz [7.49MB]
Downloading ........................................................
Installation Size: 59 MB
Installing Test @ 23:36:24
Phoronix Test Suiteはテストツールのビルドに必要なパッケージをインストールすることがあります。上記の例でもglmark2をビルドするためにfreeglut3-devをインストールしようとしています。
実際にベンチマークを取ってみましょう。
$ phoronix-test-suite benchmark pts/glmark2
(中略)
GLmark2 276:
pts/glmark2-1.1.0
Graphics Test Configuration
1: 800 x 600
2: 1024 x 768
3: 1280 x 800
4: 1366 x 768
5: 1440 x 900
6: 1280 x 1024
7: 1400 x 1050
8: 1680 x 1050
9: 1920 x 1080
10: 3840 x 2160
11: Test All Options
Resolution: 9
(中略)
GLmark2 276:
pts/glmark2-1.1.0 [Resolution: 1920 x 1080]
Test 1 of 1
Estimated Trial Run Count: 1
Estimated Time To Completion: 6 Minutes
Started Run 1 @ 14:34:49
Test Results:
4083
Average: 4083 Score
最初にテストを実行する画面解像度を選びます。その後、保存する際の名前を入力します。その2つ以外はエンターキーを押して進めていけば良いでしょう。
図4 テスト中はいろいろな画面が表示される
テストが終わると、テスト結果をウェブブラウザーで表示するかどうかと、OpenBenchmarks.org にアップロードするかどうかを問われます。アップロードすると、実施したテストの結果を他の人が比較する際に流用できます。
たとえば次のように複数のテスト結果を渡すことで、マージした上でウェブブラウザー上で比較できます。ちなみに「glmark2intel」「 glmark2amd」はベンチマーク実行時に入力した名前です。
$ phoronix-test-suite merge-results glmark2intel glmark2amd
上記はそれぞれLLVMpipe版とVega M版の結果を比較しています[8] 。ウェブブラウザー上で見ると次の画像のように、明らかに性能が違いますね。
[8] merge-results
サブコマンドは本来複数のテスト結果をひとつにまとめる機能です。純粋に異なるシステム間を比較したい場合は、一度OpenBenchmarking.orgにアップロードしたほうが何かと便利なようです。
図5 Vega M対応ドライバを入れる前と後の比較
GpuTestとUNIGINE Benchmarks
グラフィックス関係のベンチマークツールのうち、FLOSSなもの、特に公式のパッケージリポジトリからインストールものは実はそこまで多くはありません。そのため、Phoronix Test Suiteではプロプライエタリなベンチマークツールのインストールにも対応しています。
そんなプロプライエタリなベンチマークツールのうち、比較的有名なGpuTest とUNIGINE Benchmarks は見た目にも楽しいベンチマークツールです。
$ phoronix-test-suite install-tests pts/gputest pts/unigine-valley pts/unigine-heaven
UNIGINE Benchmarksのダウンロードにはそれなりの時間がかかるので注意してください。Valleyが2013年版でHeavenが2009年版となります。いずれも見ているだけでも楽しいベンチマークです。ちなみにUNIGINE Benchmarksには最新版のSuperposition(pts/unigine-super)が存在するのですが、Ubuntu 18.04 LTSでは完走しませんでした。
$ phoronix-test-suite benchmark pts/gputest pts/unigine-valley pts/unigine-heaven
図6 UNIGINE Valleyはひたすら大自然の中を飛び回る(動画ではなくCGです)
図7 地上に近づいたり(GPUがレンダリングした結果です)
図8 夜の森だったり(現実には存在しない森です)
図9 GpuTestの結果
図10 UNIGINE Benchmarksの結果
本当は他のシステムと比較するのが理想なのですが、手元にもOpenBenchmarking.orgにも良い比較対象が見当たらなかったので、実行方法と結果の紹介だけにとどめておきます。ちなみにLLVMpipe版ではUNIGINE Benchmarksはまともに動かなかったので、AMDGPUドライバーとMesaを更新することで、大幅に改善していることがわかります。