今日は、次世代スーパーコンピューターが民主党政権下の
「事業仕分け」というもので、「来年度の予算計上見送りに限りなく近い縮減」
だか「事実上の凍結」だかになった、という話題もあるので、これについても
思うことを少し。
スーパーコンピューター開発は日本の科学技術にとってとっても大事であり、
ちゃんと進めるべきであるから見送りとか凍結はおかしい、という意見はまあ
あると思いますが、行政刷新会議の録音とかを聞いてみると結構プロジェクト
が迷走した過程等を問題にしていて、そのまま進めるよりは見直すべきでは?
という発言がでていることがわかります。ここでも何度も何度も書いてきたこ
とでもありますが、当初の3種混合から途中で1つに絞ろうとしたり(いや、そ
うではない、とかいう話もありましたが)、結局絞りきれなくて2つになって数
年たったあとで、結局ベクトル側が N の経営上の都合とかで撤退という形になっ
たり、と、いうことをやってきた上で、N が撤退したのでもっとお金が必要に
なりました、という概算要求をだす、という過去の経緯からは、これからマシ
ンを完成できるのかどうか自体が疑われてもしかたがないところとは思います。
三好さんが強いリーダーシップをとった数値風洞・地球シミュレータのように
進んでいれば随分違ったのではと思います。私は地球シミュレータが技術的に
正しい選択だったとは思いませんが、それでも、次世代のように猫の目のよう
にプロジェクトリーダーのいうことが変わる、というようなことはなかったわ
けですから。
但し、民主党議員の人、松井さんといったところからは、「世界一である必要
はあるのか」という質問がでていましたが、本当に質問するべきことは、「世
界一になるのに 1100億どうしても必要なのか」ということであったのではない
かと思います。メモリバンド幅やネットワーク性能とか色々考えても、高々
10Pflops に 1100億は 2012年の数字としては高価にすぎ、この性能当りで高い
ということが日本の計算科学の将来に明らかな悪影響をもつからです。
悪影響というのは、要するに、同じお金で遅い計算機しか使えない、というこ
とです。結局、計算機に使えるお金自体がさして増えるわけではないので、値
段当りの性能が低く留まっては多少大型予算がついてもなんにもならないし、
将来にもつながらないわけです。メーカーが今までやってきたようなやり方の
延長で開発するにはお金がかかる、ということであるとすれば、それは今後に
つながる方向への投資なのか?ということが問題にされるでしょう。実際、
NEC の古典的ベクトルプロセッサの方向は地球シミュレータの時点で破綻して
いたもので、それにこだわったのが次世代プロジェクトの迷走の大きな要因で
あったことは NEC が撤退した今となっては誰の目にも明らかなことでしょう。
で、まあ、では GRAPE-DR は将来につながるのか?ということですね。
HPL については、今年6月の Top500 に出した数字はクロック 330MHz で効率
26 %、1ノード当り 170Gflops 程度といかにも低いものでした。今日現在の数
字は、カード1枚の単体ノードではクロック 400MHz まで引き上げた上で効率
47.5%、380 Gflops まできています。この性能向上は、
-
GRAPE-DR ライブラリの効率化、特にホストからのデータ送信と計算の並列
実行の実現
-
LU 分解のプログラム自体の全面的な書き換えによる効率向上
によるものです。上の数字はメモリ 12GB のマシンで行列サイズ 34K で実測
したものですが、メモリ 24GB だと控え目にみて420Gflops 程度まではあがる
見込みで、この場合の数字も数日中には報告できると思います。効率 50% は
実現できる、というところです。128GB とかつけたら 70% くらいになる計
算です。
一応、 11/16 現在で、メモリ 16GB まで使って 410Gflops で、効率 50% 以上
になりました。この速度だとチップ1つ当りで SX-9, ATI Radion 4870 での実
測のどちらも上回り、世界最高性能を実現しています。GPU の数字は 2009/11
Top 500 での中国の天河の数字は 5120 GPU + 5120 Xeon で 563 Gflops、
Xeon+GPU 1 セットあたり 110 Gflops ですが、Xeon でも計算しているので
GPU の部分は70-80Gflops 程度と思われます。
この、効率50% 前後、という数字をみて低いとか失敗だとかいいたい人がいる
のは想像できますが、私の立場は元々、演算器は現在の普通の計算機ではもっ
とも高価な部分ではないので、そこだけの効率を云々するのはあまり意味がな
い、というものであることはこの文章の前のほうも読んだことがある人なら理
解していただけるかと思います。 GRAPE-DR で対象にするアプリケーションの
中では、LINPACK はもっともネットワークバンド幅や主記憶バンド幅を要求す
るものです。このため、LINPACK で演算器のピーク性能が出るようにシステムを構成す
ることは、他の多くのアプリケーションでは不必要な程度までネットワーク・主
記憶バンド幅・主記憶サイズといったものに資源を投入し、その結果システム
としての消費電力も大きなものになることを意味し、あまり賢明な選択ではあ
りません。
その意味では 20-30% の効率でも別に問題ではないといえなくもないのですが、
そういうことが多くの専門家と称する人に理解されるわけでもないので少しが
んばってプログラムの書き直し等もしてある程度の性能はでるということを示
した、というのが今回の単体ノードでの数字です。
複数ノードになると、MPI 版の HPL を全面的に書き直す必要があり、これはベー
スになるコードはできていて並列動作もしていますが、まだ調整というかチュー
ニング中で性能測定までにはきていません。こちらでは、演算性能に比べてど
うしようもなくメモリが小さい、ネットワークが遅い、というのがネックにな
ります。1Tflops 近い性能に対して、現在のところ 20Gbps の IB でつないで
いますから、50Gflops の Core i7 で、 GbE でネットワークを組んで動かす
ようなもので効率をだすのは簡単ではありません。特に、現在の HPL では
横方向の通信は計算と並行して実行しますが、縦方向は並列にやらないので
完全にオーバーヘッドになります。この部分だけで 2-3割の性能低下になり、
これでは高い性能が原理的に期待できません。
原理的には、縦の通信も計算と並行に行うことができればよく、特にGRAPE-DR
のようなアクセラレータを使う場合にはそれが原理的には不可能ではないので、
そのような形でのコードの書換えを行ないます。このためには、縦の通信で発
生する行交換の主記憶への負荷を下げることが必須であり、つまりは行列のメ
モリへの格納順序を変更する必要があります。
通信も、縦と横の両方を計算と並行して行う、というのは縦の通信と横の通信
が同時に起きる必要がある、ということであり、それを MPI でどうやって実現
し、競合やデッドロックが起きないようにできるのか、というのは自明ではあ
りません。理屈ではマルチスレッドで独立に動かして、NIC なりカーネルなり
が適切なキューイングをしてくれればよいのですが、実際に MPI をマルチスレッ
ドで使おうとしてみると TCP/IP ではマルチスレッドで動くけどIB のネイティ
ブライブラリでは動かなかったりして話になりません。まあ、そういうのをな
んとかして、近いうちに数字を報告できるとは思いますが、11/13 時点ではま
だこの改善された並列コードでの数字はとれていないので、残念ながら今回の
Top500 ではあまり上がっていない数字がでます。今月中には並列コードの性能
も1ノード用コードから大きくは見劣りしない程度まで改善できれば、と思って
います。
しかし、一応、現時点で、単一ノードの計算では、LU分解で
-
1ソケットPC+アクセラレータの構成では世界最高速
-
世界最高の電力あたり性能
を実現できています。1チップ当りの性能も、 24GB メモリでの数字が出れば世
界一です(今日現在では SX-9 のほうがわずかに上)。振興調整費のプロジェク
トとしてどうであったかはそのうち評価報告が公開されるでしょうから、そ
れに任せるとして、GRAPE-DR というプロセッサの開発自体はそれなりの成果
を上げることができたと思います。