本文へジャンプ

他人の土俵で勝負するのは悲しい

東大に来られたころは、通勤に使う高速バスの中でプログラムを書いていらしたとか……。

移ったばかりのころはまだ時間に余裕があったからね。またプログラムを書きだした。やったー! プログラム書ける……ではなくて、切実な願いもあったんです。
 前職のクラスタシステム開発での大きな仕事は、並列計算の標準規格となっているMPI(Message Passing Interface)という通信ライブラリが動くようにすることでした。米国のアルゴンヌ国立研究所がMPICHという通信ライブラリをオープンソースで開発していたので、最初は、それが自分たちのクラスタシステムでも動作するように下位の通信レイヤ(PM2)を開発して組み合わせました。

1998年にはこのシステムを高性能計算分野の学術国際会議、SCの会場に送ってデモをしています。PCIボードのスロットにマザーボードを32枚挿した、1筐体32ノードのデモ機。動く電車の映像からリアルタイムで線画を生成するアプリを用意して、SCoreの性能の良さをデモンストレーションしました。キャプチャしたビデオデータを32ノードにばらまいて、各ノードが画像認識で物体のエッジを検出するわけですね。

これは、クラスタシステムで動作する通信ライブラリとしてはものすごく速かったんです。だから、私たちのモジュールとMPICHを組み合わせて配布すると、あちこちで使われました。オハイオ・スパーコンピューター・センター、ロスアラモス国立研究所、そしてヨーロッパでも。

借り物のライブラリと終わりのないメンテナンス

ところがね。下位の通信レイヤはMPICHの特定のバージョンに合わせてチューンナップしてあるから、MPICHが新しいバージョンを出すと私たちの通信レイヤを使わなくても性能が出るようになったりする。だから、常に最新のMPICHに合わせて下の通信レイヤも改訂していかなければいけない。そこは性能競争の世界ですから、改訂しなければもっと速いシステムを作る人たちがきっと出てきます。じきにメンテナンスするのがアホらしくなりますよね。

もうひとつ問題があって、何か不具合が出た時にこっちが悪いのか向こうが悪いのか、原因がなかなかわからない。だから、なんとか自分たちの通信ライブラリを持ちたかったわけです。

自分たちのプラットフォームがないとやっぱりダメだと考えたわけですね。

そうですよ。基盤を人まかせにするということは、他人の土俵で何かやるということなんです。そんなわけで、通勤のバスの中でスクラッチからコードを書き始めました。

独自路線から協調するスタイルへ

作ったライブラリは当初、アプリケーション開発者にはMPIという標準規格のインターフェイスさえあればいいだろうと考えて、独自路線で開発していました。でも現在は、アルゴンヌ国立研究所のMPICHのグループといっしょに連絡をとりながら開発を続けています。
実は自前のライブラリを作ってみたものの、標準規格のMPIもバージョンがどんどん新しくなっていくので、それはそれでメンテナンスがたいへんだった。人のソフトに依存しているとバージョンアップに追従するのがたいへん、自分たちで独自に作ってみると標準規格が変わっていくことがわかった。標準規格は試験的な設計・実装を経て決まっていくものなので、3度目の正直は、アルゴンヌのグループといっしょに設計や標準規格の議論もしていこうじゃないかというわけです。学習していますよね。

世界の開発者たちと連携していくことはとても大切です。でもそれは、国際的な研究の場で議論をしたり、開発したソフトウェアが評価されるといったことを通して信頼関係ができて、はじめて可能になります。

さきほど話したメニーコアCPU向けのカーネルも、メニーコアCPUを提供しているインテルが同じことを考えていますが、システムソフトは私たちのほうが先行していて評価されるようになり、リリース前のチップを出してもらったり、意見交換を続けるような関係になっています。

ページトップへ戻る