後藤弘茂のWeekly海外ニュース

コンピューティングとグラフィックスへ分化するNVIDIA GPU

GP100とGP104のアーキテクチャの違いが示すNVIDIA GPUの進化

 NVIDIAの「Pascal」世代のGPUアーキテクチャで見えてきたのは、NVIDIA GPUの統合化と分化の方向性だ。現在、NVIDIAはGPUの製品機能を分化させつつ統合化しようとしている。具体的には同じPascalでも、「Tesla P100(GP100)」と「GeForce GTX 1080(GP104)」では、GPUのマイクロアーキテクチャも、メモリやインターフェイス回りなどのチップアーキテクチャも異なる。ちなみに、AMDでは、こうしたGPUコンピューティングとグラフィックスそれぞれへの分化はあまり見られない。

GP100のTPCの構造(PDF版はこちら)
GP104のSM(Streaming Multiprocessor)の構造(PDF版はこちら)

 その一方で、かつてはまったく異なるアーキテクチャだったTegra系の統合GPUも、共通アーキテクチャへと統合されている。次世代のFinFETプロセス版のTegraは、PascalアーキテクチャのGPUコアを備えている。アーキテクチャの統合と分化の両側面が進んでいる。

 具体的にはGP100は、GP104に対して命令ユニット当たりのレジスタファイル、共有メモリ、インフライトWarp数が強化され、NVLinkをチップ間インターフェイスとして実装し、HBM2で広帯域メモリを実現する。その一方で、GP100には、GP104が備える「Simultaneous Multi-Projection(サイマルテニアスマルチプロジェクション)」やグラフィックスプリエンプションは、GP100には実装されていない。

Simultaneous Multi-Projection(PDF版はこちら)

 こうして見ると、NVIDIAのGPUは、GPUコンピューティングに最適化したアーキテクチャと、グラフィックスに最適化したアーキテクチャに、ゆるやかに分化しつつあるように見える。もっとも、これまでもNVIDIA GPUは、GPUコンピューティング向けのハイエンドGPUと、グラフィックスを主眼としたハイミドルGPU以下の製品でアーキテクチャに差異がある場合があった。

 「Fermi」アーキテクチャの世代でも、最上位のGeForce GTX 480(GF100)系と、ミドルレンジのGeForce GTX 460(GF104)系で、SM内のGPU内部の演算ユニット構成や命令発行などのアーキテクチャの基本部分が異なっていた。また、Kepler世代でも、最後発のGK210になるとマイクロアーキテクチャが異なっていた。

 「これまでもアーキテクチャの違いはあった。Keplerでは最後のGK210は、いくつかの点で進化しておりSM(Streaming Multiprocessor)が異なっている。GK210は、より多くのレジスタファイルと共有メモリを備えている。Fermiでも同様に異なるアーキテクチャを採用した」とNVIDIAでGPU開発の指揮を取るJonah Alben氏(Senior Vice President, GPU Engineering, NVIDIA)は説明する。

 もっとも、GK210の時は、グラフィックス向けGPUはMaxwellアーキテクチャへと進化したが、HPC向けのFP64性能の高いGPUの進化が取り残されたという状況にあった。そのため、HPC向けに“Kepler改”の必要があり、GK210ベースのTesla K80を投入したという事情があった。

GPUのダイサイズ変遷(PDF版はこちら)

共通アーキテクチャに統合しながら実装は分化させる

 Pascal世代での違いは、インターフェイスなどこれまでよりGPUによる差異が広がっており、差異のある製品のリリース時期も近接するようになっていることだ。NVIDIA GPU全体で見ると、マイクロアーキテクチャがそれぞれの市場に修正され、チップ全体のアーキテクチャも差異が出ている。

 その一方で、マイクロアーキテクチャの基本は共通化が進んでおり、共通アーキテクチャを実装するタイミングも同期しつつある。結果として、同世代ではGPUコンピューティングのTesla、グラフィックスのGeForce、モバイル/組み込みのTegraでGPUマイクロアーキテクチャが揃うようになった。

 Alben氏は次のように説明する。

 「最終的に、NVIDIAは単一の共通アーキテクチャモデルに辿り着いた。しかし、共通アーキテクチャと言っても、そこから性格が異なるチップを派生させている。我々は、それぞれの市場に向けて、異なる製品を開発している。コアアーキテクチャは共通だが、バランスが異なる。FP64(64-bit)倍精度浮動小数点演算ユニットやレジスタファイル、共有メモリなどのバランスだ。

 Teslaでは、こうした機能を強化したバランスが必要とされている。しかし強化すると、リソースを消費する。そのため、GeForceでは、異なる(これらの機能を削った)バランスとしている。結果として、NVIDIAのGPUは、共通である部分は保ちながら、それぞれのチップは、以前より多くの違いを持つようになっている。例えば、GP100のNVLinkなどがそうだ。

 グラフィックス向けに機能を削るというだけではない。我々は、GPUでのコンピュートが受け容れられるにつれて、GPUにより多くのコンピュート機能を入れ込んできた。それと同時に、グラフィックスでもVR(Virtual Reality)のような新しい技術が来れば、そうした市場変化に追従できるクールなアイデアを入れ込んでいる」。

