第523回ではハイエンドNUCである
AMDのGPUドライバー事情
GPU
さて、
- Intel
- NVIDIA
- AMD
もちろん他にもGPUを作っているメーカーはいますし、
Intel製のGPUはCPUに組み込まれたiGPUとして提供されています。ソフトウェアについても
それに対してNVIDIAは、
ここ数年で一気に状況が変わったのがAMDです。元々はAMDもNVIDIAと同じように、
ここまでをまとめると、
- Intel: グラフィックスの性能を求めないのであればこれを選んでおけばまず間違いない。明示的に選ばなくてもIntel製のCPUを採用していれば、
だいたいのPCについてくるはず。 - NVIDIA: 機械学習などのGPGPU用途においてCUDAや各種ライブラリといったNVDIA固有の機能が必要になる場合に選ぶ。
- AMD: ゲームやOpenCLなど、
IntelではGPU性能が物足りない場合の選択肢。
もちろん最近はどんなデバイスも
AMDGPUとAMDGPU-PRO
AMDGPUには主に2種類のインストール方法が存在します。
- Ubuntuのパッケージリポジトリからインストールする方法
(AMDGPU) - AMDのサイトからAMDGPU-PROをインストールする方法
利用しているUbuntuのバージョンとGPUがリリースされた時期にも依存しますが、
- Ubuntuのカーネルバージョンが古く、
使っているGPUをサポートしていない - Ubuntuのユーザーランド
(Mesaなど) が古く、 使っているGPUをサポートしていない - ワークステーション向けのAMD FireProを使用したい
最初の2つについては第278回でも紹介しているHardWareEnablement
残念ながら18.
AMDGPU-PROの導入方法については第471回を参照してください。AMDGPU-PROはバイナリパッケージのみの提供となっていますが、
ちなみに18.
さて、
Radeon RX Vega Mになんとかして対応する
組み込みのドライバーもAMDGPU-PROも対応していないRadeon RX Vega Mですが、
実はカーネル・
- 一部開発中のコードを使うため、
普段よりも動作が不安定になる可能性があります。 - コードをチェックアウト・
ビルドしたタイミングによってはPCが起動できなくなる可能性があります。 - セキュリティアップデートは提供されません。各自で適宜ビルド・
インストールしなおしてください。 - 独自ビルドのカーネルを使うためセキュアブートはオフにしてください。
起動できなくなったとしてもPCが壊れることは稀です。大抵の場合はGRUBから
主な手順は次のとおりです。
- ファームウェアをインストールする
- 新しい開発中のカーネルをビルド&インストールする
- 新しいユーザーランドドライバーをビルド&インストールする
ファームウェアをインストールする
ファームウェアはデバイスを動かすために必要な小さなバイナリブロブです。この言葉が示す範囲は文脈によって多少増減しますが、
Ubuntuの場合は、
しかしながらAMDのAlex Deucher
$ 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.
さて開発中のカーネルを利用する方法はいくつか存在します。
- カーネルのソースコードに用意されているdeb-pkgターゲットを用いてビルドする
- UbuntuのKernel Teamが提供するメインラインビルドを利用する
最近のカーネルは、
パッケージの構成やカーネルコンフィグをUbuntuのカーネルパッケージのそれにある程度揃えたい場合は、
今回は既にVaga M対応がカーネルに取り込まれているので、
$ 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
メインラインビルドでは、
なおメインラインビルドはあくまで不具合追求やテスト目的で提供されています。実運用環境で使うことは想定されていないので注意してください。特にセキュリティアップデートに関しては、
新しいユーザーランドドライバーをビルド&インストールする
Vega Mを正しく認識してくれるカーネルとファームウェアを準備できたので、
Mesaのリリース前の最新版を入手したい場合は、
Vega M対応を目的とするのであれば、
今回は比較的汎用性の高い、
$ 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
何かをインストールするのではなく、
システムを再起動する
すべてインストールが完了したらシステムを再起動しましょう。ただしその前に前回設定したnomodesetを解除する必要があります。
$ sudo sed -i 's/nomodeset//' /etc/default/grub $ sudo update-grub
GRUBの設定が終わったら、nomodesetを外し忘れて起動した場合は、
再起動したら、
$ 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も正しく動いているようです。
またMini DisplayPortやThunderbolt 3も認識するようになりました。ただし4K UHDTV
ちなみに前回使用したsensorsコマンドの結果にも、
$ 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コマンドを使うと、
$ 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版では
$ 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のベンチマークを取ってみましょう。いくつか方法は存在しますが、
$ 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は初回実行時に注意事項と、
glmark2
まずかんたんにインストールできるのがglmark2です。ちなみにglmark2はUbuntuリポジトリにもパッケージがあるので、
$ 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
最初にテストを実行する画面解像度を選びます。その後、
テストが終わると、
たとえば次のように複数のテスト結果を渡すことで、
$ phoronix-test-suite merge-results glmark2intel glmark2amd
上記はそれぞれLLVMpipe版とVega M版の結果を比較しています
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
$ phoronix-test-suite benchmark pts/gputest pts/unigine-valley pts/unigine-heaven
本当は他のシステムと比較するのが理想なのですが、