コンピュータ資源を仮想化し,柔軟な分散処理を目指すグリッド・コンピューティング。科学技術計算に携わる研究者が先達となったその構想は,あらゆる社会活動の基盤へと広がりを見せ始めている。

(本誌)

図1●コンピュータに使われる時代
1980年代,大規模な科学技術計算のために並列コンピュータを仕立てるとなると,ハードウェアとソフトウェアを一から十まで用意する必要があった。
図2●融通の利かないライブラリが散在していた1980年代
組織や距離の壁によって,似たような関数を持つライブラリの流通が阻害されていた。
 筆者が会長を務めているグリッド協議会では,複数のコンピュータによる分散処理「グリッド・コンピューティング」に関するWebニュースを集めている。略して「グリッド」と称されることが多いこの言葉は,ほぼ毎日のように報道発表やニュース記事としてWebサイトの更新チェック・プログラムに引っかかる。

 ある記事では,散在するパソコンの遊休時間を集めてスーパーコンピュータの代わりをさせることをグリッドと称している。また別の記事では,世界中のコンピュータを集めて,誰も行ったことがないような大規模計算を実現することとある。さらに別の記事に目を通すと,コンピュータのリソースを効率的に利用する技術を指している。

 「グリッド仕掛人」を自認する筆者から見ると,ここまで広まったかと感慨深い。ただ普及の途上にある用語だからだろうか,グリッドが喧伝されるさまは「インターネット」が何やら怪しい雰囲気をまとっていた時代を思い起こさせる。筆者は,グリッドが技術的進化の当然の帰結であり,現代の社会活動に即した明快なコンセプトだととらえている。なぜ今グリッドが脚光を浴びているのか。そして今後どのような方向に向かうのか。本稿では,グリッドが当たり前の「用語」になるまでの道を占ってみたい。

コンピュータに「使われる」不満

 グリッドは電力を供給するインフラである「Power Grid」が語源である。「いつでも,どこからでも,安定したサービスを提供する」概念として古くから存在していた。我々はコンセントに差し込めば電気が使えることを知っている。しかし電気が原子力,火力,水力のどの方式で発電されたか,どこで発電されどの送電線を通って目の前のコンセントに届いているのかを意識して使っている人はほとんどいない。髪を乾かしたいのであれば,ヘアドライヤをコンセントに差せば温風が出てくるし,照明のスイッチを入れたら電球が点灯する。

 しかし情報を得たいと思っても,電力のようにはいかない。いまだにこの世界では情報のありかを何らかのアドレスによって指示しなくてはならない。「エッチ・ティー・ティー・ピー・コロン・スラッシュ・スラッシュ(http://)」などの“おまじない”がテレビやラジオから流れている。コンピュータの仕組みを知らない人からすれば,なにやらとても大変なことをやらなければならないように思えるはずだ。

 グリッドにつながる技術開発を我々研究者が行っていた1980年代後半を思い起こすと,数々のおまじないを唱えなければコンピュータを使えなかった(図1[拡大表示])。筆者は長らく科学技術計算の研究に携わってきた。当時から研究室には多くのコンピュータが存在した。何か一つ計算をしようとしても,まずプログラミングから始めなくてはならない。旧Digital Equipment社のAlphaプロセッサを搭載したマシンがあり,その横に米Cray社のマシンが転がっているといった具合だから,研究者はコンピュータの種類に応じたプログラムの最適化に血道を上げていた。

 研究室に鎮座するコンピュータは,いわゆる並列マシンである。実験に使用する並列コンピュータを独自に仕立てるとなると,ハードウェア,OS,プログラム言語とその処理系の開発,アプリケーションのプログラミングと,一から十まですべてを行う必要があった。

 そのような準備をしてようやくコンピュータに計算を「お願い」していた。個性の強いコンピュ ータに人間が使われていたようなものだった。研究者の多くが不満を抱えていた。こうした不満を解消できないか。私を含め世界中の研究者が考えていた。

使えないライブラリ

 その後,商用の並列コンピュータや実験用ワークステーション・クラスタのプログラミング環境は,UNIX上の「PVM(Parallel Virtual Machine)」や「TCGMSG」といったミドルウェアの登場によって共通化されるようになった。それでも実際には,プログラムの相互利用性は低かった。結局のところ個別に最適化を施さなければならなかった。数値計算用のプログラムの最適化は,コンパイラのオプション指定の組み合わせとの格闘だ。満足のいく速度を達成するには結構な作業量が必要だった。

 筆者が最適化に没頭していると,隣で膨大な数値計算用プログラムにあるたった一つの関数を使いたいがために,やはり同じような作業をしている。そうした光景を目にするのは珍しくなかった。これは大変な無駄ではないかと思った。物理の研究者はプログラムが書きたいのではなく,計算の結果が欲しいのだ。しかし,計算を始めるまでに膨大な時間を犠牲にしなければならなかった。

 今でこそ,数値計算用のプログラムはライブラリとして整備され,Webから好きなものをダウンロードできる。しかし当時の環境では自分で作るしかない。物理の研究者はコンピュータを使うために,書籍のサンプル・プログラムの世話になる。例えば「Numerical Recipes in C」という数値計算の参考書のサンプル・プログラムを見ながらプログラミングをしていた。もちろんサンプルはサンプルである。そのまま使うのでは思い通りの性能が得られない。そればかりか,計算結果の精度も検証が必要だった。

 無駄に感じていたことはもう一つある。数値解析の大家が非常に細かいところに配慮して作り上げた数値計算ライブラリが存在するのに,それらできの良いライブラリがあまり使われていないことだった(図2[拡大表示])。研究者の世界は基本的に縦割り社会。横のつながりがないのはもったいないと思っていた。