プロの世界を垣間見た男(地球シミュレータ見学記・総合性能編)   

2003年6月20日




会社の研修で1週間ほど缶詰になり更新が遅れたことをまずお詫びしておきたい。 それにしても、たるさんに経理中心の研修とは... うちの会社、どこかで人選を間違ってるよな〜。

☆実戦証明済み   
さて、地球シミュレータのシリーズ第三弾は総合性能だ。 まずは基本的なシステム構成を一覧表にまとめてみよう。

システム要素 能力値
地球シミュレータ全体での理論ピーク性能 40TFLOPS
計算ノードの理論ピーク性能 64GFLOPS
プロセッサの理論ピーク性能 8GFLOPS
総計算ノード数 640ノード
総プロセッサ数 5120個
総主記憶容量 10TB
計算ノードの主記憶容量 16GB
ノード間伝送システム 単段クロスバ網
ノード間伝送性能 12.3GB/s(双方向)
1次ストレージシステム ユーザーディスク:230TB
システムディスク:460TB
2次ストレージシステム CTL(カートリッジテープライブラリ):1.5PB

これだけでも大した物だが、これは基本的にカタログスペックだ。 地球シミュレータが世界一の性能を出したことは各所で報道されているが、 どうやらそれだけでは話が終わらないらしい。 地球シミュレータ最大の特徴はカタログスペック外にある。

地球シミュレータの実効性能が世界一であることは以前述べたが、 その実効性能はTOP500で使われているLINPACKベンチマークのデータである。 LINPACKは107万次元の連立一次方程式を解く時間で処理能力を評価している。 前回覇者ASCI Whiteと比べるとその処理能力は約5倍。

しかし、今回、研究者の方にお話しを伺ってわかったことがある。 それは、LINPACKベンチマークは実機のアプリと比較した場合、 スカラパラレル機との差が出にくいということだ。

LINPACKベンチマークはノード間伝送能力が比較的貧弱でも ベンチマークの数値が悪化しないように うまくマスクする方法があるそうで、比較的マスクの難しい AFES(大気大循環シミュレーションプログラム)等と比べた場合、 地球シミュレータの実力を示すベンチマークとしてはLINPACKは やや物足りないそうである。

たとえば、IDCでは今までのベンチマークにバンド幅と ノード間通信能力の評価を付け加えた 新ベンチマークを用意しており、これを使うとASCI Whiteとの差は8.3倍にまで 拡大する。 ( IDCの「現実的スパコンランキング」という記事も参考になる。 ただし2001年11月の記事なので、当時の最速スパコンである CompaqのTerascaleがTOPになってるけど...)

IDC Balanced Rating順位 スーパーコンピュータ Rating値
1位 地球シミュレータ 40478.22
2位 ASCI White 4867.41
3位 LANL 3920.67

実アプリでの性能はアプリごとに異なる。 たとえばSETI@HOMEの様にノード間通信能力が皆無でも全く問題なく、 ノード数にスケーラブルに性能がアップする問題もあれば、 AFES(大気大循環シミュレーションプログラム)のように ノード間ネットワークの処理能力(バンド幅も重要だが、 それ以上に特にレイテンシ短縮が重要らしい。) が高効率化のキモという問題もある。 大気大循環シミュレーションに関してはスカラパラレル機は失速してしまうそうだ。

たとえば、地球シミュレータ出現以前のスパコン界の常識では 「これからは並列性を生かしたスカラパラレル機の時代で、 ベクトルパラレル機は死んだも同然。」 と言われてきた。

しかし、気象関連の実アプリ担当者はスカラパラレルの性能が カタログスペックである事を見抜いており、ヨーロッパの気象関連用途には 「ベクトルパラレル機は死んだも同然」と言われながらも、 ベクトル機が意外に高いシェアを維持していたそうだ。

逆に、アメリカ市場でベクトル機が人気がないのは 国策でスカラパラレル機の採用が推奨されているからだ。 アメリカの気象・気候研究者の間ではベクトル機を使わないと 最先端の研究から取り残されるのでは?と言った焦りがあるらしい。

