第40回Top500の謎

連立1次方程式を解くのに必要な計算量は、未知数の数の3乗に比例する。一方、係数行列の大きさは未知数の数の2乗に比例する。したがって、未知数の数が多い方が、メモリからの係数の読み込みデータ量あたりの演算数が多くなり、性能を高めやすい。このため、Sequoiaでは未知数の数は1268万、京コンピュータでは1187万となっている。

しかし、1000万×1000万の係数を8バイトの倍精度浮動小数点数で記憶するには、0.8PBのメモリが必要となる。つまり、 Sequoiaや京コンピュータでのLINPACK測定ではメインメモリをいっぱいに使って高いスコアを引き出している。そして、この巨大な計算を行うには時間がかかり、フルシステムを丸一日程度動かして測定を行っている。

Top500の測定は、大部分のシステムでは、未知数の数が明らかにされているが、Titanでは未知数の数の欄が空欄になっている。これに関して、Top500 BoFでは、Titanでは係数の記憶にはK20X GPUのメモリだけしか使っていないことが明らかにされた。K20XボードのGDDR5メモリは6GBであるので、Titan全体で約100TBとなる。そうすると、前記のSequoiaや京コンピュータの1/3程度の未知数の計算しかできない。そのため、計算時間は52分程度で終わっているという。

TitanでもCPU側についているメインメモリを使えば、Sequoiaや京コンピュータ並みの未知数の計算ができるはずであるが、なぜ、メインメモリを使うようにプログラムを作ってLINPACK値を上げなかったのかは謎である。まあ、メインメモリを使わなくてもSequoiaに1.3PFlops近い差をつけているので、手間をかけてプログラムを改良するのを止めたということかも知れない。

前回、LLNLのSequoiaが1位、ANLのMiraが3位でランクインし、今回、ORNLのTitanがTop500の1位、TACCのStampedeが7位となり、米国が開発していた10PFlops級のマシンが続々と完成し、Top500リストに加わった。しかし、イリノイ大のNCSAが開発しているBlue Watersが今回のTop500リストに見られない。

Blue WatersはCrayのXE6 235筐体以上、XK6 30筐体以上の規模と公表されており、ピーク性能は発表されていないが、10PFlops級と見られている。したがって、Top500の10位以内には入るのは確実と見られるのであるが、今回のTop500リストには登場していないのが謎である。

実アプリケーションでの1PFlops以上の連続稼働というのが、Blue Watersの最優先の目標である。それもLINPACKの測定のように、故障ノードが発生しないベストの状態で性能が出ればよいという話ではなく、故障が通常の頻度で発生する環境で、チェックポイントの作成、故障時にはチェックポイントに戻って実行をやり直すというようなオーバヘッドを差し引いても、実アプリケーションで1PFlops以上を出せるようにするという。これらの作業を優先して行っており、LINPACKで高い値を出すためのチューニング作業に時間を割くつもりは無く、Top500への性能登録は行わない方針であるという。

Top500 BoFでは、「Top500に登録しないシステムが増えると、Top500のリストの存在意義が薄れてしまうが、どう考えているのか?」という質問が出た。Top500の主催者としては、Blue WatersのLINPACK値の登録を依頼したそうであるが、上記のような理由で断られたとのことで、強制力はないのでお願いしても出してもらえなければやむを得ないという答えであった。これまでも、企業では、ライバル企業に手の内を見せたくないということからTop500に登録を行わないケースや、米国政府機関であるNSAのように、国家機密だから出せないというケースもあり、完全な抜けの無いTop500リストを作ることは難しい。しかし、大多数の大型スパコンをカバーし、その進歩の方向やペースが見えるリストが継続して作られることには大きな意義がある。