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は未サポートである。
Vega 10の開発時点では、まだAI(主にCNN:Convolutional Neural Network)の用途が重要視されるとはまだ考えていなかった模様で、これの実装は今後の世代ということになるだろう。ちなみにFP16を使うことで、フィルタリング処理などの高速化(Photo03)といった、グラフィック面でのメリットがあることも示されている。こうした諸々を含めて、NGCUでは40命令ほどが追加されたとしている(Photo04)。
なお、Photo02で動画エンコードの話に触れたが、NGCUでは1CUあたり最大512個の8bit演算が可能である。これは先ほども出てきたが、動きベクトルの探索などの力技が必要なシーンで活躍するだろう。
グラフィック周り話を移すと、"Vega"アーキテクチャは前世代の"Polaris"アーキテクチャだけでなく、NVIDIAの"Pascal"アーキテクチャと比較しても、サポートされるDirectX 12の機能が多いという。
また、DirectX 12とは別にAMDが実装したのが新しいPrimitive Shader(Photo07)である。これは端的に言いうと、従来のVertex ShaderやGeometry Shaderを拡張して、Compute Shader的に扱えるようにしたものということになる。しかし、問題はこれの標準化に関してレポートできるような状態にないらしいことだ。
卵と鶏ではないが、とりあえずハードウェアがないと規格だけあっても仕方が無いので、まずハードウェアを用意して、ということだろうか? おそらくは特定の開発者に、(NDAベース)でまずは情報公開という形で利用されるようになると思われる。
次にHBCC(High-Bandwidth Cache Controller)の話だ。本間文氏のレポートに詳しいが、VegaではHBM2をローカルのフレームバッファとして扱うのではなく、ホスト側のメモリのキャッシュとして扱うという、変わった構成になっている。
このキャッシュ制御を行うのがHBCCであるが、これを利用する場合、メモリは従来のフレームバッファ的なページの割り振りではなく、ページ単位での管理となる(Photo08)。面白いのは、この場合HBM2はExclusive Cache(Photo09)として動くことも、Inclusive Cache(Photo10)として動くこともできる。これはソフトウェアからコントロールできるとのことで、例えばPCにメモリがたっぷりつんであればInclusive Cache、ぎりぎりの場合はExclusive Cacheといった使い方ができるとする。
最後に消費電力周りについて。Vegaコアでは、GPR(汎用レジスタ)の省電力化とエリアサイズの削減に注力したそうで(Photo11)、製品全体としても、より高い性能/消費電力比を実現できたという(Photo12)。もっとも絶対的な消費電力がどうか、というのはまた別の話であるが。