また、気象予測用でもその傾向はあるが、 特に用途がシミュレーション核実験だったりするとその傾向が強く出る。 そのような軍用用途になると軍事機密の壁があって、 いくら性能が高くてもアメリカ製スパコン以外は採用されないわけだ。 (要するにアメリカ版非関税障壁ですね。)

まあ、そう言った余談はともかく、 説明を頂いた方は通常のベンチマークがカタログスペック寄りの数値を出すことに 問題を感じておられるようで、スーパーコンピュータの能力評価は 実アプリ性能で評価すべきであると言う意味の事を仰っていた。 地球シミュレータは単に世界一というだけではなく、 実戦に強いスパコンなのである。

地球シミュレータの稼働状態を示す大モニタ画面
単にスペック世界一なのではなく、実力は実戦証明済。
カタログスペックだけのマシンとは一線を画す存在である。


信頼性を要求される世界では「Battle Proven」(実戦証明済) という言葉がある。 実戦では予期せぬトラブルが表面化する事が良くあるので カタログスペックだけ高くても採用されないという意味である。

ところが、地球シミュレータの能力は実戦のアプリケーションでこそ 発揮されるものであり、AFES等の結果を見る限り その性能は実戦証明済といえるものだ。 地球シミュレータは乱戦でこそ実力を発揮するタイプである。

☆高性能発揮の秘密は何か?   
最初に地球シミュレータに関するコラムを書いた時、たるさんは 「では、何故地球シミュレータがそれほどの高性能を発揮できたいのであろうか? 開発者に会うことができたら、是非聞いてみたいことだ。 」と書いている。

今回のJAMSTEC訪問で、その解答を地球シミュレータ開発に関わった人物から 直接聞くことが出来たので、これをまとめてみよう。 (ただし、プロレベルでの核心部分は当然極秘事項なので一般論レベルの話である。 もっとも、プロレベルで話されたらこっちが話を理解できないだろうけど...)

技術要素 どうすべきか? 地球シミュレータでの対応
プロセッサ プロセッサ自身が高速である必要がある。
(低速CPUの物量攻撃はダメ)
ベクトル方式の採用
プロセッサ 半導体プロセスの進歩の流れに乗る必要がある ワンチップ化
メモリ 高バンド幅の確保 完全独立併行動作可能なマルチバンク構成
実装技術 高密度かつ低価格の実装 専用ビルトアップ基板の採用
実装技術 高信頼性 ノウハウにより非公開
ネットワーク結合網 ノード内・ノード間の差を出来る限り小さくする 伝送ラインの複数化
(130本束ねている。)
ネットワーク結合網 レイテンシの削減 単段クロスバ方式の採用
並列アーキテクチャ スケーラビリティーの確保 ベクトル方式の採用
単段クロスバ方式の採用
ソフトウエア ベクトル化率・並列化率のアップ 熟練プログラマによるコードの最適化
自動ベクトル化コンパイラの改良

まず、 ベクトル方式単段クロスバ方式メモリ構成、実装技術 については 以前書いたので、それ以外の高性能化の秘密について簡単にまとめてみよう。

☆秘密その1・ワンチップ化   
まず、ワンチップ化について考えてみよう。 地球シミュレータ出現以前のスパコン界はスカラパラレル機全盛であった。 実際、1980年代後半に世界を席巻した日本製スパコン(ベクトル型が主流)は 90年代に入ると影を潜め、ここ数年はアメリカのASCI計画に従って開発された スカラパラレル型がスパコン界を席巻していたのである。 日本製スパコンはそれぞれの年代において、航空宇宙研のNWT・筑波大学のQCDPAX・ 重力シミュレーション専用計算機である東大のGRAPE-5,同6等が 孤軍奮闘するも、いかんせんタマが続かずアメリカ製の席巻を許していた。

