next up previous
Next: メタサーバ の必要性 Up: Ninfシステムの概要 Previous: Ninfシステムの概要

Ninf サーバ と Client

Ninf はサーバ・クライアントモデルのシステムである。 ネットワーク上に数値情報や計算自身を提供するサーバを設け、 ユーザにはサーバに接続するクライアント機能を持つライブラリを提供する。 サーバ、クライアント間は、独自に設計開発した Ninf RPC と呼ぶ RPC プロトコルを用いて通信する[2]。 計算などを提供するサーバをNinf サーバ と呼ぶ。

Ninf RPC は、通常のC言語で技術計算を行なうユーザーが、 容易に移行できることを目的に設計され、 以下の特徴を持つ。

例として、行列の乗算を計算するルーチンを考えてみよう。 典型的な呼びだしのインターフェイスは以下のようになるであろう。

    double A[N][N],B[N][N],C[N][N];
    mmul(N,A,B,C);

Ninfではこの関数を以下のような形で呼び出すことができる。

    Ninf_call("mmul",N,A,B,E);
このように、通常のC言語での呼び出しとほとんど同じ形式で Ninf の関数を呼び出すことが可能である。

計算ライブラリの提供者は、計算ルーチン自身とその インターフェイス情報を提供する必要がある。 インターフェイス情報はNinf IDLと呼ぶIDL(Interface Description Language) で記述する。 Ninf IDL ではデータの型を基本型とその配列のみに限定しているため簡潔であり、 インターフェイス情報の記述は容易である。 IDL記述をインターフェイス ジェネレータでコンパイルして、 インターフェイス情報を埋め込んだスタブプログラムを得る。 このスタブと計算ルーチンをリンクしたものが実行ファイル となる(図1)。

  
図: インターフェイス ジェネレータ

Ninf RPC による実行は以下のように行なわれる。

  1. クライアントが Ninf サーバ に計算のインターフェイス情報を リクエストする。
  2. Ninf サーバ がインターフェイス情報をクライアントに渡す
  3. インターフェイス情報に基づき、クライアントは転送するべき メモリ領域を決定し転送する。
  4. Ninf サーバ は計算ルーチンをスタブとリンクした実行ファイルを exec し、転送されてきたデータをexec したプロセスにフォワードする。
  5. 計算の結果を逆方向に転送する。

他のRPCとの最大の差異は、 インターフェイス情報を事前にクライアント側とサーバー側で 共有している必要がないことである。 このため、ユーザがRPCを使用するためには、対象の名前を知っているだけ でよく、ユーザの負担が小さい。

2にNinf RPC の実行の様子を示す

  
図: Ninf RPC



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