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 による実行は以下のように行なわれる。
他のRPCとの最大の差異は、 インターフェイス情報を事前にクライアント側とサーバー側で 共有している必要がないことである。 このため、ユーザがRPCを使用するためには、対象の名前を知っているだけ でよく、ユーザの負担が小さい。
図2にNinf RPC の実行の様子を示す