Mesa 21.3(2021/11/17 release)で AMD GPU(RADV backend)で, 悲願の Vulkan レイトレ拡張が使えるようになりました.
ちなみに AMD GPU 向けの Vulkan ドライバは知る限り以下の 3 つがあります.
- RADV: Mesa の Radeon Vulkan backend. コミュニティ開発? それなりによい. 21.3 からレイトレ拡張対応(experimental. Polaris など古い GPU も emulation で対応)
- AMDVLK: https://github.com/GPUOpen-Drivers/AMDVLK AMD が出している OSS Vulkan ドライバ. レイトレ拡張非対応. 開発もあまりされていないようで, なんのためにあるかあまり良くわからない(Linux とかでとりあえず最低限 Vulkan 動かすとき用?)
- amdgpu-pro: https://amdgpu-install.readthedocs.io/en/latest/install-script.html#installation-vulkan-optional-component プロプライエタリなドライバ. RDNA2 以降ではレイトレ拡張対応だが, それ以前では未対応
環境
- Ubuntu 20.04
- amdgpu ドライバ 21.40(OSS stack のみ(デフォルトの設定でインストールされるもの))
- RX6800
ビルドする
RADV で最新 Vulkan を使うため, Mesa をコンパイルするメモ
https://qiita.com/syoyo/items/9b98a3124ce47065453f
を参考にビルドください.
いずれは ubuntu などで apt で入るようになるでしょう.
使う
そのままではレイトレ拡張出てきません.
オフィシャルにはどう使えばいいのかの十分なドキュメントがないです...
環境変数で RADV_PERFTEST=rt
を指定する必要があります.
また, ソースコード見ると llvm backend が有効だと動きません(RADV 使う時点で llvm backend は使っていなさそうであるが...)
$ RADV_PERFTEST=rt vulkaninfo
で, VK_KHR_ray_tracing
出れば成功です!
Sascha 先生の Vulkan サンプルを動かしてみます.
Mesa 21.3 RADV + RX6800 Vulkan ray tracing, finally !!!!!!!🍾🍾🍾🍾㊗️㊗️㊗️㊗️㊗️🎉🎉🎉🎉🎉🎉🎉 (set envvar RADV_PERFTEST=rt) demo from @SaschaWillems2 's super awesome Vulkan examples 🙏 pic.twitter.com/g2DkpMI1CF
— Syoyo Fujita 🌸 レイトラ ® 🐯 3 周年 🎉 (@syoyo) November 19, 2021
Ultra super coooooooooooll!!!!!!
ただ, vulkan shadows demo はあんまり性能出ませんでした. indirect ray みたいなのはまだ SW 処理なのか, HW 的に性能出ないのかもしれません.
Mesa RADV 利点
- Full(?) OSS スタックで動く(はず).
- ドライバは amdgpu(OSS), その上に RADV(Mesa OSS)のため
- マイニングファーム, データセンターでレイトレ動かし放題(ちなみに amdgpu-pro 自体はデータセンター利用禁止していない)
- マイニングしつつ, レイトレしたいときにレイトレするなど可能になる
- レイトレできずマイニングに酷使されていた Polaris, Vega ちゃんがついに解放できる...かも
欠点
- まだ experimental
- RDNA2 では BVH トラバースだけ HW 化(それも image(texture) unit を使って実現でちょっとしょぼい感がある)なので, vulkan shadows demo のように, シーンによってはすごい性能が出ない状態になるようです.
- RDNA2 以降の GPU 使っており, レイトレ性能を求めるのであればしばらくは amdgpu-pro でもいいかもしれません.
- Intel DG 出てきて Vulkan レイトレ性能良かったらどうなるか...