スカラパラレル側の論拠は次のようなものである。 「ベクトル機用プロセッサの進化速度とパソコン用CPUの進化速度を グラフに書くと、近い将来トレンドラインがクロスする。 つまり、ベクトルプロセッサには21世紀を担う資格がない。」 これが、「ベクトル型並列スーパーコンピュータは死んだも同然」 と評する 研究報告書の基本的な論拠の一つである。

ところが、ここには一つの大きな誤謬があったのである。 それは、ベクトル方式とスカラ方式(主にパソコン用CPU)では 進化の主原因となる土俵が全く異なるということだ。 (チェスと将棋を比較するようなモノである。両者の優劣を直接比較するなら、 それは同じ土俵に乗っていなければならない。)

そういうことであれば、ベクトル機だってプロセッサをPC用CPUと同じ 土俵(ワンチップ化してCMOSプロセスで造る。)に乗せれば、 同じ進化速度を得られるのではないか?という考え方が出るのは自然なことだ。

この考えに基づいて、ベクトルプロセッサを1チップCMOS化したのが 地球シミュレータというわけである。

たるさんは専門家の話の中から証拠を一つ見つけている。 下記にその根拠を示したので見て頂こう。

スーパーコンピュータ 単体でのプロセッサ性能 チップ数
地球シミュレータ 8GFLOPS 1チップ構成
SX−5 8GFLOPS 32チップ構成
SX−4 2GFLOPS 37チップ構成

さきほど、地球シミュレータ高性能の秘密の一つとして 「プロセッサ自身が高速であること」を上げた。 しかし、地球シミュレータのプロセッサはSX-5で使用されたプロセッサと 比較するとプロセッサ当たりのピーク性能はUPしていない。 (もちろん、実効性能が上がるような工夫は凝らされているハズだが...)

スカラプロセッサと比較すれば勿論高性能なわけだが、旧世代のベクトルプロセッサと 比較すると性能がアップしていないのである。 (SX-4からSX-5ではピーク性能が4倍にアップした事を見ていただければわかる。)

本当ならば、地球シミュレータでもプロセッサ性能を上げたかったはずだが、 それを諦めてまで進化させたい部分があったわけである。 それはワンチップ化である。

今度はチップ数を見て頂こう。 SX-4からSX-5では37チップが32チップまでにしかチップ数が減っていない。 しかし、SX-5から地球シミュレータでは1プロセッサを構成するのに必要な チップ数がなんと1/32にも減っている。 かなりの無理を承知でワンチップ化したのである。

ワンチップ化してCMOSプロセスに乗せてしまえば、スカラCPUの進化速度と 同じ速さで進化が狙えるハズで、こうなれば 「ベクトル型並列スーパーコンピュータは死んだも同然。」と評する 研究報告書の基本的な論拠が一つ失われるわけだ。

☆秘密その2・スケーラビリティーの確保   
では、次にスケーラビリティーの確保について考えてみようか?

実はたるさんは、この見学会での講義でおもしろいグラフを見せて頂いている。 それは、いろいろなスパコンのスケーラビリティーに関するものだ。 ノード数毎の効率の変化を追ったデータである。

もちろん、どんなコンピュータシステムでも完璧なスケーラビリティーという事は あり得ない。地球シミュレータでもプロセッサ数が増えるに従って効率は低下する。

ところが、地球シミュレータでは均一かつ緩やかに低下するのに対し、 スカラパラレル機はプロセッサ数がノード内の共有メモリに接続されている範囲では 緩やかに低下するのだが、これを越えた段階でガクッと低下してしまうのである。 つまり、スカラパラレル方式はネットワーク結合網に何らかの ボトルネックを抱えているのである。

おもしろいのは、米国機でも唯一効率低下が緩やかなスパコンがあって、 調べてみるとこれがクレイのベクトル機!  「ベクトル方式+単段クロスバ方式」がスケーラビリティー確保の 決め手であることがデータ上からもはっきりしたわけだ。

