next up previous
Next: トランザクションの実行 Up: 分散並列実行の実装 Previous: 分散並列実行の実装

クライアント

クライアントのライブラリにトランザクションを定義するための 関数 Ninf_check_in, Ninf_check_out を用意した。

例として行列A,Bの積EC,Dの積Fを さらに掛け合わせたものをGに入れる計算を考えてみる。 これは以下のように書ける。

    Ninf_check_in();
    Ninf_call("mmul",N,A,B,E);
    Ninf_call("mmul",N,C,D,F);
    Ninf_call("mmul",N,E,F,G);
    Ninf_check_out();

Ninf_check_in 後の Ninf_call ではその場で実行を行なわずに、 データフローだけの作成を行なう。最後のNinf_check_outの時点で、 実際の計算を行なう。

Ninf_call 間の依存関係は、共有する構造データと入出力モードに よって判断する。構造データを共有するかどうかの判断は、 構造データのアドレスの比較によって行なう。 上の例では、EFが共有されている。



Hidemoto Nakada
Tue Feb 20 18:17:47 JST 1996