Ubuntu Weekly Recipe

第742回AMD RadeonとROCmでBlenderを高速化する

今回はAMDのGPGPUソフトウェアスタックであるROCmを使用し、Blenderのレンダリングを高速化する方法を紹介します。

今どきはGPUにディスプレイへの出力以外の役割を担わせることが普通になっています。俗にいうGPGPUで、これはGeneral-Purpose computing on Graphics Processing Unitの略なのだそうです。本当にうまいことをいうなぁと感心します。

GPGPUでよく使用されるのはNVIDIAのCUDAであることに疑念を挟む余地はないでしょう。AMDも似たようなものを提供していて、ROCmが該当します。ただしCUDAは開発環境と実行環境という感じですが、ROCmが提供するものはもう少し幅が広いです。具体的にどんなことができるのかはROCmによるハイパフォーマンス・コンピューティング(HPC)がわかりやすいです。このうちCUDAに相当するのはHIPです。またOpenCLも提供されています。

3DCG制作で広く使われるアプリケーションであるBlenderは、CUDAはもちろんですがHIPにも対応していてレンダリングを高速化できます。

AMDなのでもちろんROCmの使用にはRadeonが必要です。今回はRadeon RX 6600 XTを用意しました。コンシューマー向けGPUでもROCmは使用できるのですが、推奨GPUはあくまでエンタープライズ向け(Radeon Instinct)やワークステーション向け(Radeon Pro)であることにはご注意ください。

なおROCmの使用にあたって第705回で紹介したRadeon Software for Linuxは不要です。試していませんが、おそらく同時にインストールできません。

今回使用したUbuntuのバージョンは22.04.1 LTSです。またROCmのバージョンは5.4.0です。Blenderのバージョンは後述します。

ROCmのインストール

ROCmのドキュメントはdocs.amd.comにあります。丁寧なインストールガイドがあるのですが、ここでも簡単にインストーラースクリプトを使用してインストールする方法を紹介します。

まずはパッケージをダウンロードします。ダウンロード元はROCm Installation Guideにあります。バージョンごとに違っているので例を指し示すのは難しいのですが、Ubuntu 22.04 LTSで5.4.0の場合は次のURLになります。

 https://repo.radeon.com/amdgpu-install/5.4/ubuntu/jammy/amdgpu-install_5.4.50400-1_all.deb

コマンドでインストールする場合は端末を起動して次を実行してください。

$ wget  https://repo.radeon.com/amdgpu-install/5.4/ubuntu/jammy/amdgpu-install_5.4.50400-1_all.deb
$ sudo apt install ./amdgpu-install_5.4.50400-1_all.deb
$ sudo amdgpu-install --usecase=rocm
$ sudo usermod -a -G render ${USER}

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

ROCm Installation Guideによるとrenderグループへの追加が必要なのはUbuntu 20.04 LTSのみとのことでしたが、筆者が試した限りでは22.04 LTSでも必要でした。

ROCmはかなり頻繁にリリースされるため、必要に応じてアップデートする必要があります。アップデートのためのドキュメントも公開されているのですが、これを読む限りインストールと同じ方法でよさそうです。ROCm downloads Guideでダウンロード元のURLを探し、wgetで取得してaptコマンドでインストール、さらにamdgpu-installコマンドでパッケージのアップデートを行います。最下行のrenderグループへの追加は1度行えばいいです。

アンインストールする場合は次のコマンドを実行します。

$ sudo amdgpu-uninstall 
$ sudo apt autoremove --purge

Blenderのインストール

Ubuntu 22.04 LTSのリポジトリにあるBlenderのバージョンは3.0.1です。これはHIPを使うには少々古く、Snapパッケージ版を使用するのがおすすめです。執筆段階のバージョンは3.4.0でした図1⁠。

図1 Ubuntuソフトウェアで「ソース」が「Snapストア(Snap)担っているBlenderをインストールする」
図1

Blenderのインストール後「編集⁠⁠-⁠プリファレンス」を開き、⁠システム」「HIP」タブを表示します。ROCmが正しく表示されている場合はGPUとUPUが表示されるので図2⁠、使用するほうにチェックを入れてください。通常はいうまでもなくGPUでしょう。

図2 ROCmが正しくインストールできると、CPUとGPUから選択できるようになる
図2

GPUとCPUの違いによるレンダリング時間の比較

GPUを使用した場合とCPUを使用した場合とで、Blenderのレンダリング時間がどのように変わるかを確認してみます。すなわち軽いベンチマークです。

BlenderのサイトにあるDemo Filesから「Car Demo」をダウンロードし、⁠bmw27_gpu.blend」をBlenderに読み込ませ、⁠レンダー⁠⁠-⁠画像をレンダリング」でレンダリングした時間を確認します。

「システム」「HIP」タブにある「AMD Radeon RX 6600 XT」にチェックを入れて3回、⁠AMD Ryzen 7 3700X 8-Core Processor」にチェックを入れて3回実行しました。

前者の場合はおおむね41秒、後者の場合はおおむね2分26秒で完了しています図3図4⁠。GPUのほうが約4倍速いです。今となってはRyzen 7 3700Xは高速なCPUとはいえませんが、それでもなかなかの速度差が出ています。

図3 「AMD Radeon RX 6600 XT」にチェックを入れて、3回連続実行した3回目の結果。左上のTimeが41.14になっている
図3
図4 「AMD Ryzen 7 3700X 8-Core Processor」にチェックを入れて、3回連続実行した3回目の結果。左上のTimeが02:46.33になっている
図4

ROCmとBlenderはオープンソースですが、オープンソースだけでここまでできるようになったというのはなかなかに感慨深いものがあります。

それだけじゃないぞROCm

今回は最も簡単にROCmを確認できる方法としてBlenderを使用しましたが、どちらかといえば邪道なほうです。王道なのはやはり機械学習での使用でしょう。広く使われているTensorFlowやPyTorchにも対応しています。PyTorch経由でStable Diffusionを高速化できると聞いています。

今回は使用しませんでしたが、DockerイメージをDockerHub経由でインストールもできます。

CUDAが圧倒的に強い世の中であるのは重々承知していますが、オープンソースでいろいろできるROCmにも少しくらいは目が行くようになることを望んでいます。

IntelはIntelでoneAPIをがんばっているので、いずれはこちらも紹介したいところです。図2にはすでに「oneAPI」がありますね。

おすすめ記事

記事・ニュース一覧