Ubuntu Weekly Recipe

第747回Intel Arc A380をUbuntu 22.04 LTSで動作させ、oneAPIで高速化する

今回はUbuntu 22.04 LTSでIntelの新しいディスクリートGPUであるArc A380を動作させoneAPIでBlenderを高速化します。

Intel Arcとは

Intelも20世紀末にディスクリートGPUを販売していたこともありましたが、程なく撤退しました。その後チップセットを経てCPUにGPUが内蔵されるようになったのは今更解説するまでもないでしょう。

20年以上にも渡る沈黙期間を経て、昨年再びIntelはデイスクリートGPUの販売を開始しました。Arc A380はそのうちの1つです。各社から搭載ビデオカードが販売されていますが、今回はIntel Arc A380 Challenger ITX 6GB OCを使用します。

Ubuntuでの対応状況

UbuntuでのIntel Arc対応状況が気になるところですが、22.10でも未対応です。したがって22.04 LTS向けにリリースされているドライバーをインストールする必要があります。

23.04では対応する見込みですが、今のところ開発版でも未対応です。

oneAPIとは

現在のGPUは画面表示ばかりでなく、汎用的な計算(GPGPU)にも使用されています。NVIDIAはCUDA、AMDは第742回で紹介したROCmを提供しています。

身も蓋もない言い方をすれば、oneAPIはこれらのIntel版です。その名からもわかるとおり、Intelは汎用的な用途を目指しています。本稿の趣旨から外れるので詳しい解説は行いませんが、なかなかに野心的な企みで成功するかは全くの未知数です。

なおBlender 3.3からoneAPIをサポートしているので、第742回に続いてベンチマークを取ってみましょう。A380はローエンドなのであまり性能に期待できませんが、CPUよりも速くなれば上々でしょう。

Intel Arcの注意点

Intel Arcの注意点としては、買ってきて箱を開けてPCに接続すればいいというわけではないところです。デスクトップPC クイック・スタート・ガイドが公開されているので事前に目を通しましょう。手元のPCで使用できるかどうかが明記されているほか、Resizable BAR/Smart Access Memory(以下ReBAR)を有効にする必要があるとも記述があります。厳密にはReBARが有効でなくてもいいのですが、パフォーマンスが下がります。

ReBARはUEFIブートが必須で、レガシーブートは未対応です。なお今回使用したDeskMeet X300/B/BB/BOX/JPではデフォルトで有効になっていました。

ドライバーのセットアップ

ドライバーのインストール方法は詳細なドキュメントが公開されていますので、これに沿って進めましょう。

まずはReBARが有効になっているかどうかを確認します。

$ lspci -v |grep -A8 VGA
05:00.0 VGA compatible controller: Intel Corporation Device 56a5 (rev 05) (prog-if 00 [VGA controller])
        Subsystem: ASRock Incorporation Device 6004
        Flags: bus master, fast devsel, latency 0, IRQ 67, IOMMU group 2
        Memory at fb000000 (64-bit, non-prefetchable) [size=16M]
        Memory at 7c00000000 (64-bit, prefetchable) [size=8G]
        Expansion ROM at fc000000 [disabled] [size=2M]
        Capabilities: <access denied>
        Kernel driver in use: i915
        Kernel modules: i915

重要なのは「Memory at 7c00000000 (64-bit, prefetchable) [size=8G]」の行で、これが表示されているのでReBARが有効になっています。6GBのメモリーしか載っていないのに8GBと表示されるのが謎ではあるのですが。

$ wget -qO - https://repositories.intel.com/graphics/intel-graphics.key |   sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
$ echo 'deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu jammy arc' |   sudo tee  /etc/apt/sources.list.d/intel.gpu.jammy.list
$ sudo apt install linux-image-oem-22.04 linux-headers-oem-22.04

リポジトリを追加して、その後OEMカーネルをインストールしています。インストールドキュメントではカーネルのバージョンが決め打ちになっていますが、セキュリティなど総合的に勘案してメタパッケージをインストールしています。

ここで一旦再起動します。

再起動後、追加でパッケージをインストールします。

$ sudo apt install -y intel-platform-vsec-dkms intel-platform-cse-dkms
$ sudo apt install -y intel-i915-dkms intel-fw-gpu 
$ sudo apt install -y intel-opencl-icd intel-level-zero-gpu level-zero   intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri   libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers   mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all

ここでも一旦再起動します。

再起動後、パーミッションを追加します。

$ sudo gpasswd -a ${USER} render

パーミッションを有効にします。一番無難な方法は再起動することですが、他の方法でも構いません。インストールドキュメントでも紹介しているnewgrp renderコマンドを実行するのでもいいです。

「設定」にある「このシステムについて」を開くと、⁠グラフィック」に正しく表示されていることがわかります図1⁠。またWaylandセッションも有効になっています。

図1 「グラフィック」を観ると、A380が正しく認識されていることがわかる
図1

oneAPIのセットアップ

oneAPIのセットアップを行います。oneAPIのインストールガイドによると、メタパッケージがいくつかあります。

今回はBlenderで認識できるようにするのが目的なので、⁠intel-hpckit」をインストールします。なぜこれかは、前出のBlenderのブログエントリーに「oneAPI DPC++コンパイラー」を使用することが記述されています。調査すると、これがHPC Toolkitに含まれていることがわかります。

ではインストールを行いましょう。

$ wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
$ echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
$ sudo apt update 
$ sudo apt install intel-hpckit

インストール完了後、再起動してください。

Blenderで動作確認

第742回と同じくBlenderはSnapパッケージ版を使用しますので、インストールしてください。

その後「編集⁠」⁠-⁠⁠プリファレンス」を開き、⁠⁠システム」「oneAPI」タブを表示します図2⁠。GPUの型番まではわかりませんが、正しく認識しています。

図2 「opeAPI」タブに「Intel Graphics」があり、正しく認識している
図2

第742回と同じ条件でベンチマークを行ってみましょう。CPUに関しては変わらず2分46秒程度なので、これが基準となります。

今回はタイムにばらつきがあったので複数回実行しましたが、おおむね1分41秒から45秒の間でした図3⁠。Radeon RX 6600 XTと比較して1分くらい遅いですが、CPUよりは高速なのでこんなものではないでしょうか。もっと高速化したい場合は、よりグレードの高いモデルのGPU(A750やA770)を選択すべきでしょう。その場合はDeskMeetの筐体には入らなくなってしまうのですが。

図3 複数回実行したうちの最速の結果が、1分41秒22だった
図3

おすすめ記事

記事・ニュース一覧