今回はAMDのGPGPUソフトウェアスタックであるROCmを使用し、Blenderのレンダリングを高速化する方法を紹介します。
今どきはGPUにディスプレイへの出力以外の役割を担わせることが普通になっています。俗にいうGPGPUで、これはGeneral-Purpose computing on Graphics Processing Unitの略なのだそうです。本当にうまいことをいうなぁと感心します。
GPGPUでよく使用されるのはNVIDIAのCUDAであることに疑念を挟む余地はないでしょう。AMDも似たようなものを提供していて、ROCmが該当します。ただしCUDAは開発環境と実行環境という感じですが、ROCmが提供するものはもう少し幅が広いです。具体的にどんなことができるのかはROCmによるハイパフォーマンス・
3DCG制作で広く使われるアプリケーションであるBlenderは、CUDAはもちろんですがHIPにも対応していてレンダリングを高速化できます。
AMDなのでもちろんROCmの使用にはRadeonが必要です。今回はRadeon RX 6600 XTを用意しました。コンシューマー向けGPUでもROCmは使用できるのですが、推奨GPUはあくまでエンタープライズ向け
なおROCmの使用にあたって第705回で紹介したRadeon Software for Linuxは不要です。試していませんが、おそらく同時にインストールできません。
今回使用したUbuntuのバージョンは22.
ROCmのインストール
ROCmのドキュメントはdocs.
まずはパッケージをダウンロードします。ダウンロード元はROCm Installation Guideにあります。バージョンごとに違っているので例を指し示すのは難しいのですが、Ubuntu 22.
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.
ROCmはかなり頻繁にリリースされるため、必要に応じてアップデートする必要があります。アップデートのためのドキュメントも公開されているのですが、これを読む限りインストールと同じ方法でよさそうです。ROCm downloads Guideでダウンロード元のURLを探し、wgetで取得してapt
コマンドでインストール、さらにamdgpu-install
コマンドでパッケージのアップデートを行います。最下行のrenderグループへの追加は1度行えばいいです。
アンインストールする場合は次のコマンドを実行します。
$ sudo amdgpu-uninstall $ sudo apt autoremove --purge
Blenderのインストール
Ubuntu 22.
Blenderのインストール後
GPUとCPUの違いによるレンダリング時間の比較
GPUを使用した場合とCPUを使用した場合とで、Blenderのレンダリング時間がどのように変わるかを確認してみます。すなわち軽いベンチマークです。
BlenderのサイトにあるDemo Filesから
「システム」
前者の場合はおおむね41秒、後者の場合はおおむね2分26秒で完了しています
ROCmとBlenderはオープンソースですが、オープンソースだけでここまでできるようになったというのはなかなかに感慨深いものがあります。
それだけじゃないぞROCm
今回は最も簡単にROCmを確認できる方法としてBlenderを使用しましたが、どちらかといえば邪道なほうです。王道なのはやはり機械学習での使用でしょう。広く使われているTensorFlowやPyTorchにも対応しています。PyTorch経由でStable Diffusionを高速化できると聞いています。
今回は使用しませんでしたが、DockerイメージをDockerHub経由でインストールもできます。
CUDAが圧倒的に強い世の中であるのは重々承知していますが、オープンソースでいろいろできるROCmにも少しくらいは目が行くようになることを望んでいます。
IntelはIntelでoneAPIをがんばっているので、いずれはこちらも紹介したいところです。図2にはすでに