第1回電脳 Ruby ワークショップ: 発表記録メモ
by 西澤誠也 (modified by 堀之内)
3/15
1. 堀之内(京大・宙空電波)さん
本年度の活動オーバービュー
ruby-dcl
+α
GSL
SWIG
NetCDF
AdbancedDCL
Gtk+
ベクトル計算機上での数値計算
多次元配列クラス NArray とは
概念
配列(10*20) ->
float *a; /* pointer */
int rank; 2 /* 次元数 */
int shape; 10, 20 /* 次元長 */
int type; FLOAT /* 要素タイプ */
のような構造体があれば表現できる
数学演算
a.type == Narray のとき Math::sin(a) が通る必然性はない。したがって
Math::sin を
{
if a.is_f then
begin
sin(a).to_f
rescure
a.type.sin(a)
end
end
}
となっていればそのclassにsinというクラスメソッドが定義されていれば通る。
2. 常定芳基(東工大)さん
Ruby/GSL (GNU Scientific Library)
GSL
基本的な科学ライブラリーが含まれている
C言語で書かれている
フリーである
Numerical Recipes in C のようなもの(NRC は NonFree)
C はめんどくさい(メモリーや作業領域の確保やら、なんやら)
Ruby/GSL
GSL の構造体をrubyのオブジェクトにラップする
メモリーや作業領域の確保は内部に隠す
メモリーの解放は Ruby にまかせる
C よりは短く書ける
ほとんど使えるものはできている(fft がまだ)
今後
GSLの機能の網羅
ODE
Nonlinear Least-Square Fitting
interpolation
ラッパーの自動生成(SWING)
インタープリター
3. 小塚真啓(京大・法)さん
SWIGチュートリアル -- 猿向け講座/GSLへの応用
SWIG: C/C++ でかかれたライブラリーを様々なスクリプトで使うためのコー
ドを自動生成する
チュートリアルを用意 (http://kozuka.jp/doc/swig/)
Narray 対応がだいたい整った。
GSL もだいたいいけそう
4. ディスカッション
SWIG による Ruby/GSL の拡張, GUI
GSL ラッパーを作る際 SWIG が使えるか?
何がすでにあって何がない?
構造体が少なければ使えるかも(構造体が多すぎる)
素直にいきそうなものはない?
FFTは GSL より http://momonga.t.u-tokyo.ac.jp/~ooura/fft-j.html
を使おう。
5. 川那辺直樹(京大・宙空電波)さん
Ruby/DCL -- DCLの直接のラッパー
DCLの全サブルーチン(**pset以外)が DCLモジュールの下にラップさている
DCL と1対1対応
AdvancedDCL -- Rubyでの利用のためのさらなるラッパー
irb 等で使いやすいように再構成
Axis 周りは再考の余地あり ⇒ 再構成することになった
パラメータの扱い等を大きく変えた(Parameter class)
パラメーターの持続
Module.parameter.set(val) または Module.parameter=val
一時的なパラメーターの変更(実行後に元に戻る)
Module.hoge(ho,ge,"parameter"=>val)
eval -> send に変更
sync flag いるのか(常にsyncする?)
6. 西澤誠也(京大・理)
Ruby/Gtk+ からの DCL 利用
http://www-mete.kugi.kyoto-u.ac.jp/seiya/dcl/index.html
GUI プログラミング デモ
NetCDFブラウザー デモ
7. 堀之内武(京大・宙空電波)
NetCDF -- 構成と使い方
Ruby/NetCDF 変数、軸、属性まで含めたオブジェクト
基本的には生 NetCDF と1対1対応
便利なものは明日の川那辺直樹さんの発表で
8. 神代剛(富士通 FIP)さん
インストールしてみて/使用感他
インストールメモ
http://dennou-k.gfd-dennou.org/arch/ruby/INSTALL_MEMO_jp.htm
9. ディスカッション
どんな絵を描いたかの情報 -> NetCDF に埋め込む?
3/16
1. 高橋憲義(京大・理)
ベクトル計算機への移植とお手軽流体シミュレーショプログラミング
ruby の VPP、KDKへの移植 -> あまりうまくいっていない
kdk2(HP): OK
kdk1(NEC SX): miniruby ができない
Fujitsu VPP: shared にするとベクトル化ができない等
静的リンクにすればよい?
簡単シュミレーション(オブジェクト指向プログラミング)
ispack(一部) を ruby で使えるようにラッパーを作った
77的コードをオブジェクト指向で再コーディング
プログラミング(堀之内さん)
従来:
+――――――――--------------+
| モデル: |
| 初期化 <- データ | ⇒ 出力を変えたければ
| ループ -> 出力(ファイル,画像)| モデルの変更が必要
+――――――――--------------+
||
V
新しいやり方 (MVCパターン、オブザーバーパターンの利用):
+――----+ +―――――-+
|モデル: | <-(登録)- |ビューワー | ⇒ モデルと出力(ビューワー)
|(初期化,| --(通知)-> |(file,画像)| を分離
|ループ) | <-(get)- +―――――-+ 結合モデルとの対比
+――----+ ↓
出力
2. 川那辺直樹(京大・宙空電波)
データ解析・可視化ライブラリーGPhys
元のデータ形式に依存しない操作
ファイルごとにclassを定義
各クラスに共通のメソッドを定義
データが持つ情報(軸、属性 etc) -> Gphys オブジェクト
演算等が楽にできる
3. 堀之内武(京大・宙空電波)
今後の展開について/あれば飛び入り/
今後
近未来的
グラフィックス
AdvancedDCL (Axis関係)
Gtk+ (GPhys etc の利用)
数学ライブラリー → 解析ツール (GPhysとの関係、 FFT)
「物理量」ライブラリー (解析ツールとの関係)
シュミレーション・データ解析統合環境プロトタイプ
一発インストール -> 神代さん
絵に描いた餅
データーベースとの連動
ネットワーク越しのデータ利用 (dRuby over SOAP)