Coelacanth's Dream

RadeonSI/RADVドライバーに Smart Access Memory に向けた最適化が行なわれる

AMD GPU のオープンソース OpenGL ドライバー RadeonSI に、Smart Access Memory / Resizeable PCI BAR に向けた最適化パッチが投稿された。
ac,radeonsi: optimizations for Smart Access Memory (all VRAM visible) (!7951) · Merge Requests · Mesa / mesa · GitLab

パッチを投稿した AMD の Marek Olšák 氏は、CPU から一度に GPU VRAM へのアクセスが可能な (CPU から見えている) 状態を Smart Access Memory としている。
既に各メディア、テクニカルライターへの AMD による説明から、PCI Express の仕様に存在する Resizeable PCI BAR を利用したものという話が出ていたが、それは Linux環境においても同様で、Smart Access Memory 自体は Resizeable PCI BAR 以上に特別なことはしていないと捉えてよさそうだ。

今回 RadeonSI ドライバーには、一度に最大 256MB までしかアクセスできない状況を想定した、バッファを確保するコードを Smart Access Memory / Resizeable PCI BAR が有効な場合はスキップするといった最適化が行なわれている。

以前検証を行なった時は、Vulkan API を用いるソフトウェアのみを試したが、OpenGL API でもある程度の効果はあるのだろう。
一連のパッチがメインラインに組み込まれた時は再度検証するつもりだが、やっぱり Linux でも動作する OpenGLベンチマークというのは少なかったりする。

その後 RADV (Vulkan) ドライバーにも同様の最適化パッチが投稿された。
radv: Use VRAM for CS & upload buffer if all VRAM is CPU-visible. (!7979) · Merge Requests · Mesa / mesa · GitLab

RADV の開発者である Bas Nieuwenhuizen 氏は検証も行なっており、Basemark では +3%、SotTR (Shadow of the Tomb Raider) では +1fps (0-4%) の性能向上を確認できたとコメントしている。

参考リンク