RubyでHPCは可能か? HPCで駆逐されるベキもの
科研費調書の締め切りが迫る中、みなさんいかがお過ごしでしょうか。
予言通りに、奥多摩にホットスポットがあることがわかり、シミュレーションやHPCの凄さが鮮明になりました。そのあたりのエントリーも書きたいのですが、科研費の締め切りでドタバタしております。で、書類書きに疲れたのではてなブックマークを巡回していたところ、面白い記事がありました。
Ruby で HPC?
まつもとさんが、rubyで夢を語る記事です。この中で彼はつぎのようなことを言っています:
天文学とかバイオの世界で多用されるHPCで手軽にプログラムを組めるルビーが使えれば研究の速度向上に貢献できると思うので、ぜひ取り組みたい。
これを読んで思わずコーヒーを吹きました。「ねーよw」と突っ込みを入れずにはおれません。
しかし、よくよく考えてみると、HPCをするときには、実行ファイルをshellスクリプトでラッピングするのが普通です。こんなふうに:
Shell script
そういう意味では、上記のshell script の部分をruby, perl, pythonのような言語で置換することも可能です。実際、結構手の込んだshell script を書くこともあるので、移植性が許されればrubyを使うのもアリでしょう。
しかし、HPCにおいてrubyがFortran, C, C++ を代替することはないでしょう*1。
発想を転換して、rubyでFortranやCのコードを生成するというフレームワークは良い方法です。このようなプログラムがプログラムを作る(吐き出す)というアプローチはしばしば用いられますし、成功することが多いです。ボクもやったことがあります。
HPCで駆逐されるべきもの
HPCのプログラムをrubyでお手軽に書けたらどんなに素晴らしいでしょうね〜?そんな夢を見るよりも、HPCを健全に進めるために、今のHPCのおかしいところを考えてみました:
- MPIはいらない
なんでユーザレベルでこんな低級なことを書かなけりゃならんのじゃ。
- 並列計算機はいらない
現在のスパコンの潮流は並列計算機です。たくさんのCPUを同時に動かして、たくさんの計算をしようという戦略です。したがって、たくさんのものを同時に計算するのには向いていますが、ひとつのものを丹念に計算するのには不向きです。不幸なことに、多くの研究者にとって興味があるのは後者の計算なのです。
いや、たんに現在のスパコンのアーキテクチャに疲れたのです。ちょっと愚痴ってみました。
さて、科研費調書の仕上げにかかるか。
ロイヤルミルクティーと生ハムメロンで潤いながら。