ついに GA した N シリーズとその GPU の話

  • 11
    いいね
  • 3
    コメント

このエントリは「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 種類あります。
Azure_N.png

「今まであまり 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 を搭載してくれると良いなー!と期待しております。楽しみです!

関連情報

さて、次回のアドベントカレンダーは…

Microsoft Azure Advent Calendar 2016
明日は @reiji1020 さんです。よろしくお願いします!