GP100の全体構成(PDF版はこちら)
GP104の全体構成(PDF版はこちら)

GP100ではディープラーニングのためにFP16を倍性能化

 マイクロアーキテクチャ面で非常に面白いのはFP16(16-bit半精度)浮動小数点演算の実装だ。GPUコンピューティングを主眼としたGP100では、FP16(16-bit半精度)浮動小数点演算の性能を倍にする、2-way SIMD(Single Instruction, Multiple Data)型のFP16を実装した。この機能によって、GP100のFP16のピーク性能は、FP32(32-bit単精度)浮動小数点演算の2倍になった。

GP100とGP104のスペック比較(PDF版はこちら)
GP100のパックドFP16(PDF版はこちら)

 しかし、GP100よりも後に開発されたはずのGP104には、この2-wayパックドFP16は実装されていない。GP104のFP16性能はFP32と同様だ。ところが、同じ2-wayパックドFP16は、Tegra系GPUには実装される。Tegra版のMaxwellコアから実装されており、新しいTegraのPascalコアでも継承される。「我々はPX2(Tegraベースの自動車向け組み込みボード)では、GP100のものと似たような(FP16)命令セットを導入する」とNVIDIAのAlben氏は語る。

 つまり、NVIDIAのGPU系列では、GPUコンピューティングとモバイル/組み込みの両市場向けの製品にはパックドFP16を実装して、FP16性能をブーストする。しかし、PCグラフィックス向けの分野ではFP16はブーストされない。単純に、組み込み→PCグラフィックス→GPUコンピューティングと、コンピューティング機能が強化されるのではなく、市場によって異なる実装となっていることが分かる。

 まず、GPUコンピューティングのGP100でパックドFP16がサポートされたのは、ディープラーニングのためだ。「GP100は、ディープラーニングのトレーニングに使われる製品だ。そのため、ディープラーニングで重要となる半精度浮動小数点演算の性能を高める必要があった」とAlben氏は語る。

 ディープラーニングでは、膨大なコンボリューショナルニューラルネットワークの演算を高速化するため、データの量を抑える方向に向かっている。FP16でも十分な精度が得られるというのが現在の共通認識となっており、そのためFP16が多用されている。GP100は、こうした流れに対応するために、FP16を倍性能にブーストした。

 それに対して、PCゲーミングのグラフィックスでは、FP16は過去のものとなっているとNVIDIAは見る。ピクセルパイプでもFP32単精度が標準となっているため、コストをかけて実装する必要がないと判断したようだ。「半精度浮動小数点演算はPCゲーミングでは重要ではないと判断した。ローエンドのゲームですら、単精度以上の精度を前提としているからだ。GeForceに実装しなかったのはそのためだ」(Alben氏)。

組み込み向けのTegraでもFP16半精度を強化

 ところが、モバイルや組み込みとなると話が違ってくる。こうした分野では、メモリ帯域やオフチップインターフェイスの電力消費を抑えるため、FP16が依然として使われている。そこに向けたTegraでは「OpenGL ESでも低精度がサポートされているように、FP16の性能が必要だと判断した」(Alben氏)という。これはモバイル系GPUに共通した認識で、Imagination TechnologiesのPowerVR Series6(Rogue)も、当初はFP16のパスを作らなかったが、現在はFP16はFP32の倍の性能となっている。

 また、組み込みでのFP16の強化は、組み込みではディープラーニングが重要という側面がある。ディープラーニングを使った認識処理に使われるケースが今後増えることが予想されるからだ。ディープラーニングは、膨大なコンピューティングリソースで行なう「トレーニング(training)」フェイズでニューラルネットワークモデルを構築。そのモデルを使って、車載などの機器で認識を行なう「推論(inference)」フェイズを実現する。トレーニングはデータセンターで行なうが、推論は組み込みデバイスで行なう。推論も、それなりのデータ量になるため、組み込みGPUでもFP16半精度が有効となる。

