このエントリは「Microsoft Azure Advent Calendar 2016」の8日目です。
こんにちは、エヌビディアの佐々木です。
ついに、とうとう、N シリーズが GA しましたね。いやー、待った待った。
「Azure N シリーズの一般提供を 12 月 1 日から開始」
NVIDIA のブログでも紹介していますよ!
「The GPU-Cloud Era – Powered by Microsoft Azure N-Series」
というわけで、せっかくGAしたNシリーズをちょっと試してみようと思ったのですが、すでに以前こんなのを書いていました。
「Azure NシリーズでNVIDIA DIGITSをサクッと動かす」
というわけで今回はちょっと趣向を変えて、N シリーズに搭載されている GPU を簡単に説明してみたいと思います。
Azure N シリーズ と NVIDIA GPU
皆さんご存じの通り、Azure の N シリーズには 2 種類あります。
「今まであまり GPU に縁がなかったけれど、N シリーズを契機にちょっと興味を持った」という方は、ひょっとするとこの表を見て 「ああ、"M"xx ってのは可視化用 GPU で、"K"xx ってのは演算用 GPU なのね」 と思ったかもしれません。
違うんです!ここでちょっと、NVIDIA の GPU 製品ラインナップについて整理したいと思います。
NVIDIA GPU 製品ライン
(組み込みや自動車用はいったん置いておいて) PC やワークステーション、サーバーに搭載される NVIDIA GPU は次の 3 種類に分かれます。
-
GeForce
- ご家庭用の GPU です。PC ゲームを楽しむ方にはおなじみですね。
-
Quadro
- 「プロフェッショナル ビジュアライゼーション」向けです。CAD ワークステーションや、最近では VR 用にもよく使われます。
-
Tesla
- サーバー及びデータセンター向けで、厳しい検査に合格したものだけが出荷されます。
- 長時間の安定運用を実現するために、ECCメモリや、ダイナミックページリタイアメント(不良メモリを自動的に除外)など、Tesla 独自の機能が盛り込まれています。
- エンタープライズレベルのサポート体制が整っています。
というわけで、Azure に採用されているのはデータセンター向けの Tesla です。(Titan X を含む GeForce 系 はデータセンターでの利用に向きませんし保証もありません)
次に「K80」とか「M60」という名前の意味を解説しましょう。
アーキテクチャの世代
K80 の "K" や M60 の "M" は、GPU アーキテクチャの世代を表しています。K は Kepler で M は Maxwell です。NVIDIA の GPU は、各世代のアーキテクチャに偉大な科学者の名前を戴いているのです。
- Tesla - 2007 年
- Fermi - 2009 年
- Kepler - 2012 年 ← NC シリーズの Tesla K80
- Maxwell - 2014 年 ← NV シリーズの Tesla M60
- Pascal - 2016 年 ← これが最新。製品としては Tesla P100/P40, Quadro P6000/P5000, GeForce 1080/1070/1060 等がこの世代
- Volta - ご期待ください!
ちょっとややこしいのですが、"Tesla" はアーキテクチャの名称でもあり、同時にデータセンター向け GPU の製品ラインの名前でもあるわけです。例えば "Tesla M60" というのは、「Maxwell 世代の Tesla」で、Tesla K80 は「Kepler 世代の Tesla」です。
なぜ NC シリーズは K80 なのか?
ここで一つ疑問がわきませんか? 最近本格的な出荷が始まったばかりの Pascal 世代 GPU が Azure の N シリーズに間に合わなかったのはわかるにせよ、Pascal から見て 2 つ前の Kepler 世代である K80 (2014 年発売) をなぜ、NC シリーズは搭載しているのでしょうか?イマサラ感半端ない!と思われても無理はありません。
しかし、これにはちゃんと理由があります。ポイントは「倍精度浮動小数点演算性能」です。
K80 はガチ HPC 向けの GPU なので、単精度だけでなく倍精度の演算も得意で、その理論ピーク性能は以下の通り。
- 単精度で 8.73 テラフロップス
- 倍精度で 2.91 テラフロップス
Kepler では倍精度性能が単精度の 1/3 出るのです。
しかし、その次の Maxwell 世代 GPU は、ディープラーニング等での利用にフォーカスし、単精度演算を重視した構成になっています。そのため、倍精度の性能は単精度の 1/32 しか出ません。これでは倍精度演算が必須の HPC 用途には適さないため、NC シリーズは Maxwell ではなく Kepler 世代の K80 を搭載しているのです。つまり、K80 は Maxwell より一世代前であるにもかかわらず、 HPC 分野では「最新」の GPU だったわけです。
そう、今年 P100 が出るまではね。
Pascal 世代の最強 GPU - Tesla P100
(まだ Azure には導入されていないものの) 今年発表された Tesla P100 は、単精度も倍精度もイケて、さらに半精度(FP16)演算にも最適化されている万能の GPU です。その理論ピーク性能は次の通り。(単位: テラフロップス)
- 倍精度 (FP64): 5.3
- 単精度 (FP32): 10.6
- 半精度 (FP16): 21.2
Pascal では、倍精度は単精度のちょうど半分出るようになりました。そして、K80 との比較ではもう一つポイントがあります。
K80 は、実は二つの "GK210" という GPU を束ねた構成になっており、メモリも二つの GK210 がそれぞれ持っています。OS 上では二つの独立した GPU として認識され、つまり K80 の性能を完全に引き出すにはアプリケーションがマルチ GPU に対応している必要があります。
一方、P100 は "GP100" という GPU が一つだけです。仮にマルチ GPU に対応していないアプリケーションでも、単精度で 10.6TFLOPS という性能を生かすことができます。
この他、P100 は、HBM2 という新しいタイプのメモリで帯域が大幅に増えていたり(K80: 480GB/s, P100: 720GB/s)、NVLink という新しいインターコネクトで、 GPU を PCIe より高速に接続したりできます。
というわけで、「N シリーズ v2」は Tesla P100 を搭載してくれると良いなー!と期待しております。楽しみです!
関連情報
- Azure N シリーズの一般提供を 12 月 1 日から開始
- The GPU-Cloud Era – Powered by Microsoft Azure N-Series
- NVIDIA と Microsoft、協力して AI を加速
- SC16 NVIDIA NEWS - SC16 での GPU 関連情報をまとめた瓦版
- TESLA M60 - NV シリーズの GPU
- NVIDIA GRID - NV シリーズで利用可能な GPU 仮想化テクノロジ
- TESLA K80 - NC シリーズの GPU
- TESLA P100 - Pascal 世代のフラッグシップ GPU
- TESLA P100 WHITE PAPER - P100 のアーキテクチャ詳細解説
- NVIDIA DGX-1 - P100 を 8 基搭載したサーバー
さて、次回のアドベントカレンダーは…
Microsoft Azure Advent Calendar 2016
明日は @reiji1020 さんです。よろしくお願いします!