原子力基盤技術データベースのメインページへ

作成: 1999/02/16 関口 智嗣

データ番号   :190017
ネットワーク数値情報ライブラリ Ninf-通信方法
目的      :計算科学のためのネットワーク利用基盤技術の通信プロトコル
研究実施機関名 :工業技術院 電子技術総合研究所 情報アーキテクチャ部
応用分野    :計算科学研究、高性能計算、計算機利用技術

概要      :
 Ninf はサーバ・クライアントモデルのシステムである。 ネットワーク上に数値情報や計算自身を提供するサーバを設け、 ユーザにはサーバに接続するクライアント機能を持つライブラリを提供する。このシステムの実現の一つのキーとしてRPC(Remote Procedure Call)があり、独自なRPCの枠組、Ninf RPC が設計開発された。
 

詳細説明    :
 ネットワーク数値情報ライブラリ Ninf (Network enabled Information Services for the Global Computing Infrastructure)は科学技術計算におけるGlobal Computing を実現する基盤システムとして提案されている。
 
 複数の計算機で計算を行なう場合に重要になる点の一つとして 引数の引渡し方法がある。呼出側のプログラムと呼ばれる側のプログラム の間に、引数の型、大きさ、順番などに関して、 何らかの形で合意がなければならない。
 
 単純に計算をサーバ・クライアントに分散するものとしては UNIX RPC(Remote Procedure Call)がある。 UNIX RPCは、サーバから起動されるターゲットプログラムと クライアントのプログラムの間には密な関係があることを 前提としており、このため引数は単一の構造体として渡している。 しかし、このためにはターゲットプログラムとクライアントが 引数のための構造体の記述を共有している必要がある。 このためRPCをもちいてNinfを実現するには引数構造体の ヘッダーファイルを例えば ftp などで取得しなければならない。
 
 Ninfは、クライアントプログラムのプログラマに計算機ネットワークに 関する知識を要求しない手法の確立を目的としている。このため上記のような方法はとれない。 これを解決するためには、ターゲットのインターフェイス を動的に転送する必要がある。
 
 また、Ninf のターゲットである数値演算分野では、計算ライブラリに対する データの転送量が動的に変化する場合がある。 たとえば行列の乗算を例にとって考えてみよう。 一般に行列のサイズは行列乗算プログラムのコンパイル時には 決定しない。このため演算ライブラリは、引数によって行列のサイズを指定する。 このライブラリのインターフェイスは下のようになる。
 
   matrix_multiply(int size, double * A, double * B, double * C)
 
 これは一辺size の行列 A と Bを乗算して Cに代入するという計算ライブラリのインターフェイス である。 このとき、乗算ルーチンを呼び出すメインプログラムと乗算ルーチンの間で、 インターフェイスとしては、int一つとポインタが3つが渡されている だけである。 しかし実際に計算を行なうには、行列A,B,C のそれぞれに対して
 
   size * size * sizeof(double)
 
の大きさの領域を共有しなければならない。
 
 単一のプロセッサで実行する場合には、メインプログラムと乗算ルーチンが全メモリ領域を共有 しているのでこれは問題にならない。 しかし乗算ルーチンを別の計算機で実行するためには、 この領域を転送しなければならない。 このため行列のサイズが変化すると転送量が変化することになる。 UNIX RPCではこれを実現することはできない。
 
 我々は、以上のような要請に基づきNinf RPC システムを開発実装した。 このシステムではインターフェイスを実行時に動的に転送することで、 ユーザーの負荷を減らしている。 また、インターフェイス に実行時に評価する式を含み、 動的にこの式を評価することで、転送量を実行時に決定する。
 
 我々のシステムは、サーバとクライアント・ライブラリで構成される。 計算ライブラリを提供する人は、対象となるライブラリの 仕様をNinf IDL(Interface Description Language)と呼ばれる言語で記述する。 Ninf stub generator が、このIDLから引数に関する情報を とりだし、計算ライブラリとの間の橋渡しするstub プログラムを生成する。 このstubプログラムと計算ライブラリをリンクすることで ターゲットプログラムが生成される。 このターゲットプログラムを Ninf Executable と呼ぶ。
 
  計算ライブラリのインターフェイス はNinf Executable 自身に蓄えられている。 サーバはあらかじめNinf Executable にアクセスし、 Ninf Executable のインターフェイス をテーブルに格納しておく。 クライアント・ライブラリはNinf Executable の実行の際に、 引数の送信に先だってサーバと通信し、インターフェイス を取得し、 その情報にしたがって引数を送信する。 もちろん、これらの過程は、ライブラリによってユーザから隠蔽される。図1に Ninf RPC の概要を示す。


図1 Ninf RPCの概要

 Ninf RPC システムは、以下の要素から構成される。
 
 Ninf Serverは、クライアントからのリクエストを受けとると、 実際に計算を行なうNinf Executable を起動し、 その後のNinf Executable とクライアントの 通信を中継する。
 
 Ninf Client Libraryは、クライアントプログラムとリンクするライブラリ。 Ninf_call( funcname, arg, )を実現する。
 
 Ninf Stub Generatorは、Ninf IDL によって記述された定義ファイルから、 スタブ と make fileを作成する。
 
 Ninf Stub Libraryは、スタブ がNinf サーバやクライアントと通信するのに必要なルーチンを提供する。
 
 Ninf Registerは、Ninf サーバにNinf化したプログラムを登録する。 Ninf化したプログラムをNinf Executable 、Ninf化されるルーチンを Ninf Procedure と呼ぶ。図2に、Ninf RPC の構成を示す。


図2 Ninf RPCの構成

 

コメント    :
 RPCの存在を意識させずにユーザーに使ってもらうためには、 柔軟な枠組を持つRPCが必要である。 現在実用的に用いられている代表的なRPCとして UNIX RPC がある。このRPCは一般的に用いられており、その上にさまざまなアプリケーションが 実装されているが、われわれの目的には柔軟さにおいて不足がある。
 

原論文1 Data source 1:
ネットワーク数値情報ライブラリ Ninf のための RPCシステムの概要
中田 秀基, 佐藤 三久, 関口 智嗣
電子技術総合研究所
電子技術総合研究所 Tecnical Report TR-95-28 (1995)

原論文2 Data source 2:
Ninf: World-Wide Computing指向のネットワーク数値情報ライブラリ
佐藤 三久, 中田 秀基, 関口 智嗣, 松岡 聡, 長嶋 雲兵
新情報処理開発機構、電子技術総合研究所、東京大学工学部、お茶の水女子大学
インターネットコンファレンス '96

原論文3 Data source 3:
ネットワーク数値情報ライブラリ Ninf: システム実装と評価
関口 智嗣, 中田 秀基, 佐藤 三久, 長嶋 雲兵, 松岡 聡
電子技術総合研究所、新情報処理開発機構、お茶の水女子大学、東京大学工学部
情報処理学会研究報告 96-HPC-62

キーワード:科学技術計算、ハイパフォーマンスコンピューティング、情報サービス、高速ネットワーク、広域分散、リモートライブラリ、ワールドワイドコンピューティング、RPC
Computational Science and Engineering, High Performance Computing, Information Services, High Speed Network, Globally Distributed Computing, Remote Library, World-Wide Computing, RPC (Remote Procedure Call)
分類コード:190101, 190302, 190303

原子力基盤技術データベースのメインページへ