Ryzen Threadripperが発売された直後だが、長らく待ち望まれてきたRadeon RX Vegaがまもなく市場に投入される。土壇場になって発売時期が数日延びた("諸般の事情"とのことだ)が、8月中に発売されることは間違いない。今回このRadeon RX Vegaシリーズ2製品の実力を試す機会に恵まれたので、簡単ではあるがテストを行った結果をお届けしたい。

Vega 10アーキテクチャについて

Radeon RX Vegaの製品ラインナップなどは7月に開催されたAMD Capsaicin Siggraph 2017のレポートで簡単にお届けしたが、この際に説明された内部構造についても紹介しておきたい。

Shaderそのものの基本的な構造は、従来のGCNの延長にある。ただしFP16をサポートしたことで、FP16利用時の演算性能を倍にしている。また、FP16に加えて8bit整数のSIMDもサポートしているが(Photo02)、8bit整数でのFMAは未サポートである。

Photo01:今度はNGCU(Next Generation Compute Unit)という名前で通用することになるのだろうか?

Photo02:MAD_MIXは画像処理(例えば動画エンコードの動きベクトルの検索)などに有用であり、設計時点ではこれを念頭に置いたとのこと

Vega 10の開発時点では、まだAI(主にCNN:Convolutional Neural Network)の用途が重要視されるとはまだ考えていなかった模様で、これの実装は今後の世代ということになるだろう。ちなみにFP16を使うことで、フィルタリング処理などの高速化(Photo03)といった、グラフィック面でのメリットがあることも示されている。こうした諸々を含めて、NGCUでは40命令ほどが追加されたとしている(Photo04)。

Photo03:「3DMark Sierraが何か」については一切語られていないが、おそらくこうしたMixed Precisionを利用可能なテストになるものと思われる

Photo04:この命令セットは「いずれ公開」とあるが、後述するPrimitive Shaderを含めて「いつごろ」という話は明確になっていない

なお、Photo02で動画エンコードの話に触れたが、NGCUでは1CUあたり最大512個の8bit演算が可能である。これは先ほども出てきたが、動きベクトルの探索などの力技が必要なシーンで活躍するだろう。

Photo05:ただ現実問題として昨今H.264やHEVCは専用エンコーダ/デコーダで実装されることが多い事を考えると、どこまでこれが利用されるのかちょっと謎である

グラフィック周り話を移すと、"Vega"アーキテクチャは前世代の"Polaris"アーキテクチャだけでなく、NVIDIAの"Pascal"アーキテクチャと比較しても、サポートされるDirectX 12の機能が多いという。

Photo06:VegaでDirectX 12.1対応がやっと実現した形だ

また、DirectX 12とは別にAMDが実装したのが新しいPrimitive Shader(Photo07)である。これは端的に言いうと、従来のVertex ShaderやGeometry Shaderを拡張して、Compute Shader的に扱えるようにしたものということになる。しかし、問題はこれの標準化に関してレポートできるような状態にないらしいことだ。

Photo07:これが効果的な事例は、シャドウマップやマルチビュー/マルチ解像度レンダリング、パーティクルなどとされており、VR方面に活用されそうだ

卵と鶏ではないが、とりあえずハードウェアがないと規格だけあっても仕方が無いので、まずハードウェアを用意して、ということだろうか? おそらくは特定の開発者に、(NDAベース)でまずは情報公開という形で利用されるようになると思われる。

次にHBCC(High-Bandwidth Cache Controller)の話だ。本間文氏のレポートに詳しいが、VegaではHBM2をローカルのフレームバッファとして扱うのではなく、ホスト側のメモリのキャッシュとして扱うという、変わった構成になっている。

このキャッシュ制御を行うのがHBCCであるが、これを利用する場合、メモリは従来のフレームバッファ的なページの割り振りではなく、ページ単位での管理となる(Photo08)。面白いのは、この場合HBM2はExclusive Cache(Photo09)として動くことも、Inclusive Cache(Photo10)として動くこともできる。これはソフトウェアからコントロールできるとのことで、例えばPCにメモリがたっぷりつんであればInclusive Cache、ぎりぎりの場合はExclusive Cacheといった使い方ができるとする。

Photo08:ちなみにこのPageは、OSのPageとは無関係であり。Page Sizeも独自に決まる(Render Targetのサイズで決まる、という説明があった)模様だ

Photo09:この構成では、事実上「仮想の物理メモリ」に対するキャッシュとしてHBM2が動くわけで、Allcache Architectureを採用したKSR-1を髣髴させる

Photo10:通常はこのモードで動作することが多いと思われる

最後に消費電力周りについて。Vegaコアでは、GPR(汎用レジスタ)の省電力化とエリアサイズの削減に注力したそうで(Photo11)、製品全体としても、より高い性能/消費電力比を実現できたという(Photo12)。もっとも絶対的な消費電力がどうか、というのはまた別の話であるが。

Photo11:この汎用レジスタの設計はZenコアで採用したテクニックを利用したとする

Photo12:なんでまたこんなテストの結果を示すのか? というのが良く分からない