地球シミュレータ最大の特徴はベクトル方式
読者サービス。クリックすると元サイズのデジカメ画像が出ます。
壁紙用に限りご自由にお使いください。(ただし商利用や再配布は禁止)
仕事PC用壁紙として使うと気合入るかも!?


ちなみに、最終的な全プロセッサ使用状態での効率はもちろん 地球シミュレータが一番高い。 (10位以内で80%台は地球シミュレータだけ。下記TOP500の表参照ください。 なお、2位がASCI WhiteからASCI Qになっているが、 2003年5月に最新データで順位が更新されたため。)

TOP500順位 スーパーコンピュータ 理論ピーク性能 実効性能 効率
1位 地球シミュレータ 40.96TFLOPS 35.86TFLOPS 88%
2位 ASCI Q 20.48TFLOPS 13.88TFLOPS 68%
3位 ASCI White 12.00TFLOPS 7.22TFLOPS 60%

以前書いたが、たるさんの考えでは スカラパラレルではノード数が多いが故にクロスバ方式のような高級な結合網を 全面採用できない事が効率低下の最大要因ではないか?と指摘した。 (スカラパラレル機の多くはクロスバ網は一部分しか使われておらず、 全体は別のシンプルな結合網でつながっている場合が多い。) これについては、所員の方から「概ね間違いのない理解に到達しています。」との ありがたいご意見を頂いている。

☆秘密その3・ベクトル化率、並列化率のアップ   
最後の秘密はベクトル化率・並列化率のアップである。 たるさんはソフトウエアの話は苦手とするのだが、頑張って書いてみよう。

まず、ベクトル化率とは、処理のうちベクトル化されている部分の比率のことである。 いくらベクトル方式が高性能とはいっても、ベクトルユニットが使われない コードでは意味がない。 つまり、ベクトル方式の場合はベクトル化率を 如何に高めるかが勝負の分かれ目である。

このコラムを書くに当たって、たるさんのトリ頭を少しでもカバーすべく いろいろな資料を読んで勉強してみたのだが、その中でわかった重要な法則に 「Amdahlの法則」ってのがある。 式的には下記の通りだ。

VECTOR=TSCALOR×((1−α)+α/β)

VECTOR:ベクトルプロセッサの総処理時間
SCALOR:同等のスカラプロセッサでの総処理時間
α:ベクトル化率(0≦α≦1)
β:ベクトルプロセッサによる高速化係数


この式からわかることは「単にベクトルプロセッサが 速いというだけではダメだ。」 ということである。 (ベクトルプロセッサが速いことはβが大きいことに相当)

ベクトルプロセッサが高速に処理を行うためには、ベクトル化率αが 1に近いことが負けず劣らず重要で、βが大きくてもαが小さければ、 せっかくのベクトルプロセッサも宝の持ち腐れで終わるということである。 特にβが大きければ大きいほど(つまりベクトルプロセッサが優秀であればあるほど)、 ベクトル化率αも1に近くなければならない。

αを大きくすることはハードではなくソフトの仕事である。 このため、地球シミュレータ用のコンパイラはかなり改良されており、 たるさんのようなタコ人間が書いたソースでも自動的に90%以上の ベクトル化率になるようなコードに変換してくれるそうだ。

ところが、怖いのは地球シミュレータのベクトルプロセッサである。 βが桁違いに大きいので、90%のベクトル化率をもってしても その本領を発揮できないそうである。

これは、並列化でも話は同じである。(Amdahlの法則はベクトル化率を 並列化率に置き換えた場合でも成立する。)

Parallel=TSingle×((1−α)+α/β)

Parallel:複数プロセッサ並列処理時の総処理時間
Single:単一プロセッサでの総処理時間
α:並列化率(0≦α≦1)
β:並列度(ただし、効率低下分も加味)


例えば128ノード以上を使用するコードを走らせる場合は、 基本的には99.9%以上の並列化率が必要だそうである。 これ以上の並列化率でないと、並列化効率が50%以上にならないそうだ。 (この場合、事実上半分の時間ノードが遊んでしまう。)

