第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





本当は他のシステムと比較するのが理想なのですが、