HPC市場で急速にプレゼンスを高めるNVIDIAのGPUコンピューティング戦略


 HPC(High Performance Computing)市場におけるNVIDIAの存在感が徐々に高まりつつある。2010年6月に公開された最新のTOP500の第2位に、中国の国立スーパーコンピューターセンターのTesla搭載サーバーが入るなどしており、徐々にHPCの演算に利用する半導体としての認知度が上がりつつある。

 NVIDIAのHPC向けのGPUであるTeslaは、これまではどちらかと言えば教育分野で大きな注目を集めてきたが、米国では石油会社やCFD向けのビジネス向けのソリューションとして注目を集めつつあり、Dell、IBM、CRAYなどのOEMベンダ各社もTeslaを搭載した製品をリリースして市場の拡大を狙っている。

プログラマーに統合的な環境環境を提供しているNVIDIAのCUDA

 本誌の読者にとってはGPU(Graphics Processing Unit)と言えば、その名前の通り2Dや3Dのグラフィックスを表示するための半導体というイメージではないだろうか。それは、ここ数年で大きく変わりつつある。NVIDIAが数年前からCUDAと呼ばれるGPUコンピューティングの環境を整えてきたからだ。

 GPUコンピューティングとは、その文字通りGPUを利用して汎用の演算をさせる仕組みのことだ。現在のGPUは、x86プロセッサなどに比べて非常にシンプルなコアを内蔵しており、大量のデータを並列処理するような演算に向いた仕組みになっている。例えば、NVIDIAの最新GPUであるTesla C2070/2050は448個のプロセッサコアを内蔵しており、クアッドや6コアなどのx86プロセッサに比べるとその多さは比べるまでもない。

NVIDIAのCUDAの構成要素。プログラマーはC/C++などの書き慣れた言語を利用できるほか、多くのライブラリなどを利用してより手軽にプログラミングできる(出典:NVIDIA)

 そうしたGPUコンピューティングのソリューションとしてNVIDIAはCUDAと呼ばれる一種の開発環境をソフトウェア開発者に対して提供している。CUDAにおいてNVIDIAは、プログラマーに対してC/C++やFortranなど、これまで既存アーキテクチャの開発環境で慣れ親しんできた言語を利用した開発環境を提供している。プログラマーはx86プロセッサ向けソフトウェアを開発するのとほぼ同じ感覚でCUDAのソフトウェアを開発することができる。CUDAの開発環境はNVIDIAから無償で提供されており、プログラマーはVisual C++などの慣れた開発ツールにプラグインを組み込んで利用することが可能になっている。

 かつ、CUDAでは、アプリケーションプロセッサに依存しない仕組みを採用している。CUDAのアプリケーションの起動やアプリケーションそのものの操作は、GPUとは別のアプリケーションプロセッサを利用し、演算のみをGPUで行う仕組みとなっている。現在のところ、対応しているアプリケーションプロセッサは、x86プロセッサのみだが、近い将来にはARMにも対応する予定だ(NVIDIAは、Tegraと呼ばれるARMベースのモバイル向けSoCを発売しており、このTegraでも将来的にCUDAに対応する計画があることを明らかにしている)。

 NVIDIAが2007年にCUDAの構想を明らかにして、実際に開発環境などもそろってきたことで、徐々に対応ソフトウェアも増えつつある。NVIDIAが9月に開催したGPUコンピューティングの開発者向けのイベントであるGTC(GPU Technology Conference)では、CUDAに対応したHPC向けのソフトウェアがいくつか発表された。

 GTCで発表された新しいCUDA対応のソフトウェアは、数値解析ソフトウェアの"MATLAB"、生体分子のためのモデリングや分子力学などを演算する"Amber"、構造解析シミュレーションソフトウェアの"ANSYS"などで、いずれもHPCの分野では定番と言えるソフトウェアだ。これらのソフトウェアが対応することにより、自社でソフトウェアを開発するリソースがない企業でも、ソフトウェアを購入してくることでGPUを利用した演算が可能になるのだ。


