Should I Buy GPGPUs or Blue Gene?

中国のシステムがTOP500で一位になる見込みだ。これはアメリカのある部分に衝撃を与えるであろうが、それよりも本質的にに重要な部分がここからは見えてくる。
Warwick大学による論文(PDF)が私の手元にある。この論文はSC10で発表される物だ。その他、他所で賞を獲ったものだ。論文のタイトル:「Performance Analysis of a Hybrid MPI/CUDA Implementation of the NAS-LU Benchmark」。この論文は本質的には、あるHPCの組織がGPUベースのプラットフォームを選択するか、Blue Geneのそれを選択すべきか、という問題を提起している。
スパコンを調達する際、多くの要素を考慮に入れる。パフォーマンス、可用性、ソフトウェア。将来性についてはあまり考慮されない。今後の発展を楽観視するのは危険であるというのがある。しかしながら、HPCの業界では、革新的なアーキテクチャが出現しながら業界が進むものである、という面はある。
コンピュータの評価には色々な手法があるのは周知の通りだ。
Warwickの手法はその中でも、おもしろい要素を含んだ評価方法だ。
ベンチマークと性能評価を通じて、Warwickのチームは、これまで潜んでいたいくつかの技術的問題を示すと共に、大規模なスケールでのスパコン利用、GPUまたはB/Gでのそれの性能を見積もっている。
彼らが何を示したかを紹介する前に、彼らの狙いが何であるかを明確にする。2015年-18年のターゲット性能となる、エクサスケールの演算システム構築が抱える問題を議論した後、流体のシミュレーション(波面の計算。処理はパイプライン化されている)の性能比較を行っている。比較した環境はAMDCPUとGPU、Infiniband構成のクラスタ、B/Gで実行している。
この比較では、他のメインストリームとなっているベンダのそれは紹介していない。例えば、IBM, Cray, HP, SGI, NEC, Fujitsuなどは。読者は、この論文が何を目指しているかを読み取ることが出来るだろう。
TOP500の一位争いはGPUとB/Gのそれとなっており、これからもそれが続くのは容易に予測できる。
勿論、LLNLやOLCFのような巨大な機関はGPUとB/G両方を買ってしまうかもしれないが、どちらか、となった場合、さてどちらを買うべきなのだろうか?

何がアーキテクチャの違いとなっているのか?

B/Gは、現在は4世代目で、その基本コンセプトは90年代のある特定のアプリでペタフロップスの性能を以下bにして出すか、という試みから来た。それに汎用性をIBMは持たせた。
B/Gのアプローチは、シンプルな構造の低クロックのコアを大量に低レイテンシのインターコネクトで接続することだ。クロックが低く、構造がシンプルなので、消費電力が少ない。低電力且つ省スペースを実現するために、B/G/Pでは一コア辺り1GBのメモリまでの搭載となっている。
B/Gのアーキテクチャは、高い評価を得ている。
それに対して、GPUベースのシステムは、ハイエンドのグラフィックカードの技術の発展から派生したものだ。これは、歴史は何かを変えながら進んでいく例、ともとれる。グラフィックカードは経済性に優れ、低コストでコンピュータシステムを構築する可能性を持っている。演算の手法としては、(計算コスト的に)軽量なスレッドを大量に同じ命令の下で一斉に走らせる、というものである。一斉に同じ方向にスレッドが動くから意味があるのであって、スレッド間で命令が異なるようだと無駄な計算コストが大量に生じる、という欠点がある。ある種、ベクトルプロセッサと似た方針と言える。近年のGPUクラスタはスケーラビリティーが悪い。また、ノード間がInfinibandで接続され、GPU間でデータをやりとりするには、GPUからCPUに通信した上で、さらに他のCPUと通信してGPUにデータを送るのが一般的。
この、"二重のロス"は、GPU間の通信コストを大きくしてしまう。それに対して、B/Gは通信レイテンシが小さく、通信コストが小さく、スケーラビリティーが高い。
ハードウェアのみならず、ソフトウェアからもGPU-B/Gの比較では考慮すべき。どちらのシステムでも、汎用CPUに比べて開発コストが大きい。
開発と維持のコストはあまりに大きいので、どのアーキテクチャを選ぶか判断するときに、考慮に入れるべきだ。

現在のB/GとGPUベースのシステムから、何が見えてくる?

B/GもGPUベースのそれもTOP500に大量にランクインしている。これらからわかることは何か。
Warwick大の論文はこの問いに対して、
彼らの論文は、いくつかの注目すべき結果を示している。

1.GPUは少ないチップ数でOK、しかし電力が大きい
2.GPUは理論性能で大、しかし実効性能が出るかは要注意
3.GPUはスケーラビリティーが良くない。そんため巨大なシステムでGPUが有効かどうかは検討必要
4.GPUシングルでの性能では、他を圧倒する。NAS-LUでの性能は、汎用CPUの7倍となった。

チップ数(コア数?読み切れていない)を基準にして考えると、比較的小規模なシステムではGPUのほうがB/Gに比べて性能比で圧倒する。システムの規模が大きくなるにつれて、チップ数(コア数?)基準の性能比が小さくなってくる。電力という視点からは、巨大な規模では電力の面でB/Gが優位。

今後どうなる?

ベクトル化されたcodeをGPUで、または高度に並列化されたcodeをB/Gで、か。
この論文の内容は特定のアプリケーションでの話のようだが、それはたいした問題ではない。
B/Gで性能を出すcodeを書くには。GPUで性能を出すcodeを書くには。
GPU、B/Gに何が今後起こるのか?どう使われるのか?それはサイズによる。
私の視点では、この論文は、HPC業界がエクサスケールを考える際の重要な議論の材料を提供したと思っている。