[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:001088] Re: grads



堀之内です。

> 必要に迫られて GrADS の「グリッドデータセット」(ステーションじゃ
> ない普通のやつ)を扱う ruby プログラムのプロトタイプを書きました。
> 「必要」だったのは NetCDF への変換なので、それがなんとか出来るだ
> けの不完全なものですが、

これを使って変換したときの速度について報告しておきます。

11GB読んで11GB書出すという作業をしたのですが(全部で11GBになる6
つに分かれた時系列の GrDASファイルから約20個の変数全部をそれぞれ
別々のNetCDFファイルに納めた)、SPARC Ultra10 (333MHz)で実時間が
1時間強〜2時間もかかりました。通信だけで決まる場合 100Base/Tな 
ので 40 分ぐらいで終っていいんですが、楽をして xy 断面を一個一個
読んで処理するようにしたせいのようです。同じデータサイズでも xy 
断面のデータ数が多めのとき (132*132*4=70kb => 1.5e5 個のxy 断面
を入&出力) は1時間強で、少なめの時 (132*8*4=4.2kb => 2.6e6 個の 
xy 断面を入&出力) した時は約2時間でした -- そのうちCPU時間が1時
間強。

てなわけで、だいぶ無茶なIOをしたわけですが、xy断面を必ず1単位に
するということをやめれば、恐らく CPU 時間は通信時間より短くなる
なると思われます。ただ、sequential なデータの場合ブロック前後の
各 4 バイトを除去しないとならないので、でっかく NArray.to_na
で済まないのがうざいところです。