RubyでHPCは可能か? HPCで駆逐されるベキもの

 科研費調書の締め切りが迫る中、みなさんいかがお過ごしでしょうか。

 予言通りに、奥多摩にホットスポットがあることがわかり、シミュレーションやHPCの凄さが鮮明になりました。そのあたりのエントリーも書きたいのですが、科研費の締め切りでドタバタしております。で、書類書きに疲れたのではてなブックマークを巡回していたところ、面白い記事がありました。

Ruby で HPC?

テクノロジー : 日経電子版

 まつもとさんが、rubyで夢を語る記事です。この中で彼はつぎのようなことを言っています:

天文学とかバイオの世界で多用されるHPCで手軽にプログラムを組めるルビーが使えれば研究の速度向上に貢献できると思うので、ぜひ取り組みたい。

 これを読んで思わずコーヒーを吹きました。「ねーよw」と突っ込みを入れずにはおれません。

 しかし、よくよく考えてみると、HPCをするときには、実行ファイルをshellスクリプトでラッピングするのが普通です。こんなふうに:

Shell script

バイナリ実行ファイル Fortran/C/C++

そういう意味では、上記のshell script の部分をruby, perl, pythonのような言語で置換することも可能です。実際、結構手の込んだshell script を書くこともあるので、移植性が許されればrubyを使うのもアリでしょう。

 しかし、HPCにおいてrubyFortran, C, C++ を代替することはないでしょう*1

 発想を転換して、rubyFortranやCのコードを生成するというフレームワークは良い方法です。このようなプログラムがプログラムを作る(吐き出す)というアプローチはしばしば用いられますし、成功することが多いです。ボクもやったことがあります。

HPCで駆逐されるべきもの

 HPCのプログラムをrubyでお手軽に書けたらどんなに素晴らしいでしょうね〜?そんな夢を見るよりも、HPCを健全に進めるために、今のHPCのおかしいところを考えてみました:

  • MPIはいらない

 なんでユーザレベルでこんな低級なことを書かなけりゃならんのじゃ。

  • 並列計算機はいらない

 現在のスパコンの潮流は並列計算機です。たくさんのCPUを同時に動かして、たくさんの計算をしようという戦略です。したがって、たくさんのものを同時に計算するのには向いていますが、ひとつのものを丹念に計算するのには不向きです。不幸なことに、多くの研究者にとって興味があるのは後者の計算なのです。

いや、たんに現在のスパコンアーキテクチャに疲れたのです。ちょっと愚痴ってみました。




さて、科研費調書の仕上げにかかるか。
ロイヤルミルクティーと生ハムメロンで潤いながら。

*1:昔の話しですが、perl2cでperlコードをCに変換してスパコンで実行したことがあります。もちろん性能はでません。