GTCのファン氏の講演で示されたCUDAを巡る環境の変化。SDKのダウンロードに見られるように興味を持つプログラマーが増えている(出典:NVIDIA)GTCにおける、3ds MAXのデモ。CUDAに対応することで、レイトレーシング(影などのシミュレーション)をより高速に演算することができるようになるGTCにはANSYSのグローバルビジネス開発担当副社長のS.スッバイヤー博士(左)が登場し、ANSYSのCUDA対応を説明した

 

Teslaを搭載したHPCサーバーが続々と登場

Tesla T20シリーズのスペック(出典:NVIDIA)
NVIDIAのTesla S2050は、チャネル向けの1Uブレードサーバー

 GTCではソフトウェアだけでなく、ハードウェアの面でも大きな発表が行われた。NVIDIAはTeslaの最新製品であるTesla T20シリーズの提供形態として3つのソリューションを用意している。

(1)Tesla M2050/2070
(2)Tesla C2050/2070
(3)Tesla S2050

基本的に(1)と(2)のM2050/2070、C2050/2070の2製品はGPUそのもののスペックは同じで、性能もまったく同じものだ。2つの違いは冷却機構で、前者がパッシブ(ファン無し)であるのに対して、後者はアクティブ(ファン有り)となっている。こうしたこともあり、前者の方が後者に比べてTDP(熱設計消費電力)がやや低めに設定されているほか、M2050はOEM向け専用とされており、ホワイトボックスメーカーやカード単体での販売は行われない。

 これに対して、S2050はブレードサーバーの形になっており、M2050が4つ入った1Uのラックマウントシステムになっている。これまでは主にS2050、C2050/2070などが主に流通の中心になっていたが、GTCでは新たに大手OEMメーカーからのM2050/2070を搭載した製品が発表された。

 IBMは、同社のブレードサーバー「BladeCenter」向けに、C2050/2070を1つ搭載できる拡張ボックスと、BladeCenter LS42のシャーシにM2050/C2070のカードを2枚実装できるシステムをGTCで展示した。現時点では両製品とも正式には発表されていないが、今後正式な製品として発表予定であるという。

IBMのBladeCenter LS42のシャシーにM2050/C2070のカードを2枚実装した2UブレードサーバーIBMのBladeCenter用Tesla拡張ボックス

 また、別記事でも紹介されているように、DellはPowerEdge C410xというPowerEdge Cシリーズ用の拡張ボックスをGTCで発表した。これにより、最大で8つまでM2050/2070を追加することができるようになる。


Tesla M2050/2070が搭載可能な1UラックサーバーのDell PowerEdge M610xDellのPowerEdge C410xは、8枚のTeslaをサーバーに接続させることができる拡張ボックスだ

 CRAYが発表したのは、XE6シリーズという同社のHPCサーバーに対して追加できるTesla T20シリーズベースのブレードの開発意向表明で、将来的には、ほかの製品にも含めてTeslaをオプションとして提供する計画があるという。

 このように、確実にHPC市場においてNVIDIAのプレゼンスは高まりつつある。特に米国では、石油メジャーや天気予報、CFDなどのエリアにおいて、GPUコンピューティングの期待が高まっており、OEMメーカーによってはすでに納入先が決定しているなどビジネスも好調に推移しているのだ。

Teslaを小型のカードに搭載した、T-Platformsのマザーボード。近い将来にラックマウントのオプションとして追加できるように設計したのだという

 

