Asir は, 分散計算における通信プロトコルとして, OpenXM (Open message eXchange protocol for Mathematics) を採用している. 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()
ox_pop_cmo()
ox_cmo_rpc()
ox_execute_string()
ox_push_cmd()
ox_get()
Go to the first, previous, next, last section, table of contents.