[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
Asir は, 分散計算における通信プロトコルとして,
OpenXM
(Open message eXchange for Mathematics) プロトコルを採用している.
OpenXM プロジェクトについては,
<A HREF="http://www.math.sci.kobe-u.ac.jp/OpenXM/">
http://www.math.sci.kobe-u.ac.jp/OpenXM/
</A>
を参照してほしい.
OpenXM プロトコルは, 主として数学オブジェクトをプロセス間でやりとりする ための規約である. OpenXM においては
という形で分散計算が行われる. server はスタックマシンである. すなわち, client から送られたデータオブジェクトは, 指定がない限り server のスタッ クに積まれ, コマンドが送られた時に, 必要なだけスタックからデータを取り出 して, 関数呼び出しの引数とする.
OpenXM において特徴的なことは, 計算結果は単に server のスタックに 積まれるだけで, client からの依頼がない限り, 通信路にデータは流れない という点である.
プロトコルには, オブジェクトの共通フォーマットを規定 する CMO (Common Mathematical Object format), プロセスに対する 動作を指定する SM (Stack Machine command) が含まれる. これらは, データを送る際に, データの種類を指定する ための OX expression としてラッピングされる.
OpenXM による分散計算を行う場合には,
まず, server を立ち上げて, 通信を成立させる必要がある. このために,
ox_launch()
, ox_launch_nox()
, ox_launch_generic()
などの関数が用意されている. さらに, 通信の成立した server に対して
以下のような操作が関数として用意されている.
ox_push_cmo()
データを server のスタックに積む
ox_pop_cmo()
データを server のスタックから取り出す.
ox_cmo_rpc()
server の関数を呼び出し, 結果をスタックに積む.
ox_execute_string()
server 固有のユーザ言語 (Asir なら Asir 言語) で書かれた文字列を server が実行し, 結果をスタックに積む.
ox_push_cmd()
SM コマンドの送信.
ox_get()
既に通信路にあるデータの取り出し.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は12月 21, 2024にtexi2html 5.0を用いて生成されました。