ほかのGPUメーカーに大きく先行するNVIDIA、HPCのエリアでは先行者利益を享受

 世界的に見ると、GPUのメーカーとはほぼ3つのメーカーに集約される。それが今回紹介しているNVIDIA、そしてIntel、AMDの3社だ。

 市場シェアが最も多いのはIntelだが、これはPC用のチップセットやCPUに統合されている統合型GPU(iGPU)が単体型より市場シェアが大きいためで、IntelはNVIDIAやAMDのように単体GPU(dGPU)の製品ラインアップを持っていない。

 より正確に言うのであれば、Intelはもともと単体GPUの計画として、開発コードネームLarrabee(ララビー)と呼ばれる製品を計画していたのだが、今年の初めにこの製品に製品化を見送ることを決定している。第2世代、第3世代のLarrabeeの計画は依然として進行中であると同社は説明しているが、現時点では同社製品としても忘れられた存在になっており、その位置づけは非常に微妙になっている。

 dGPUでNVIDIAと激しく市場を争うAMDだが、こちらもGPUコンピューティングへの参入という意味では出遅れている。AMDはGPUコンピューティング市場において、標準規格であるOpenCLに対応したソフトウェアを戦略の中心に据えている。OpenCLはNVIDIAのGPUでも利用可能であるため、まさに業界標準の規格であると言ってよいのだが、NVIDIAは、CUDAをOpenCLの規定より前に発表。実際の製品としても先行したことで、多くのプログラマーは、GPUコンピューティングを利用する開発環境として、CUDAに慣れ親しんでしまったという先行者メリットを、NVIDIAが享受しているのが現状となっている。特に、HPCの市場ではその傾向がより強く、まさにCUDA一色というのが現状となっている。

 

Fermiの後継としてリリースされるKepler、Maxwellで電力あたりの性能を上げていく

GTCでNVIDIA ジェン・セン・ファンCEOが公開したロードマップ(出典:NVIDIA)

 NVIDIAとしてはそうした現状をさらに生かすべく、ハードウェアの方も拡張を続けていく。NVIDIAのジェン・セン・ファンCEOは、GTCの基調講演において同社の長期的なロードマップを公開して注目を集めた。

 ファン氏によれば、現行製品の開発コードネームFermi(ファーミ)の後継として、2011年に開発コードネームKepler(ケプラー)を、そして2013年にはMaxwell(マックスウェル)と呼ばれる製品を投入することになる。ファン氏のスライドでは、消費電力あたりの倍精度浮動小数点演算能力がFermiの前世代のTesla(開発コードネーム、ブランドのTeslaではない、ややこしい話だが…)に比較して、Keplerで5倍近く、Maxwellで15倍近くになると示された。

 このロードマップを理解するにはいくつかのことを知っておく必要がある。まず、NVIDIAのTeslaの現行製品についてだ。現在までTeslaには大きく分けて3つの世代の製品が存在している。
Teslaの各世代(NVIDIAの資料より筆者作成)

開発コードネーム製品名プロセッサコア数プロセッサコア周波数単精度浮動小数点性能倍精度浮動小数点性能ビデオメモリTDP
G80C8701281.35GHz512GFLOPS-800MHz/1.5GB170W
TeslaC10602401.296GHz933GFLOPS78GFLOPS800MHz/4GB187.8W
FermiC20504481.15GHz1.03TFLOPS515GFLOPS1.5GHz/3GB238W

 初代のTeslaとなったのが、開発コードネームG80でコンシューマ向けにはGeForce 8800 GTXとして出された製品のTesla版となる。この世代では、HPC市場で重要視される倍精度の浮動小数点演算に対応していなかったため、文字通りパイロット版としての役割が与えられていた。これに対して第2世代となるが、開発コードネームTesla(コンシューマ向け版はGT100、GeForce GTX 200シリーズ)で知られる製品で、この世代から倍精度の浮動小数点演算に対応するようになった(Tesla T10シリーズと呼ばれる)。そして第3世代が現行製品で、開発コードネームFermi(ファーミ)で開発された製品になり、C2050/2070などの先ほど紹介したT20シリーズとなる。

 ファンCEOが説明したのは、開発コードネームTesla(Tesla T10シリーズ)を1とした時の消費電力あたりの倍精度浮動小数点演算のスケールとなる。それがFermi(Tesla T20シリーズ)が2倍、Keplerで約5倍、Maxwellで約15倍という性能になるということだ。

 ただし、計算してみるとわかるのだが、C1060からFermiの性能あたりの倍精度浮動小数点演算能力は約5倍になるため、このスケール(TeslaからFermiが倍になる)とは合致しないことがわかる(もっともNVIDIAはこれをアーキテクチャの拡張性を含んだと説明しており、必ずしも製品レベルのスケールとは一致しないと説明している)。そうした意味では、スケールそのものよりも、NVIDIAがどれだけの性能アップを目指しているかを示しているグラフぐらいに考えておくのが正解だろう。

 なお、NVIDIAはKeplerの前にも、中間世代となるTeslaを投入する可能性もある。というのも、OEMメーカー筋の情報によれば、NVIDIAはコンシューマ向けにGF110を投入する計画を立てているという。GF110は、Fermiの最初の世代であるGF100(Tesla T20シリーズに利用されている)の後継となる製品で、プロセッサコアが増やされるなどダイそのものにも手が入れられており、それをベースにしたTeslaが登場すれば、若干のパフォーマンスアップが期待できるだろう。

