関数 ox_launch を引数なしで実行すると, OpenXM Asir server (ox_asir) が起動する. 同時に, メッセージ表示用ウィンドウが現れる.
[0] Id0 = ox_launch(); 0戻り値 0 が, ox_asir を識別する番号で, その後の通信で必要となる. ox_asir は複数立ち上げることも可能である.
[1] Id1 = ox_launch(); 1 [2] Id2 = ox_launch(); 2ox_asir を終了させるには, 識別番号を引数にして ox_shutdown() を実行すればよい.
[3] ox_shutdown(Id1); 0対応するメッセージウィンドウが消えるはずである. あるいは, Asir 自体を 終了させれば, 全ての ox_asir は自動的に終了する. ox_asir の機能自体は通常の Asir と全く同様であるが,
[10] ox_rpc(Id0,"fctr",x^10-y^10); 0 [11]即ち, Asir における
xxx(Arg0,Arg1,...)
を
ox_rpc(Id,"xxx",Arg0,Arg1,...)
とすればよい.
ファイルのロードも
ox_rpc(Id,"load","filename")
でできる. 即ち, キーボードから
入力したい内容をファイルに書いて, それをロードさせれば, 通常の Asir
と何らかわらないことになる.
ox_rpc() は, ox_asir での実行終了を待たないで
すぐに復帰する. 結果の受け取りは ox_pop_local() で行う.
[12] ox_pop_local(Id0); [[1,1],[x^4+y^2*x^3+y^4*x^2+y^6*x+y^8,1],[x^4-y^2*x^3+y^4*x^2-y^6*x+y^8,1], [x-y^2,1],[x+y^2,1]] [13]この時点で, ox_asir での計算が終っていない場合には, 計算が終るまで ox_pop_local() は復帰しない. このような仕組みは, 一見不便そうに 見えるかもしれないが, 複数の server を使って分散計算を行う場合に, 一度に複数の server で計算をスタートさせたり, 同時に自分も他の計算を 始めたい場合などに必須である. その結果がなければ先の計算ができなくなった時点で server に結果をもらいに いくようにすれば, 待たされても何も困ることはないのである. サーバが計算結果を送信可能状態かどうかは関数 ox_select により調べる.
さて, 最低限以上のことを知っていれば, 分散計算を試す準備は OK である. 以下では, 2 つのアルゴリズムを OpenXM で並列計算してみよう.