つまり並列化率もベクトル化率同様に (というか、厳密に言うとベクトル化率以上に)高い値でないと、 たくさんのプロセッサを装備していても宝の持ち腐れになるのである。

さて、そうなるとどう対処するのか... 実は、ここからがおもしろいところ。

この場合、プログラマが性能分析ツールを駆使して 直接コードをいじってベクトル化率・並列化率を上げるそうである。 多くの場合、最終的なベクトル化率は99%以上、並列化率は99.9%以上にも改善される。 ベストなケースではなんとベクトル化率99.9%以上、並列化率99.99%! に達するそうである。

実際、初期化・結果出力も含めた性能で見た場合、 「フーリエスペクトル法による乱流直接数値シミュレーション」コードの 最高性能のケースでは99.66%、LINPACKベンチマークでは99.81%だそうだ。 地球シミュレータの高性能の影には、 実に彼らのウデが重要という事だろう。1)

一聴すると何と無い話のようだが、実はこれは驚異的な話だ。 例えばPC用コンパイラではコンパイラの吐き出す最適化コードの方が 人手で改良したコードより優秀なことはもはや常識で、 今時アセンブラでコードをいじる人は滅多にいない。 手を加えるプログラマのスキルがよほど高くなければ、 多くの場合人手によるチューニングは逆効果となってしまうのである。

たるさんは同じ話を半導体用ステッパ開発で聞いたことがある。 ステッパの精度はレーザー干渉計などを使ったハイテク機器の精度で決まるのかと 思ったら、最後の最後はプロ中のプロ(つい頑固一徹の職人姿を想像してしまう)が 五感を駆使して仕上げるのだそうだ。 それにしても、最新ハイテクの影に職人芸有りというのは本当に絵になる話だ。

さて、今回で終わりだったはずの地球シミュレータシリーズだが、 タコサイトの記事としては好評だった事もあり、もう1回だけ追加したい。

今回は誉めてばかりいたので、次回は地球シミュレータの弱点について述べる予定。 また、たるさん最大の疑問点「地球シミュレータの開発はなぜ時流に 流されなかったのか?」について見学で判明した理由を語ってみたい。 お遊びとして、たる流ポスト地球シミュレータ計画にも触れる。



1)
もっとも、スカラパラレル機の場合はパソコン用CPUのチャチなキャッシュ・TLBを だましだまし使い回して高性能を出さなければならず、その方がプログラミング・ スキルが必要という意見もある。

並列化に関しても同様で、ノード数の少ない地球シミュレータの方がノード数の多い スカラパラレル機より最適化は易しいらしい。

両者の違いは、それが「報われる努力か?」と言うことである。 スカラパラレル機の性能が(特に効率面で)劣っている事から考えて、 たるさんはスカラパラレル機のプログラマは努力の割に報われていないと思う。

このことから考えて、 プログラム開発効率が高いという事も、地球シミュレータの長所なのかもしれない。

ちなみに、ここで出てきた「フーリエスペクトル法による乱流 直接数値シミュレーション」コードは2002年に スパコン界最高峰の栄誉とされるゴードンベル賞特別賞を受賞。

他にも地球シミュレータは同年に 「地球シミュレータ上で行ったスペクトル変換法による 全球大気大循環シミュレーション」でゴードンベル賞実行性能部門最高性能賞 を、「地球シミュレータで行ったHPFによる核融合3次元流体シミュレーション」で ゴードンベル賞実行性能部門言語賞を受賞。 事実上、該当分野の表彰台をほぼすべて独占した。

−お詫びと訂正−
「地球シミュレータ出現以前のスパコン界はベクトルパラレル機全盛 であった。」と書いてあった部分はもちろん誤記で、 「スカラパラレル機全盛」が正しいです。 ASCI計画は基本的にスカラパラレル方式ですからね。 お詫びして訂正致します。 元記事は訂正済です。