課題も残るが、今後の強力なロードマップでそれを解決し本格普及を目指すTesla

 このようにHPC市場では成功を収めつつあるCUDAとTeslaだが、今後解決していかないといけない課題もある。

 1つにはGPUとプロセッサ、メインメモリ間を結ぶバスとなるPCI Expressの帯域幅だ。複数のGPUを搭載するシステムの場合、PCI Expressのスイッチを利用して接続することになるが、大本のCPUやメモリに接続するバスはPCI Express Gen2 16レーンの帯域幅である8GB/秒にしかならないので、複数のGPU間でこれを分けあうことになる。GPUの数が少ない場合には問題ないが、GPUの数が増えると十分ではなくなってくる。

 もう1つは消費電力あたりの性能の改善だ。NVIDIAは盛んにGPUコンピューティングのメリットを、特に性能面で訴えている。しかし、意外とアピールしていないのが、消費電力あたりの性能だ。現代のデータセンターには環境面への配慮が欠かせないこともあり、単なる処理能力を向上させるだけでなく、消費電力あたりの性能をいかに改善するかがデータセンターを設計する上での大きな条件となりつつある。HPCサーバーのデータセンターを作るとして、それをx86プロセッサベースのシステムで作るのか、GPUベースで作るのか判断したいところだ。

 ところが、NVIDIAはそうしたデータやホワイトペーパーなどを提供していない。実際、Teslaのピーク時消費電力は240W近くにも達するので、クアッドコアCPU(130W)の1.85倍となる。つまり、性能が1.85倍であったとしても、消費電力あたりの性能はイーブンということになる(しかもTeslaは単体では演算に利用できず、必ずCPUが必要になる)。あるOEMメーカーの関係者によれば、現時点では消費電力あたりの性能という意味では、x86プロセッサベースのシステムでも、x86プロセッサ+GPUのシステムでもさほど大きな違いはないという結果がでているという。このあたりは、今後Teslaベースのシステムが普及するにつれて、検証されていくことになるだろう。

 もちろん、NVIDIAもこのあたりの事情は理解しているようで、次世代の製品(Kepler)では改善されていく可能性が高い。例えば、Keplerが登場する2011年~2012年にかけてはPCI Express 3.0が普及する時期に当たるため、KeplerがPCI Express 3.0に対応する可能性が高い。また、KeplerはTSMCの28nmプロセスルールを利用して製造される。これは現在のFermiで利用されている40nmプロセスルールよりも微細化されており、消費電力の低下が期待できるだろう。そこに、アーキテクチャの拡張が加わることで、課題である消費電力あたりの性能の改善が実現できる可能性は高いと言えるだろう。ファン氏の示したGPUロードマップが消費電力あたりの性能ベースになっているのは、このあたりを意識したからだと考えることができるのではないだろうか。

 このように、課題もない訳ではないが、HPC分野でNVIDIAが成功するであろうというのは、もはや業界の一致した見方になっている。問題はそれがいつ起こるかなのだが、GTCにおける怒濤の発表を見る限りでは、それが思っているよりも早く起きるという可能性も高いのではないだろうか。

関連情報