Rubyは気象モデルで使えるHPCを実現できるか

matz が ruby の未来は HPC にありなどと煽るので、数値天気予報に使えるようにするにはどうしたらいいか少し考えました。
4
TOYODA Eizi @e_toyoda

フロンティアは組み込みとHPCだという。HPCの話あるのかな / 「キャズムを超えたRubyはなくならない」---軽量版を開発中のまつもとゆきひろ氏 - ニュース:ITpro http://t.co/VF3yKFy

2011-09-09 10:30:44
はせがわ @m7621

ソレは我々自身への問い RT @e_toyoda: フロンティアは組み込みとHPCだという。HPCの話あるのかな / 「キャズムを超えたRubyはなくならない」---軽量版を開発中のまつもとゆきひろ氏 - ニュース:ITpro http://t.co/D47vhcw

2011-09-09 12:47:37
TOYODA Eizi @e_toyoda

そうです。ものすごいチャンスが転がってきたということです。 RT: @m7621: ソレは我々自身への問い RT @e_toyoda: フロンティアは組み込みとHPCだという。HPCの話あるのかな http://t.co/VF3yKFy

2011-09-09 12:52:37
TOYODA Eizi @e_toyoda

たとえばNArrayありますね。あれ中をOMPしたらすぐノード内速くなりますね。分散メモリだったら分散NArray作ればいいですね。もう間違いなくすごい速く足し算とスカラ倍できますね。だけどそれじゃ数値予報はできませんね。なんでか。

2011-09-09 12:58:46
TOYODA Eizi @e_toyoda

GSMの計算時間の何割かがルジャンドル変換といわれます。それはNArrayじゃ書けないけれど、NArrayにfftwが付属するように誰かさんのガリガリチューニングのルジャンドルをつけたらいいですね。NArrayインNArrayアウトのメソッドが数個追加されるだけのことです。

2011-09-09 13:03:02
Youhei SASAKI @uwabami

|д゚)@seiya_ni RT @e_toyoda: GSMの計算時間の何割かがルジャンドル変換といわれます。それはNArrayじゃ書けないけれど、NArrayにfftwが付属するように誰かさんのガリガリチューニングのルジャ(cont) http://t.co/TIBFJ0M

2011-09-09 13:06:24
TOYODA Eizi @e_toyoda

残るは、ルジャンドル変換や配列演算式ほど定型化できないものですが、それを99%とかとことんやっつけないとアムダールの法則でコテンパンにやられるわけです。どうしたらいいか。

2011-09-09 13:08:00
TOYODA Eizi @e_toyoda

そこでクロージャを持つ言語の強みが出てきて、分散してるかもしれない配列オブジェクトに対してメソッドを投げて分散させる、その分散化を配列の任務ととらえることが考えられるわけですね。もちろんクロージャがスレッドセーフにならなきゃいけないし、

2011-09-09 13:11:57
TOYODA Eizi @e_toyoda

場合によったらJITでネーティブコードをコンパイルしないとダメかもしれない。でも、Rubyも今やバイトコードとか言ってるわけですから、そのくらいその筋の人ならすぐにできると思うんですよ。で、matz が興味をもってるなんてチャンスに乗らない手はないと。

2011-09-09 13:14:05
TOYODA Eizi @e_toyoda

ま、Array#map のダサい版で、C の関数をString で渡すと JIT コンパイルして要素のポインタ渡して呼び出すとかで速度測ってみたらいいかもしれない。ただ、数値予報モデルと言うのは、M1の学生がそうやって遊んでみるにはちょっとデカいんですよね。

2011-09-09 13:16:10
TOYODA Eizi @e_toyoda

そのくらい誰でも考えると思うんだけど、つまんなかったですか? @uwabami @seiya_ni

2011-09-09 13:17:04
西澤誠也 @seiya_ni

@e_toyoda ちょっと話はそれますが、先日, HPC Ruby (生Ruby が C+gcc とほぼ変わらない速度がでている) の中村さんと話をしたところ、将来的にはJITコンパイルや並列化も考えているそうです。

2011-09-09 13:33:26
TOYODA Eizi @e_toyoda

@seiya_ni 並列化は将来ですか。うーむ。ググると静的解析でオブジェクトの型決定するとか、VALUE が64ビットになるからintの代わりにdoubleを即値で持つというのをやったみたいですが、まだ我々のリアル問題に効果が出るには、ちょっとフロンティアが広いですねえ。

2011-09-09 14:09:17
西澤誠也 @seiya_ni

@e_toyoda おっしゃるように、目的がはっきりしているので、汎用性を気にしなければ NArray 改造や並列化で速度を出すのはそう難しくなさそうですね。

2011-09-09 14:17:02
Youhei SASAKI @uwabami

@e_toyoda @seiya_ni つまんなくないです!オモシロソウ。

2011-09-09 16:36:00
Youhei SASAKI @uwabami

問題全くないっす。 QT @e_toyoda: @e_toyoda @m7621 @seiya_ni @uwabami つぶやきを使わせていただきました。問題ありましたら対応しますのでご連絡ください。 http://t.co/D0Ie8S2

2011-09-10 01:43:23