米NVIDIAが2017年5月9日から開催した「GPU Technology Conference(GTC) 2017」では、多くの発表があった。前半に続き、同社の戦略について見ていく。

 今回発表されたVoltaアーキテクチャを始め、NVIDIAのGPUは、32スレッド(WARP)を4つ同時に実行できるSM(Streaming Multiprocessor)を多数配置し、多数のスレッドを同時実行することで、高い性能を得ている。

 基本的な構成は、前世代のPascalと似ているが、SMの数、SMの機能に違いがある。論理的な性能比較は(写真1)のようになる。

写真1●Pascal(P100)とVolta(V100)の比較。SM数やキャッシュ、NVLinkやメモリ接続の高速化に加え、Tensor Coreによる高速化が加わる
写真1●Pascal(P100)とVolta(V100)の比較。SM数やキャッシュ、NVLinkやメモリ接続の高速化に加え、Tensor Coreによる高速化が加わる
(撮影:塩田 紳二、以下同じ)
[画像のクリックで拡大表示]

 Voltaには、SMが80個ある(写真2)。実際には、84個のSMがあるが、製造上の問題で動作しないSMがあり、これらをすべて不良品としてしまうと歩留まりが悪くなるため、84個のうち80個が良品であれば、出荷できるようにしてある。Pascalは56個だっだ。

写真2●中央にある青線の上下にある小さなブロックがSMで、レイアウト上は84個(14×6=84)ある計算。スペックとしては80個となる
写真2●中央にある青線の上下にある小さなブロックがSMで、レイアウト上は84個(14×6=84)ある計算。スペックとしては80個となる
[画像のクリックで拡大表示]

 VoltaのSMは、写真3のような構造になっていて、大きく4つのブロックに分かれ、それぞれで32スレッドのWARPを実行できる。Pascalは2ブロックで、各ブロックは2つのWARPを実行する。このためSMあたりのWARP実行数は同一だが、Pascalでは、2つのWARPが1つのブロック内にある資源を共有するため、実行性能はVoltaよりも低くなる。

写真3●SMの内部は4つのブロックに分かれ、各ブロックが32スレッドを並列に実行できる
写真3●SMの内部は4つのブロックに分かれ、各ブロックが32スレッドを並列に実行できる
[画像のクリックで拡大表示]

 各ブロックには、32個の単精度浮動小数点ユニット、16個の倍精度浮動小数点ユニット、2個のTensor Coreがある。各ブロックで実行される32スレッドは、単精度浮動小数点ならば、前スレッドが1クロックで演算を処理でき、倍精度浮動小数点ならば2クロックで演算が行える。