おわりに

2003年、自分が博士課程の学生の頃、地球シミュレータのアカウントを手に入れることができた。 当時、地球シミュレータは二位以下に大差をつけて圧倒的な存在として君臨する、世界No. 1のスパコンだった、 私は地球シミュレータを使うため、あるプロジェクトに所属していた。自分で言うのもなんだが、それなりに戦力として期待されていたのではないかと思う。 しかし僕はD3であり、博士論文を書くのに忙しかった。 さらに当時、地球シミュレータはネットワーク越しの利用が許されておらず、使いたければ端末を予約して新杉田にある海洋研まで行く必要があった。 これは言い訳になってしまうが、自分には博士論文を書きつつ、遠くにある端末まで行ってコードを開発、チューニングする余力はなかった。 結局、ほとんど地球シミュレータを使うことができないまま卒業、就職し、プロジェクトも終了。卒業した年(2004年)の11月、地球シミュレータもTop500の一位の座をBlue Geneに明渡した。

「せっかく世界一のスパコンを触る機会があったのに、ほとんど触ることができなかった」

この悔しい思いは、「次に日本が国策スパコンを作ったら、絶対に使いこなしてやる」という強い思いとして残った。

時は流れて2011年、僕はまだ一般公開前の「京」の評価をするため、家族を連れて半年ほど神戸に詰めていた。僕はかかわっていないのだが、ちょうどこの時「京」を使ったHPLの測定が行われていた。2011年6月、京は地球シミュレータ以来、7年ぶりとなるTOP500一位を獲得する。さらに紆余曲折あって2015年3月、僕は自分の提案したプロジェクトが認められ、とある論文を投稿するために、「京」にフルノードジョブを投げていた。普段、「京」は多くのユーザで共有して使っており、フルノードジョブが実行できる機会は月に1度しかなかった。論文の締切が4月頭で、1月から3回のチャンスがあった。事前に4096ノード程度で問題ないことを確認していたジョブだったが、82944ノード実行時に二度失敗してしまい、後がなかった(ちなみに失敗原因は、ノード数に比例して大きくなるテンポラリバッファを使っており、4096ノードでは特に問題とならないが、82944ノード実行するとメモリを食いつぶしてしまう、というものだった)。ジョブを投入すると、ジョブの開始時と終了時にメールが飛んでくる。したがって、ジョブの開始メールと終了メールが同時に飛んできたら「あ、ジョブがこけたな」ということがわかる。 三度目のチャレンジ、ジョブの開始メールが飛んできて、でも終了メールが飛んでこない。これは今、「京」フルノードを自分のジョブが占有して走っていることを示す。リアルに「あのスパコンで走ってるジョブ、俺のなんすよwww」状態である。しかし、ジョブが終了するまでは安心できない。ジョブ終了メールが飛んでくるまで、祈るような気持ちで待つ。そしてジョブ終了後、正常終了を示すログを見たあと、ダンプファイルを可視化したところ、そこには大きな泡があった(当時、僕は分子動力学法による気泡生成シミュレーションをしていた)。「このジョブが失敗したら論文の投稿ができない」というジョブは、なんとか無事に完走してくれ、おかげで論文を投稿することができた。当時の緊張と、失敗時の落胆、三度目のジョブ実行中の高揚感を今でも思い出せる。

仕事柄、日常的にスパコンに触れているのだが、スパコンには夢があると思う。スパコンには、普通のパソコンではできないようなことができそうな雰囲気がある。 最初、僕がスパコンを使い始めた時には「こんなもの自分に使えるんだろうか」という不安感があった。 しかし、使ってみるとわりとあっさりと使えて「スパコンを使いこなしてる俺スゲー!」という気持ちになった。 さらに使っていくと、どうもスパコンはもっと可能性を秘めていそうなのに、「自分が使いこなしていない感」が強くなってきた。 今でも、「スパコンのポテンシャルを引き出した!面白い計算ができた!」と納得できる仕事はできていない。 でもやっぱり、スパコンは面白いと思う。

スパコンには大きなお金がからむため、ニュースなどで話題となるのはネガティブなものが多い印象である。せっかくスパコンで面白い計算ができたり、面白い技術が開発されたりしてもあまり取り上げられず、「二位じゃだめなんでしょうか」発言に代表されるような、スパコンそのものの楽しさから離れたトピックが話題となることが多い。その際、あまりスパコンに詳しくなさそうな人による「解説」に、多くの人が賛同したりしているのを見て、それなりにスパコンと長い付き合いがある身としては歯がゆい思いをしていた。どんな分野でもそうだと思うが、実際に手を動かして使ってみなければ「スパコンとはどういうものか」は体感できない。 値段、ベンチマークの数値や理論性能値など、そういうものでスパコンを議論するのは自由だが、少なくとも僕はそれで「スパコン」を理解できる気はしない。 この文章も、「スパコンを知らない人がざっと読んでわかった気になること」を目的として書いたものではない。並列計算というのは思ったより簡単であり、誰でもすぐスパコンが使えるようになること、でもそのあと「スパコンを使い倒そう」とすると、とたんに様々な「闇」があって難しいこと、でもそれが面白いこと、そんなこんなを実感して欲しい、僕はそういう気持ちで書いた。

近い将来、学会の懇親会などで「『一週間でなれる!スパコンプログラマ』を読んでスパコンプログラマになりました」と、見知らぬ学生さんに突然話かけられるのを夢見て、筆を置くことにする。

2018年 Hiroshi Watanabe

謝辞

この記事は、tanakamura さんの 実践的低レベルプログラミングに影響されて書き始めたものです。 angel_p_57さんにMPIにおけるバッファリングについて教えていただきました。fujita_d_hさんにはBlueGene/LのL1エラー訂正について議論していただきました。n_IMRCさんには、行列積におけるTLBミスの論文を教えていただきました。まだこの記事が書きかけだったときにたくさん星をつけてくださった皆様、Twitterなどで感想を寄せてくださった皆様、ありがとうございます。みなさんのポジティブな反応がなければ書き続けられませんでした。

本稿を読んで「スパコンを使ってみよう」と思う人が一人でも増えたなら幸いです。