ディープラーニングの2つのフェイズ(PDF版はこちら)

 NVIDIAはこのように、GPUによって、演算パスのマイクロアーキテクチャも変更している。ただし、プログラム性での互換性は維持しているとNVIDIAは強調する。例えば、GP100では、FP64(64-bit倍精度)浮動小数点演算はFP32の2分の1と、高い性能比率となっている。それに対してGP104では、FP64はFP32の32分の1の性能だが、それでも命令セットレベルの互換性は保たれている。

 FP16も、コンパイラレベルでは保たれてるという。NVIDIA GPUは、SIMT(Single Instruction, Multiple Thread)アーキテクチャで、32-wayのスレッドが、それぞれマスクレジスタによるプレディケーションによって擬似的に分岐しているように扱うことができる。だが、パックドFP16の部分はプレディケーションは適用されない。2個のFP16演算は同じスレッドの内部となる。スレッドの命令ストリームからFP16をコンパイル時にパックする使い方が一般的だと言う。

GP104にだけ加えられているフィーチャ

 グラフィックス機能では、GP100に対してGP104の方が進んでいる。GP104には、サイマルテニアスマルチプロジェクション、グラフィックスプリエンプション、アンシンクロナスコンピューティング、ダイナミックロードバランシングの新機能が搭載されている。いずれも、グラフィックス機能を拡張させたり、グラフィックスとコンピューティングの2つの処理を混在させる場合に重要となる機能だ。これらの違いは、製品市場毎の特殊化でもあるが、開発時期の差も影響しているという。

サイマルテニアスマルチプロジェクションはGP104で初めて実装(PDF版はこちら)
グラフィックスタスクとコンピュートタスクのダイナミックロードバランシングはGP104だけ(PDF版はこちら)
グラフィックスプリエンプションもGP100にない機能(PDF版はこちら)

 「サイマルテニアスマルチプロジェクションをGP100で実装されていないのは、単純にGP100の方が先に開発されたという事情もある。我々は、通常、GPUの機能をできる限り同一に近く保とうとしている。しかし、サイマルテニアスマルチプロジェクションのケースでは、開発時期の差もあり、GP100には実装できなかった」(Alben氏)。

 サイマルテニアスマルチプロジェクションは、アプリケーションの開発に大きく影響する機能であるため、将来のハイエンドGPUではサポートされると見られる。

 メモリについてもGPUコンピューティングのGP100がHBM2、グラフィックスのGP104がGDDR5Xと、分かれた。これは経済性のためだ。

 「注意して欲しいのは、我々が両方(HBM系とGDDR系)のメモリ技術を望んでおり、その両方で最新技術を使おうとしていることだ。GDDR5Xは、GDDR5の自然な進化であり、そのために経済的に効率の高いメモリとなっている。それに対して、HBM2は経済性では及ばないが、最高のメモリ帯域を実現してくれる。HPCの世界では、我々はできる限り最高の技術を提供しようとしている。そのため、HBM系メモリを使いたいと考えている」(Alben氏)。

 HBM系メモリは、DRAM側にシリコン貫通ビア(TSV:Through Silicon Via)技術が必要で、加えてGPUダイとDRAMスタックの下にシリコンインタポーザを設置する必要がある。アセンブリも含めて製造コストが相対的に高い。GDDR5Xも実装が大変な技術だが、HBM2に比べるとコスト面では安くつく。HBM2で得られる帯域と省電力を、コストとはかりにかけると、ハイミドルGPU以下の製品はGDDR5Xに落ち着いたということだろう。

DRAMの帯域と転送レート(PDF版はこちら)

 インターフェイスではNVLinkもGP100だけの機能だ。NVIDIAは、GP104にSLI機能を持たせてチップ間コネクタのSLIブリッジも刷新した。しかし、SLIのインターフェイスにNVLinkは採用しなかった。Alben氏は「NVLinkでは、膨大なチップ間帯域を得ることができる。しかし、SLIブリッジでは、そのまでの帯域は必要としない」と説明する。もちろん、非常に高速インターフェイスのNVLinkをブリッジに使うこと自体が難しいという事情もある。

(後藤 弘茂 (Hiroshige Goto)E-mail