JP3628514B2 - Data transmission / reception method between computers - Google Patents

Data transmission / reception method between computers Download PDF

Info

Publication number
JP3628514B2
JP3628514B2 JP13236498A JP13236498A JP3628514B2 JP 3628514 B2 JP3628514 B2 JP 3628514B2 JP 13236498 A JP13236498 A JP 13236498A JP 13236498 A JP13236498 A JP 13236498A JP 3628514 B2 JP3628514 B2 JP 3628514B2
Authority
JP
Japan
Prior art keywords
data
transmission
reception
communication
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP13236498A
Other languages
Japanese (ja)
Other versions
JPH11328134A (en
Inventor
常之 今木
暢俊 佐川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP13236498A priority Critical patent/JP3628514B2/en
Publication of JPH11328134A publication Critical patent/JPH11328134A/en
Application granted granted Critical
Publication of JP3628514B2 publication Critical patent/JP3628514B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数の種類の通信網により接続された複数の計算機を有する計算機システムにおける、計算機間のデータ送受信方法に係り、特にメッセージパッシング型の通信を実行するのに好適な、計算機間のデータ送受信方法に関する。
【0002】
【従来の技術】
計算機間の通信規約としてTCP/IPが極めて一般的に使用されている。TCP/IPを使用して他のプログラムと通信するように構成されたプログラムを以下ではTCP/IPアプリケーションプログラムと呼ぶ。このTCP/IPアプリケーションプログラムからTCP/IP以外の通信規約を使用できるようにした計算機システムも存在する。すなわち、計算機システムを構成する計算機が性能の異なる複数のネットワークにより構成され、そのシステムの内の計算機が他の計算機と通信するときに、それらの計算機がその通信にこれらのネットワークのいずれを使用するかに依存して、TCP/IPまたは他の通信規約を使用するシステムも提案されている。例えば、バークレー大のSteven H.Rodriguesらが開発したシステムは、TCP/IPプロトコルで使用可能な広域のネットワークと、それより狭い領域でより簡潔でオーバヘッドが低い通信規約を使用する局所的なネットワークからなり、局所的なネットワークに接続された計算機同士は、この通信規約を使用して通信し、広域のネットワークに接続された計算機同士は、TCP/IP規約に従って通信する。たとえば、”High−Performance Local−Area Communication With Fast Socket”, USENIX ’97 Annual Technical Conference pp.257−274)参照。
【0003】
この計算機システムには、TCP/IPアプリケーションプログラムからもこの通信規約を利用できるようにするために、TCP/IPエミュレーションライブラリが用意されている。上記システムではこのTCP/IPエミュレーションライブラリは、高速ソケット(Fast Socket)と呼ばれている。
【0004】
高速ソケットは、簡潔な通信規約としてワークステーションクラスタ向けに開発されたアクティブメッセージ(Active Message)を用いる。例えば 文献 T. von Eicken, D. E. Culler, S. C. Goldstein, K. E. Schauser ”Active Messages: a Mechanism for Integrated Communication and Computation”, in Proceedings of the 19th International Symposium on Computer Architecture, May 1992 pp.256−266参照。アクティブメッセージでは、データを送る側のアプリケーションプログラムが受け手側のアプリケーションプログラムに割り込み、受け手側がその割り込みを契機にデータ受信処理を行うという方法でデータをやり取りする。
【0005】
並列計算機は、複数の計算機が互いに通信しながら協調して1つの問題を解決することを目的とした計算機である。この目的を満たすため、一般に並列計算機の内部の各計算機は高速の内部高速通信網により相互に接続され、並列計算機内の少なくとも一部の計算機は、さらに、LAN等のより広域のネットワークにより外部の計算機に接続されている。
【0006】
広域のネットワークに使用される通信規約は主としてTCP/IPである。並列計算機は、内部高速通信網を使用するために、各計算機に他の内部計算機と内部高速通信網を介して通信するための高速な通信ハードウェアとそのハードウエアを使用するための高速通信ライブラリを設けている。現在、多くの並列計算機に採用されている通信規約は、メッセージパッシング型の通信である。メッセージパッシング型の通信は、送信アプリケーションプログラムが発行する送信命令と受信アプリケーションプログラムが発行する受信命令が一対一に対応付けられた時に通信が行われるという通信である。多くの場合、この通信方式は並列計算機内部における高速通信ハードウェアに適している。このメッセージパッシング型通信を実現するために使用される高速通信ライブラリには、リモートメモリ書き込みライブラリあるいはPUTライブラリと呼ばれているものが主に使用されている。
【0007】
並列計算機内部の通信のオーバヘッドは、高速通信ハードウェアを使用することによりかなり減じることができる。アクティブメッセージで用いる割り込み型の通信方式では、割り込みのオーバヘッドが目立ってしまう。しかるに、メッセージパッシング型通信方式は、割り込みを前提としないので、並列計算機の内部での通信にはアクティブメッセージ型通信よりも適している。
【0008】
【発明が解決しようとする課題】
前述のように、並列計算機の内部高速通信網を使用するための通信規約は一般にはメッセージパッシング型である。しかし、並列計算機をビジネスの分野で利用する場合に使用するビジネス用のアプリケーションプログラムは多くはTCP/IP規約を使用するように構成されている。したがって、そのようなアプリケーションプログラムは、そのままではメッセージパッシング型通信方式をそのまま利用することはできない。しかも、メッセージパッシング型通信方式を利用した状態で、ストリーム通信を実現する方法が知られていない。また、割込を使用するアクティブメッセージ型通信で使用されるストリーム通信の実現方法をそのままメッセージパッシング型通信でのストリーム通信に利用するわけには行かない。
【0009】
従って本発明の目的は、メッセージパッシング型通信を実行するように構成されている計算機上で動作する複数のアプリケーションプログラム間でストリーム通信を実行可能にする計算機間データ送受信方法を提供することである。
【0010】
本発明のより具体的な目的は、第1の計算機ネットワークを介して、TCP/IPのごとき、メッセージパッシング型通信と異なる通信規約を用いて通信を実行するように構成されている複数のアプリケーションプログラム間で、その計算機ネットワークよりも高速な通信網を使用して、かつ、メッセージパッシング型通信を実行可能にする計算機間データ送受信方法を提供することである。
【0011】
さらに、本発明の他の目的は、第1の通信網とそれより高速の第2の通信網に接続された計算機上で動作し、他のアプリケーションプログラムとの間で、たとえばTCP/IP通信規約のような第1の通信規約に基づいて通信するように構成されたアプリケーションプログラムが、第1の通信網に接続された他の計算機上で動作する他のアプリケーションプログラムとの間で、その通信規約に基づいた通信を実行することを可能にするとともに、第2の通信網に接続された他の計算機上で動作する他のアプリケーションプログラムとの間でその第2の通信網を使用した高速の通信を実行する行うことを可能にする計算機間データ送受信方法を提供することである。
【0012】
さらに、本発明の他の具体的な目的は、上記第2の通信網を使用した通信を、メッセージパッシング型の通信とすることができる計算機間データ送受信方法を提供することである。
【0013】
【課題を解決するための手段】
上記目的を達成するために、本発明による計算機間データ送受信方法では、
第1の計算機上で実行されている第1のアプリケーションプログラムが発行した複数の送信命令により指定される複数の送信データのそれぞれを、第2の計算機上で実行されている第2のアプリケーションプログラムが発行した複数の受信命令に応答して、メッセージパッシング型の通信で受信する。この受信を第2の計算機上に設けられたエミュレーションライブラリにより制御する。
【0014】
さらに、上記複数の送信データの連なりからなるひと繋がりのデータの内、上記複数の受信命令により指定されるサイズ部分に区分して得られる部分をそれぞれの受信命令が指定する複数のバッファに格納するというストリーム通信を実現するように、受信されたそれぞれの送信データを処理する。この処理を、上記エミュレーションライブラリにより制御する。
【0015】
より具体的には、本発明による計算機間データ送受信方法は、以下の処理を実行する。
【0016】
(a)送信側アプリケーションが一回の送信命令によって送信しようとするデータの長さを、受信側エミュレーションライブラリにより検知し、
(b)上記の送信データ長を、アプリケーションが一回の受信命令によって指定しているデータ受け取り長と受信側エミュレーションライブラリにより比較し、
(c)上記の比較で、送信データ長がデータ受け取り長より長ければ、受信側エミュレーションライブラリが、一旦メモリ上に確保したバッファ領域にデータの全てを受信して、そこからアプリケーションが指定したデータ受け取り長分だけのデータをアプリケーション領域にコピーし、送信データ長がデータ受け取り長以下であれば、受信側エミュレーションライブラリが、アプリケーション領域にデータを直接受信する。
【0017】
(d)アプリケーションが受信命令を発行した時に、バッファ領域にデータが残っている場合には、そこからアプリケーション領域にデータをコピーする。
【0018】
さらにより具体的には、本発明によるデータ送受信方法を実現するために、TCP/IPエミュレーションライブラリを用意する。このライブラリは、TCP/IPのソケットアプリケーションプログラムインタフェースと同一のインタフェースを持ち、通信相手が並列計算機の外部であったら従来のシステムコールを、内部であったらMPI等の並列計算機用メッセージパッシング型通信方式による高速通信網を用いる、という切り分けを行う。すなわち、このTCP/IPエミュレーションライブラリには以下のような特徴を持たせる。
【0019】
(1)並列計算機内部で通信する場合は、メッセージパッシング型通信方式に適した通信手順を用いて、TCP/IPと同等のストリーム通信サービスを提供する。
【0020】
(2)TCP/IPエミュレーションライブラリとして適当な手段を用いて通信方法を切り分ける。
【0021】
(3)外部通信のデータと内部通信のデータをスピンループによって検出する。もしくは外部通信のデータと内部通信のデータを別々のスレッドで検出する。
【0022】
【発明の実施の形態】
<従来の技術とその問題点>
本発明の実施の形態を説明する前に、従来の技術とその問題点を説明する。
【0023】
(1)TCP/IP
図13にTCP/IPの階層を示す。TCP/IPでは、下からリンク層301,IP層302,TCP層303,アプリケーション層306の4階層を定めている。実際にはリンク層301の下に物理層が存在するが簡単化のためにこの層には言及しない。以下では、簡単化のためにアプリケーション層より下の層303,302,301からなる層群304をまとめてTCP/IP層と呼ぶ。一般にTCP/IPが定める手順で通信を行なうために必要なプログラム(以下、TCP/IP処理ルーチンと呼ぶ)はOSに含まれる。TCP/IPが定める手順で通信を実行するには、TCP/IP層304を構成する複数の層の各々によりそれぞれ特定の処理が実行される。本明細書では、これらの層がそれぞれ実行する複数の処理あるいはそれらの処理を実行する複数のプログラムルーチンを総称してTCP/IP処理ルーチンと呼ぶ。
【0024】
アプリケーションプログラムがTCP/IP処理ルーチンを利用するためのインタフェースとしては、一般にソケットアプリケーションプログラミングインタフェース(ソケットAPI)111が用いられる。アプリケーションプログラムがTCP/IP処理ルーチンを利用するために、ソケットライブラリと呼ばれるシステムコール群がOSの一部として設けられている。
【0025】
なお、本明細書では、データ受信のためのシステムコールおよび関数あるいはデータ送信のためのシステムコールおよび関数を呼び出すことを、それぞれの機能と組み合わせて受信命令あるいは送信命令を発行すると記載することがある。ソケットアプリケーションプログラムインタフェースは、ソケットライブラリのアプリケーションプログラムインタフェースとして定められている。ソケットアプリケーションプログラムインタフェースに従って記述された、TCP/IPで通信を行なうアプリケーションプログラム(以下、TCP/IPアプリケーションプログラムと呼ぶ)の例を以下に示す。
【0026】

Figure 0003628514
まず、他と通信を行おうとするサーバ側のTCP/IPアプリケーションプログラムおよびクライアント側のTCP/IPアプリケーションプログラムは、それが実行中の計算機に設けられたTCP/IP処理ルーチンに含まれたシステムコールソケット(socket)を呼び出す。呼び出されたシステムコールソケットは、通信端の役目を果たす、ソケットと呼ばれるオブジェクトを生成し、ソケット記述子を返す。上の例ではサーバ側、クライアント側のTCP/IPアプリケーションプログラムは、それぞれに返されるソケット記述子をsaまたはsb0として受け取る。
【0027】
ソケット記述子は、アプリケーションプログラム内でソケット毎に一意に決定されるソケットの識別子(ID)であり、整数値からなる。生成されたソケットに対する操作は、全てこのソケット記述子を指定して行う。以下、特に断らない限り、ソケットとソケット記述子は同義であるとして説明する。上のシステムコールの引数AF_INETは、アドレスファミリインタネットを表し、インタネットを介した通信にソケットを使用することを示す。さらに、引数SOCK_STREAMは、ストリーム通信を要求する。最後の引数はプロトコルを指定する引数である。この値が0のときには、プロトコルはその引数より前の二つの引数により決まる。今の場合には、TCP/IPプロトコルを使用することになる。ソケットが生成された後、サーバ側とクライアント側のTCP/IPアプリケーションプログラムは異なる手順でソケットの接続処理を行う。
【0028】
サーバ側は、TCP/IP処理ルーチンに含まれたシステムコールバインド(bind)を呼び出す。呼び出されたシステムコールバインドは、引数で指定されたソケットsaに引数で指定された名前を対応付ける。名前は、IPアドレスとポート番号の組合わせからなる。上の例では、slenで指定される大きさを持つ構造体serverに格納されたIPアドレスとポート番号の組からなる名前にソケット識別子saが対応付けられる。サーバ側は、さらにTCP/IP処理ルーチンに含まれたシステムコールリスン(listen)を呼び出す。
【0029】
このシステムコールリスンは、引数で指定されたソケットsaを接続要求の受領のためのソケットに設定する。このシステムコールの第2の引数は、その接続要求および他の接続要求を一時的に保持するのに用いるキューに要求するサイズを表し、今の場合には、このコールは、5個の接続要求を保持可能なキューを要求している。
【0030】
以上の処理の結果、論理的には、サーバ側とクライアント側の間に通信路が決定されたことになる。
【0031】
その後、サーバ側は、TCP/IP処理ルーチンに含まれたシステムコールアクセプト(accept)を呼び出す。このシステムコールは、引数により指定されたソケットsaを接続要求の待ち状態にする。このシステムコールの第2,第3の引数は、待つべき接続要求の発行元クライアント側のIPアドレスと長さを表す。
【0032】
一方、クライアント側は、TCP/IP処理ルーチンに含まれたシステムコールコネクト(connect)を呼び出す。このシステムコールは、引数で指定された名前、今の場合にはサーバ側のソケットsaに付けられた名前(構造体serverに格納された、IPアドレスsin_addrとポート番号sin_portの組み合わせ)に対して引数で指定されたソケットsb0を接続する。
【0033】
さらに、サーバ側の計算機では、先に呼び出されたシステムコールアクセプトが、この接続要求を受信し、システムコールアクセプトに対する前述の引数が指定するソケットsa1をこのクライアント側との通信のためのソケットとして新たに生成する。こうして、サーバ側のソケットsa1とクライアント側のソケットsb0との間で通信路が確立されたことになる。
【0034】
ソケット間の接続が確立された状態でクライアント側がサーバ側にデータを送信する時には、クライアント側は、TCP/IP処理ルーチンに含まれたシステムコールライト(write)を呼び出す。このシステムコールに対する引数では、送信すべきデータを保持するのに用いるバッファのアドレスbuffer0とそのバッファの長さlength0を指定する。システムコールライトは、このバッファ内のデータをこのシステムコールが指定するソケットsb0を用いて送信する。サーバ側はTCP/IP処理ルーチンに含まれたシステムコールリード(read)を呼び出す。このシステムコールは、その引数で指定されたソケットsa1を介して転送されたデータを受信し、引数で指定されたアドレスbuffer1のバッファに書き込む。このようにして、2つのアプリケーションプログラムの間でデータが転送される。もし必要ならば、クライアント側は複数の後続のデータをそれぞれ送信するために複数のライトシステムコールを呼び出し、サーバ側はそれらの後続のデータを受信するために一つまたは複数のリードシステムコールを呼び出す。
【0035】
ソケット記述子は、ファイルへの入出力や標準入出力などを行う際に用いられる、ファイル記述子の一種として定義されている。このためソケットアプリケーションプログラムインタフェースでは、ファイル等の入出力を行う場合と同様のインタフェースを通して、データの送受信を行うことができる。
【0036】
サーバ側とクライアント側のプログラムの間の通信が終了したときには、サーバ側は、システムコールクローズ(close)を呼び出し、引数で指定されたソケットsa1を閉鎖する。サーバ側は、さらに同じシステムコールクローズを再度呼び出し、システムコールクローズは今度はソケットsaを閉鎖する。クライアント側も同様にシステムコールクローズを呼び出して、このシステムコールはソケットsb0を閉鎖する。
【0037】
(2) 高速ソケットにおける通信方法の切り替え
従来のTCP/IPでは、システムコールバインドによってIPアドレスとポート番号からなる名前(server)をソケット(sa)に対応付けていた。高速ソケットでは、この時、さらに高速通信専用のソケットを以下のように生成する。まず、アプリケーションがシステムコールバインドの呼び出し時に指定する名前のポート番号(構造体serverに格納されたポート番号sin_port)にハッシュ関数を施して、新たにシャドウポート番号を導き出す。次に、システムコールソケットを呼び出して、シャドウソケットを新規に生成する。最後にバインドシステムコールを呼び出して、シャドウソケットにシャドウポート番号を対応付ける。高速通信を行なう場合は、サーバおよびクライアントがacceptおよびconnectを呼び出して接続するときに、このシャドウソケットを用いることで高速通信専用の通信路を貼る。
【0038】
この方法では、システムコールバインドやシステムコールリスンが呼び出される時に、特別な処理が必要となる。
【0039】
(3)TCP/IP処理ルーチンによるストリーム通信
TCP/IPのソケットライブラリは、ストリーム通信をサービスする。ストリーム通信とは、送信側のアプリケーションプログラムが一連のライトシステムコールにより送る複数のデータをひと繋がりのデータストリームとして処理し、そのデータストリームを受信側のアプリケーションプログラムが発行する一つあるいは複数のリードシステムコールが指定する任意の長さを有する一つあるいは複数のデータに切り分けて受け取るという通信方法である。
【0040】
図14を用いて従来のストリーム通信の動作を説明する。ここでは、送信アプリケーションプログラム801が受信アプリケーションプログラム802にデータを送る例を示している。送信アプリケーションプログラム801は、まず第1のライトシステムコールを呼び出してそのプログラムのバッファ803内の50キロバイト(KB)のデータを送信する(805)。なお、図14では単位KBは簡単化のために省略している。送信側のTCP/IP処理ルーチンは、バッファ803内のこの送信データを一旦OS内に確保したバッファ(図示せず)にコピーし、複数のパケットに分割して、受信側OSに送信する。 通常パケットのサイズは40〜1500バイトである。受信側OSは、それらのパケットをOS内に確保した複数のバッファ(図示せず)に受け取り、これらのパケットをリスト状に繋いで、データストリームを再構成する。送信アプリケーションプログラム801は、さらに第2のライトシステムコールを発行してそのプログラムの他のバッファ804内の80KBのデータを送信する(806)。このときも送信側のTCP/IP処理ルーチンと受信側のTCP/IP処理ルーチンは同様に動作して、このデータを先に送信されたデータと組み合わせて一つのデータストリームとしてOS内の前述のバッファに保持する。
【0041】
図において、809はOS900内に保持されたこのデータストリームを模式的に表す。先頭のデータ807、後続のデータ808はそれぞれ上記第1、第2のライトシステムコールにより送信されたそれぞれ50KB、80KBのデータを表す。ストリーム通信では、受信アプリケーションプログラムは、これらのデータを一本の連続した130KBのデータストリーム809として捉える。送信アプリケーションプログラム801内のバッファ803、804内のデータは、OS900内のデータストリーム809内のデータ部分807,809をそれぞれ保持する。このための、受信アプリケーションプログラム802は、第1のリードシステムコールを発行して、ストリームデータ809内の50KBの先頭データ807の内の30KBを受信アプリケーションプログラム802の30KBのバッファ812に受け取ることを要求する(814)。受信側のTCP/IP処理ルーチンは、このリードシステムコールに応答して、このデータストリーム809から先頭の30KBのデータ810をバッファ812にコピーする。受信アプリケーションプログラム802がさらに第2のリードシステムコールを発行すると、このシステムコールが指定する長さに従って、ストリームデータ809内にある残りの100KBのデータ811をこのシステムコールが指定するバッファ813にコピーする(815)。
【0042】
(4)アクティブメッセージ型通信でのストリーム通信
上記高速ソケットを使用したシステムでは、アクティブメッセージ型の通信を採用しながらストリーム通信を実現している。すなわち、このシステムでは、送信側のアプリケーションプログラムから送信要求が発行されると、この送信要求は、受信側のアプリケーションプログラムから受信要求が発行されるのを待たないで実行される。送信要求は、受信側の計算機に割り込みを発生し、この割り込みにより割り込みハンドラーが起動され、送信データは、この割り込みハンドラー内のバッファに一旦受信される。受信側のアプリケーションプログラムが受信要求を発行すると、割り込みハンドラーは、既に受信されたデータの内、この受信要求が要求する大きさのデータを、受信側のアプリケーションプログラムのバッファに転送する。もし、受信側のアプリケーションプログラムが要求するサイズが、受信済みのデータのサイズより小さければ、受信要求の処理が終了する。割り込みハンドラーに保持された残りのデータは、受信側のアプリケーションプログラムから新たな受信要求が発行されたときに、そのアプリケーションプログラムのバッファに転送される。
【0043】
逆に、受信側のアプリケーションプログラムが要求するサイズが、受信済みのデータのサイズより大きければ、割り込みハンドラーは、送信側のアプリケーションプログラムがその後データを送信してきたときに、そのデータを、受信側のアプリケーションプログラムに供給する。受信側の割り込みハンドラーは、送信側のアプリケーションプログラムが送信要求を発行する前に、受信側のアプリケーションプログラムから後続の受信要求が発行されたときにも、同様にその後送信側のアプリケーションプログラムが後続のデータをその後送信してきたときに、その後続のデータを受信側のアプリケーションプログラムに供給する。もし、この後続のデータが、上記最初の受信要求が要求する不足のデータのサイズあるいは上記後続の受信要求が要求するデータのサイズより大きければ、割り込みハンドラーは、あまりのデータをさらに後続の受信要求のために保持する。
【0044】
こうして、送信側のアプリケーションプログラムが発行する複数の送信要求により送信される複数のデータを、受信側のアプリケーションプログラムが発行する一連の受信要求に応答して受信側のアプリケーションプログラムに供給する。こうして、この方法では、割り込みハンドラー内のバッファに送信データを一旦保持することにより、ストリーム通信を実現している。
【0045】
しかし、割込を使用しないメッセージパッシング型の通信では、このような方法を使用してストリーム通信を実現できない。
【0046】
以下、本発明に係る計算機間データ送受信方法を図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、発明の第2の実施の形態以降においては、発明の第1の実施の形態との相違点を主に説明するに止める。
【0047】
<発明の実施の形態1>
(1)装置の概要
図1は、本発明に係る計算機間送受信方法を実行するための計算機システムの一例を示す。図において、並列計算機101の内部の2台の計算機102,103と、1台の外部計算機104とがお互いに通信網で繋がっていると仮定する。実際には、並列計算機101の内部および外部の計算機の台数はそれぞれ任意である。内部の計算機102と103は内部高速通信網105で繋がっており、内部の計算機102,103にはそれぞれ内部高速通信網105専用のネットワークインタフェースハードウェア119,120が存在する。内部高速通信網105は、複数のパケットを互いに並列にかつ高速に転送可能なネットワーク、たとえばハイパクロスバスイッチなどにより構成される。また、内部の計算機102,103の全てと外部の計算機104はグローバルな通信網106に繋がっており、各計算機にはそれぞれ通信網106専用のネットワークインタフェースハードウェア121,122,123が存在する。
【0048】
データの送受信は、各計算機のメモリ124,125,126にロードされているアプリケーションプログラム107,108,109の間で行われる。また、各メモリにはアプリケーションプログラムの他にOS127,128,129がロードされており、それぞれのOSの中にはTCP/IP処理ルーチン114,115,110が存在する。TCP/IPが定める手順で通信を実行するには、TCP/IP層304を構成する各層によりそれぞれ処理が実行される。TCP/IP処理ルーチンは、TCP/IPが定める手順で通信を実行するためにこれらの層がそれぞれ実行する複数の処理の総称で、これらのTCP/IP処理ルーチン114,115,110自体は公知のものと同じであり、既に述べたような、システムコールで呼び出し可能な複数の関数を含んでいる。TCP/IP処理ルーチン114,115,110は、広域通信を目的として、グローバルな通信網106専用のネットワークインタフェースハードウェア121,122,123によって通信を行う。
【0049】
計算機102のメモリ124には、さらにTCP/IPエミュレーションライブラリ112とメッセージパッシング型ライブラリ140と高速通信ライブラリ135とがロードされている。同様に、計算機103のメモリ125には、TCP/IPエミュレーションライブラリ113とメッセージパッシング型ライブラリ141と高速通信ライブラリ136とがロードされている。
【0050】
計算機102,103上の高速通信ライブラリ135,136は並列計算機101の内部での高速通信を目的として、内部高速通信網105専用のネットワークインタフェースハードウェア119,120によって通信を行うためのライブラリであり、リモートメモリ書き込みライブラリあるいはPUTライブラリと呼ばれているものが多く使用される。本実施の形態でも高速通信ライブラリ135、136にはこのPUTライブラリを使用する。しかし、本発明はこのライブラリに限定されるのではなく、他のライブラリたとえばPUT/GETライブラリと呼ばれるライブラリも使用可能である。
【0051】
一般に、高速内部通信網105を通した通信はグローバルな通信網106を通して通信する場合に比べて格段に速い。そこでTCP/IPエミュレーションライブラリ112,113は、内部計算機上のアプリケーションプログラム同士がTCP/IP通信を行おうとする際には、TCP/IP処理ルーチン114,115ではなくメッセージパッシング型ライブラリ140,141と高速通信ライブラリ135,136と内部高速通信網105を使用してメッセージパッシング型の通信を実現するように構成され、それでもって通信の高速化を図る。
【0052】
メッセージパッシング型ライブラリ140、141は、TCP/IPエミュレーションライブラリ112または113からの要求にしたがって、高速通信ライブラリ135または136を起動するためのライブラリである。メッセージパッシング型ライブラリ140、141は、一般的にはアプリケーションプログラム(本実施の形態においてはTCP/IPエミュレーションライブラリ112、113)に対してメッセージパッシング型のインタフェースを有するライブラリである。
【0053】
TCP/IPエミュレーションライブラリ112,113は、さらに、このメッセージパッシング型の通信においても従来のTCP/IP処理ルーチンが提供していたのと同じくストリーム通信を実現し、それでもって通信の高速化を図る。TCP/IP処理ルーチン114,115は、OS127,128の機能であるため、従来技術ではアプリケーションプログラムがこれらを利用する際には必ずコンテクストスイッチのオーバーヘッドが発生するが、本実施の形態では、高速通信ライブラリ135,136を使うので、OSを介さないためオーバーヘッドを回避でき、それにより、より一層の通信の高速化も期待できる。
【0054】
(2)論理構成と構成要素間のインタフェース
図1(B)は、上記ハードウェア構成を論理構成として表現した図である。この図では、以降の説明に関係の無い部分は全て省略してある。また、高速通信ライブラリ135,136と内部高速通信専用ハードウェア119,120をひとまとめにして高速通信機構116,117と表現している。さらに、各構成要素間のインタフェース111および118を新たに示している。計算機102,103,104や並列計算機101を表す四角はそれぞれ、その中の論理構成要素が一台の計算機または並列計算機101上で実行されることを示している。
【0055】
計算機104上では従来通り、アプリケーションプログラム109がTCP/IP110と、ソケットアプリケーションプログラムインタフェース111でリンクされている。並列計算機101の内部の計算機102,103上で動くアプリケーションプログラム107,108は、TCP/IPエミュレーションライブラリ112,113にソケットアプリケーションプログラムインタフェース111でもってリンクされている。また、TCP/IPエミュレーションライブラリ112,113は、OSの機能である従来のTCP/IP処理ルーチン114,115にソケットアプリケーションプログラムインタフェース111でもってリンクされ、同時に、高速通信機構116,117にMPI仕様のインタフェース118でもってリンクされている。
【0056】
(3)アプリケーションプログラム107,108
本実施の形態では、並列計算機101内のいずれかの計算機102上で動作しているアプリケーションプログラム例えば107が、いずれかの他の計算機上で動作している他のアプリケーションプログラムと通信する場合、当該他のアプリケーションプログラムが、並列計算機101内の計算機103上で動作しているアプリケーションプログラム例えば108か並列計算機101外の計算機104上で動作しているアプリケーションプログラム例えば109かによって、高速通信機構116とTCP/IP処理ルーチン114を使い分ける。並列計算機101内の異なる計算機102、103上で動作する二つのアプリケーションプログラム107、108が高速通信機構116、117を使用して相互に通信するためには、それらのアプリケーションプログラム間でデータを実際に送受信するときだけでなく、それぞれのアプリケーションプログラムのためのソケットを相互に接続するときにも高速通信機構116、117を利用するように特別の処理を行う必要がある。TCP/IPエミュレーションライブラリ112または113がこの特別の処理を実行するための複数の関数を含む。本実施の形態では、TCP/IPエミュレーションライブラリ112、113内に設けられた関数の名前にEMU_という接頭辞をつけ、TCP/IP処理ルーチン114、115または110内に設けられた前述の関数の名前と区別する。
【0057】
具体的には、並列計算機101内の計算機102、103上で動作しているアプリケーションプログラム107または108の内、サーバ側およびクライアント側として動作するアプリケーションプログラムはそれぞれ以下のプログラムを実行するように生成される。
【0058】
Figure 0003628514
サーバ側アプリケーションプログラムは従来と同様にsocket、bind、listenに対するシステムコールを呼び出す。これらのシステムコールは対応するTCP/IP処理ルーチンにより従来と同様に処理される。クライアント側のアプリケーションプログラムも従来と同様にsocketシステムコールを発行する。このシステムコールも対応するTCP/IP処理ルーチンにより従来と同様に処理される。こうしてサーバ側とクライアント側に対して従来と同様にソケットsa、sb0が生成される。
【0059】
その後サーバ側アプリケーションプログラムは、従来のシステムコールアクセプトに代えて、そのアプリケーションプログラムが動作している計算機内に設けられたTCP/IPエミュレーションライブラリ内に設けられた関数エミュレーションアクセプト(EMU_accept)を呼び出す。クライアント側のアプリケーションプログラムは、従来の関数コネクトに代えて、そのアプリケーションプログラムが動作している計算機内に設けられたTCP/IPエミュレーションライブラリ内に設けられた関数エミュレーションコネクト(EMU_connect)を呼び出す。さらに、サーバ側アプリケーションプログラムは、従来のシステムコールリードに代えて、TCP/IPエミュレーションライブラリ内に設けられた関数エミュレーションリード(EMU_read)を呼び出し、クライアント側アプリケーションプログラムは、従来のシステムコールライトに代えて、対応するTCP/IPエミュレーションライブラリ内に設けられた関数エミュレーションライト(EMU_write)を呼び出す。以下、これらの新たな関数が行う処理を説明する。
【0060】
(4)TCP/IPエミュレーションライブラリによるソケットの接続
図2において、サーバ側アプリケーションプログラム,クライアント側アプリケーションプログラムが、それぞれ上述のEMU_accept,EMU_connect関数を呼び出すと(処理501,502)、これらのシステムコールによってサーバ側のTCP/IPエミュレーションライブラリ内に設けられた関数EMU_acceptとクライアント側のTCP/IPエミュレーションライブラリ内に設けられたEMU_connect呼び出される。これらのシステムコールの引数は、サーバ側アプリケーションプログラム,クライアント側アプリケーションプログラムが、それぞれシステムコールacept、connectを呼び出し、ソケットsa、sb0の接続をTCP/IP処理ルーチン114,115に要求するときと同じである。
【0061】
呼び出された関数EMU_acceptとEMU_connectは、まずacceptシステムコール,connectシステムコールをそれぞれ発行する(処理503,504)。これらのシステムコールの引数は、関数EMU_accept,EMU_connectのそれぞれに対する引数がそのまま使用される。これによりサーバ側のTCP/IP処理ルーチン内に設けられたシステムコールacceptとクライアント側のTCP/IP処理ルーチン内に設けられたシステムコールconnectが呼び出され、従来と同様にコールされたシステムコールacceptはコールされたシステムコールconnectによって発行された接続要求を受領し、ソケットsa1が生成され、ソケットsa1とソケットsb0が通信路106を介して接続された状態になる。
【0062】
その後、関数EMU_accept,EMU_connectは、それぞれ相手のIPアドレスが並列計算機101の内部の計算機のアドレスであるか否かを確認する(処理506,507)。相手が並列計算機101の内部である場合は、ソケット記述子を内部テーブル410または411に登録する(処理510,511)。今の場合には、サーバ側のアプリケーションプログラム107用のソケットsa1、クライアント側のアプリケーションプログラム用のソケットsb0がそれぞれ内部テーブル410、411にそれぞれ登録される。さらに、TCP/IPエミュレーションライブラリ112、113は、並列計算機101内における各計算機の識別子などの高速通信機構116,117を用いるために必要なデータを交換する。このデータ交換のために、アプリケーションプログラム107、108はそれぞれ関数read,writeシステムコールを発行する(処理512、513、515、516)。ここでのデータ交換は、既に接続されているソケットsa1とsb0を利用し、従来と同様にTCP/IP処理ルーチン114,115と通信路106を介して行われる。その後それぞれサーバ側、クライアント側のアプリケーションプログラム107,108にリターンする(処理518,519)。このとき、サーバ側のTCP/IPエミュレーションライブラリ112はアプリケーションプログラム107に生成されたソケットsa1の識別子を戻す。
【0063】
処理506,507において、相手が並列計算機101の内部の計算機でないことが判明したときは、関数EMU_connectはクライアント側のアプリケーションプログラム108に返り、関数EMU_acceptはソケットsa1をサーバ側のアプリケーションプログラム107に返し、そのプログラムに戻る(処理508,509)。こうして、サーバ側のアプリケーションプログラムに対するソケットsa1とクライアント側のアプリケーションプログラムに対するソケットsb0は、それぞれに対応するTCP/IP処理ルーチンと通信路106を介して接続される。
【0064】
なお、図3は、本実施の形態によりアプリケーションプログラム107,108,109が生成したソケットがお互いに接続されている一つの状態を示している。ここでは、アプリケーションプログラム107のソケットSA1(402)とアプリケーションプログラム108のソケットSB0(403)とが接続され(407)、アプリケーションプログラム108のソケットSB1(404)とアプリケーションプログラム109のソケットSC0(405)が接続され(408)、アプリケーションプログラム109のソケットSC1(406)とアプリケーションプログラム107のソケットSA0(401)が接続されている(409)。ここで、TCP/IPエミュレーションライブラリ112,113は、内部ソケットテーブル410,411を保持している。内部ソケットテーブ410、411には、ソケットの接続先が内部計算機である場合に、そのソケット記述子を登録する。例えば、アプリケーションプログラム107のソケットSA1(402)の接続先であるソケットSB0(403)は、内部計算機103の上で動くアプリケーションプログラム108のソケットなので、SA1を内部ソケットテーブル410に登録する。同様に、ソケットSB0の接続先であるソケットSA1は、内部計算機102の上で動くアプリケーションプログラム107のソケットなので、SB0を内部ソケットテーブル411に登録する。一方、ソケットSA0(401)の接続先であるソケットSC1(406)は、外部計算機上アプリケーションプログラム109のソケットなので、SA0は内部ソケットテーブル410には登録しない。同様に、SC0に接続されているSB1も内部ソケットテーブル411には登録しない。
【0065】
(5)内部通信と外部通信の切り分け方法
その後、サーバ側のアプリケーションプログラムとクライアント側のアプリケーションプログラムはデータ通信を開始する。これらの二つのプログラムの内の一方および他方は、データ送信および受信のために関数EMU_write,EMU_readをそれぞれ呼び出す。先に示したクライアント側とサーバ側のプログラムの例では、サーバ側のアプリケーションプログラムが、関数EMU_readを呼び出し、クライアント側のアプリケーションプログラムが関数EMU_writeを呼び出している。これらで指定する引数は、TCP/IP処理ルーチン114,115に含まれたシステムコールwrite、readに対する引数と同じである。
【0066】
図4を参照するに、EMU_read,EMU_writeが呼び出されると(処理701、702)、それぞれの関数は、それぞれの引数で指定されたソケットsa1、sb0のソケット記述子が対応する内部ソケットテーブル410、411にそれぞれ登録されているか否かを判定する(処理703,704)。それぞれのソケット識別子が内部ソケットテーブル410,411にそれぞれ登録されているときには、後に詳細に説明する手順で高速通信機構116,117、高速内部通信網105を用いてメッセージパッシング方式の通信を行う(処理707,708)。それぞれのソケット識別子が内部ソケットテーブル410、411に登録されていなかったら、そのまま従来のread,writeシステムコールをそれぞれ指定されたソケットに対して発行する(処理705,706)。これらのシステムコールは対応するTCP/IP処理ルーチン114,115により処理され、グローバル通信路106を用いた通信がそれらのTCP/IP処理ルーチン114,115により実行される。
【0067】
なお、図5は、図3で示したソケットの接続状態において、各アプリケーションプログラム107,108,109同士が通信を行う場合のデータの流れを示して、上記切り分け方法を説明するための全体構成図である。アプリケーションプログラム107とアプリケーションプログラム108が通信する場合は、ソケットsa1(402)とソケットsb0(403)を通信端として用いる。これらのソケットは、TCP/IPエミュレーションライブラリ112,113が保持する内部ソケットテーブル410,411に登録されている。そこでTCP/IPエミュレーションライブラリ112,113は、データ通信処理にTCP/IP処理ルーチン114,115ではなく高速通信機構116,117を利用する(601)。一方、アプリケーションプログラム108とアプリケーションプログラム109が通信する場合は、ソケットSB1(404)とソケットSC0(405)を通信端として用いる。アプリケーションプログラム108とリンクされているTCP/IPエミュレーションライブラリ113が保持する内部ソケットテーブル411には、SB1は登録されていない。そこでTCP/IPエミュレーションライブラリ113は、データ通信処理に、TCP/IP処理ルーチン115をそのまま利用する(602)。これによって、外部のTCP/IP処理ルーチン110とのデータ交換が可能となる。
【0068】
本方式により、バインドシステムコール、リスンシステムコールは従来のTCP/IP処理ルーチンから変更せずにそのまま用いて、内部通信と外部通信の切り分けを実現できる。
【0069】
(6)メッセージパッシング型ライブラリ140,141
並列計算機の各計算機に使用される内部高速通信網105を使用するための通信ハードウェア119、120および高速通信ライブラリ135,136はベンダ特有である場合が多いので、その利用方法もマシンによって様々である。よって、各マシンの高速通信ハードウェアと高速通信ライブラリを利用したアプリケーションプログラムを作ろうとする場合、マシンに特化した汎用性の低いプログラムにならざるを得なかった。これに対して、並列計算機内部の通信ハードウェアを利用して通信するためのライブラリを用意し、このライブラリのアプリケーションプログラムインタフェースを標準として規定することで、アプリケーションプログラムの汎用性を高めようという活動が世界中で活発である。
【0070】
このメッセージ型の通信を使用するための汎用のインタフェースとして現在広く使用されているインタフェースは、MPIと呼ばれるメッセージパッシングインタフェース(MPI−Message Passing Interface)である。例えば、文献:”MPI: Message Passing Interface Standard version 1.1”, MPI Forum, University of Tennessee, 1995 参照。このインタフェースは、メッセージパッシング型の通信を実現するための上に述べた高速通信ライブラリが存在することを前提としているものであり、このインタフェースを使用しても、メッセージパッシング型の通信は、基本的には上記高速通信ライブラリにより実現されることには変わらない。
【0071】
多くの並列計算機ベンダが、MPIに準拠したアプリケーションプログラムが並列計算機内部の高速通信ハードウェアを使用できるようにするための高速通信ライブラリを提供している。
【0072】
本明細書では、メッセージ型の通信を使用するためのインタフェースをメッセージパッシング型インタフェースと呼び、そのインタフェースを有するライブラリをメッセージパッシング型ライブラリと呼ぶ。特に、MPI仕様のインタフェースをMPIあるいはMPIインタフェースあるいはメッセージパッシングインタフェースと呼び、そのインタフェースを有するライブラリをMPIライブラリあるいはメッセージパッシングインタフェースライブラリと呼ぶことがある。
【0073】
本実施の形態では、メッセージパッシング型ライブラリ140、141として多くの並列計算機で利用可能である標準のMPI仕様により定められたインタフェースでもってコマンドあるいはデータを交換するライブラリを使用する。それでもって、TCP/IPエミュレーションライブラリ112,113の汎用性を高める。しかし、他の仕様のインタフェースを使用してもよい。
【0074】
MPIに準拠した従来のアプリケーションプログラムの記述例を以下に示す。本実施の形態では、TCP/IPエミュレーションライブラリ112、113は、メッセージパッシング型ライブラリ140、141を起動する部分に関しては、以下に示すプログラム部分を有する。このプログラム部分のより詳細は、後にふれる。
【0075】
Figure 0003628514
MPIでは、通信しようとする全プロセスを一斉に立ち上げる。この時、各プロセスにはランクと呼ばれるプロセス識別子が決定される。上の例では、2つのプロセス、すなわち送信側プロセスsenderと受信側プロセスreceiverとを立ち上げる場合を示している。この時、それぞれのプロセスにはランク0と1が付けられる。各プロセスは、まずMPI初期化関数MPI_InitによってMPIの初期化を行い、MPI通信ランク関数MPI_Comm_rankによって自分のランクを取得する。その後、各ランクごとの処理を行う。上の例では、ランク1のプロセスがMPI送信関数MPI_Sendによって送るデータを、ランク0のプロセスがMPI受信関数MPI_Recvで受け取る場合を示している。
【0076】
(7)高速通信機構を用いたメッセージパッシング型の通信
高速通信機構116,117を用いるデータ受信処理707,データ送信処理708の詳細を説明する前に、これらの処理の実行に必要な、高速通信機構116,117を用いたメッセージパッシング型の通信の概要を説明する。
【0077】
一般にメッセージパッシング型の通信を実行するには、送信側の計算機がデータを送信するための送信関数を実行し、受信側の計算機がそのデータを受信するための受信関数を実行する。後続のデータをそれらの計算機の間で転送するために、それらの関数が繰り返し実行される。本実施の形態では、メッセージパッシング型の通信の具体的な説明として、MPI仕様によるメッセージパッシング通信を説明する。
【0078】
MPI仕様によるメッセージパッシング通信では、送信側の計算機は送信関数MPI_Sendを実行し、受信側の計算機は受信関数MPI_Recvを実行する。今の場合、送信処理708が起動されると、送信側のTCP/IPエミュレーションライブラリ113は、先に記載したMPI仕様のアプリケーションプログラムの例にあるように、送信関数MPI_Sendを呼び出す。なお、送信関数MPI_Sendを呼び出す前に初期処理としてMPI_Init、MPI_Comm_rank等の関数の呼び出しを実行する必要があるが、これらの処理は、先に記載した関数EMU_accept, EMU_connect内の内部テーブル登録処理(510,511)と同時に行なう 。一方、受信側のTCP/IPエミュレーションライブラリ112は、内部高速通信網105を用いるために受信関数MPI_Recvを呼び出す。
【0079】
送信側のTCP/IPエミュレーションライブラリ113が上記送信処理708内で呼び出す関数MPI_Sendの引数で指定するバッファアドレスbufferおよびバッファ長lengthは、送信側のアプリケーションプログラム108が発行した関数EMU_writeの対応する引数に等しくされる。一方、受信側のTCP/IPエミュレーションライブラリ112が受信処理707内で呼び出す関数MPI_Recvの引数で指定するバッファアドレスbufferおよびバッファ長lengthは、後に説明するように受信側のアプリケーションプログラム107が発行した、関数EMU_readの引数が指定するバッファアドレスおよびバッファ長もしくは受信側のTCP/IPエミュレーションライブラリ113内に設けられる特定のバッファのアドレスおよびサイズに等しくされる。
【0080】
送信側のメッセージパッシング型ライブラリ141内の関数MPI_Sendは、起動されると、対応する高速通信ライブラリ136に対し、関数MPI_Sendに対する引数が指定するアドレスのバッファからその引数が指定する長さのデータを内部高速通信網105を介して受信側の計算機124に転送することを要求する。受信側のメッセージパッシング型ライブラリ140内の関数MPI_Recvは、起動されると、対応する高速通信ライブラリ135に対し、その高速通信ライブラリ135に、この転送されたデータを内部高速通信網105を介して受信し、関数MPI_Recvに対する引数が指定するアドレスのバッファにその引数が指定する長さのデータを書き込むことを要求する。
【0081】
起動された送信側の高速転送ライブラリ136と受信側の高速転送ライブラリ135は、要求されたデータの送信と受信をそれ自体公知の方法により内部高速通信網105を介して行う。このデータ転送は具体的には以下のように行われる。一般にはリモートメモリ書き込みコマンドあるいはPUTコマンドといわれるコマンドが使用される。以下では、このコマンドをPUTコマンドと呼ぶ。内部高速通信網105を介したデータ転送を行う通信方法は3つのPUTコマンドにより行われる。
【0082】
まず、送信側のTCP/IPエミュレーションライブラリ113から関数MPI_Sendが呼び出されると、送信側のメッセージパッシング型ライブラリ141は、この引数が指定したバッファ長(これはすなわち送信すべきデータの長さである)を含むデータの属性情報を含むヘッダの送信を送信側の高速転送ライブラリ136に要求する第1のPUTコマンドを発行する。この高速転送ライブラリ136は、受信側の計算機102にこのヘッダを送信する。計算機102内の内部高速通信専用ハードウェア119が、このデータを受信側のメモリ124内の所定の位置に直接書き込む。
【0083】
一方、受信側TCP/IPエミュレーションライブラリ112から受信命令MPI_Recvが呼び出されると、受信側のメッセージパッシング型ライブラリ140は、まず送信側の計算機103からヘッダがすでに送られてきているか調べる。このために後述するデータ検査命令MPI_probeが使用される。ヘッダが送られてきていないときには、その受信命令の実行は終了する。ヘッダがすでに送られてきているときには、そのヘッダ内のバッファ長から送信データが受信可能か否かを判定する。すなわち、その送信データの長さが、上記受信命令MPI_Recvが指定したバッファ長以下であるか否かが判定される。MPI仕様のメッセージパッシング通信に限らず、一般にメッセージパッシング型の通信では、送信命令が指定した送信データ長が、受信命令が指定した受信バッファサイズより大きいときには、受信側の計算機はその送信データを受信しないようになっている。もし受信側の計算機が受信側のバッファのサイズを超える受信データを受信したときには、そのバッファ以外のメモリ領域が受信データにより破壊する恐れがあるためである。受信側のメッセージパッシング型ライブラリ140は、上記判定の結果、送信データが受信可能であると判断したときには、受信命令MPI_Recvに対する引数が指定した受信バッファのアドレスの送信を受信側の高速通信ライブラリ135に要求する第2のPUTコマンドを発行する。この高速通信ライブラリ135はこのコマンドに対する応答としてバッファアドレスを送信側の計算機103に送信する。102内の内部高速通信専用ハードウェア119は、このアドレスを送信側のメモリ125内の所定の位置に書き込む。なお、上記判定の結果、送信データが受信可能でないときには、受信側のメッセージパッシング型ライブラリはバッファドレスを返さないで、エラーを送信側の計算機に通知する。
【0084】
最後に、送信側のメッセージパッシング型ライブラリは、送信データと受信されたバッファアドレスの送信を送信側の高速転送ライブラリ136に要求する第3のPUTコマンドを発行する。高速転送ライブラリ136は、このデータとバッファアドレスを受信側の計算機102に送信する。受信側の計算機102内の内部高速通信専用ハードウェア119は、このバッファアドレスとデータを受信し、そのアドレスを有するバッファに受信したデータを直接書き込む。こうして、データの転送が終了する。
【0085】
なお、内部高速通信網105を介したデータ通信方法は以上の方法に限らず他の方法も使用可能である。たとえば並列計算機によっては、高速通信ライブラリはPUTコマンドの他にリモートメモリ書き込みコマンドあるいはGETコマンドも実行可能である。このような並列計算機の場合には、送信側のメッセージパッシング型ライブラリ141が上記第3のPUTコマンドを発行するのに代えて、受信側のメッセージパッシング型ライブラリ140がGETコマンドを発行し、受信側の高速通信ライブラリ135が送信側のメモリ125から送信データを読み出す処理を実行する。
【0086】
(8)メッセージパッシング型の通信におけるストリーム通信
図4に示されたデータ受信処理707,送信処理708の詳細を図7、8に示した具体例を適宜参照して説明する。図4において、すでに述べたように送信側のアプリケーションプログラム108が、関数EMU_writeを呼び出した結果(702)、送信処理708が起動されると、メッセージパッシング型ライブラリ141に含まれた関数MPI_Sendが呼び出される(781)。図7に示した例では、関数EMU_write呼び出し時(702)の引数ではバッファア803のアドレスSbuffと、50キロバイト(KB)のバッファサイズを指定すると仮定する。関数MPI_Send呼び出し時(781)の引数が指定するバッファアドレスとバッファサイズはこれらの値に等しくされる。以下では使用する関数の他の引数の説明は簡単化のために省略する。また、指定するバッファサイズの単位はKBであると仮定し、関数の引数を図示するときには、この単位KBは簡単化のために図示しない。メッセージパッシング型ライブラリ141はこの関数呼び出し781に応答して、データの転送のために、既に述べたように高速通信機構117にヘッダの送信を指示し、その後データの送信を指示する。
【0087】
一方、図4において、すでに述べたように受信側のアプリケーションプログラム107が、関数EMU_readを呼び出した結果(701)、受信処理707が起動されると、この受信処理707では図6に示す処理がなされる。なお、図7に示した例では、関数EMU_readの呼び出し701の引数が指定するバッファアドレスはRbuffであり、バッファサイズは30KBであり、送信関数EMU_writeの呼び出し702が指定したバッファサイズより小さいサイズを指定していると仮定する。
【0088】
この受信処理707では、まず、受信側のTCP/IPエミュレーションライブラリ112内に設けられるデータ受信用の特定のバッファ(後に示すバッファ901)に受信済みでまだ受信側のアプリケーションプログラムに転送されていないデータが残っているかを判定する命令を発行する(処理202)。この命令は図7には示されていない。今仮定しているように最初に関数EMU_readが実行されたときにはこの判定の結果は否定的となる。その後、送信データ検知命令MPI_probe771が発行され、受信側のアプリケーションプログラムに宛てて送信されようとするデータがあるかを判別する(処理206)。この命令は、具体的には、このアプリケーションプログラム107に宛てて送信されるべきデータに関する、既に説明したヘッダが高速通信機構116により受信済みであるか否かを判定する命令である。もしこのヘッダが送信側のアプリケーションプログラム108からまだ送信されていない場合には、受信処理708は、処理を終了し受信側アプリケーションプログラム107に戻る(処理207)。受信側アプリケーションプログラム107は受信が失敗したときの処理を実行する。たとえば、受信が成功するまで関数701を繰り返し呼び出す。
【0089】
ヘッダが送信側のアプリケーションプログラム108からすでに送信済みであると仮定すると、そのヘッダが指定する送信データが受信側のアプリケーションプログラムのバッファ812に入りきるか否かが判定される(処理208)。図7の例では送信データのサイズは、50KBであり、受信側のバッファ812のサイズは30KBであり、この判定の結果は否定的となる。このような場合に、受信側のTCP/IPエミュレーションライブラリ112が、この送信データを受信側のアプリケーションプログラム107のバッファ812に受信するMPI_Recv命令を発行すると、受信側のメッセージパッシング型ライブラリ140は、通常はMPI仕様によりこの命令をエラーとして処理するかもしくは送信データの内、受信側のアプリケーションプログラムのバッファ812に入りきらない分を捨ててしまう。
【0090】
これを防ぐために、本実施の形態では受信側アプリケーションプログラム107とリンクしている受信側TCP/IPエミュレーションライブラリ112内に、特別なバッファ901を用意し、受信側TCP/IPエミュレーションライブラリ112はここに送信データをこのバッファ901に一旦受信することを要求する。すなわち、このバッファ901のアドレスEbuffと全送信データのサイズ50KBとを指定する、関数MPI_Recvを呼び出す(772)。
【0091】
この関数呼び出し772に応答して、受信側の高速通信機構116と送信側の高速通信機構117は、すでに述べたようにしてデータを送受信し、受信側の高速通信機構116は、このデータを上記バッファ901に書き込む。受信側のTCP/IPエミュレーションライブラリ112はその後、この受信データの内、関数EMU_Read呼び出し時の引数で指定されたサイズ30KBのデータを受信側のアプリケーションプログラム107のバッファ812にコピーするメモリコピー命令(MEMCPY(Rbuff、Ebuff、30KB))773を発行する(処理209)。その後処理はアプリケーションプログラムに戻る(処理211)。こうして、TCP/IPエミュレーションライブラリ112内のバッファ901に受信されたデータの一部906が残っている状態で、アプリケーションプログラム間の送受信が完了する。
【0092】
その後さらに送信側アプリケーションプログラム108がアドレスSbuff’のバッファ804のデータ80KBを送信するために関数EMU_write(Sbuff’,80KB)(790)(図7(B))を呼び出すと、同様にして送信処理708が実行され、この処理の中で関数MPI_Send(Sbuff’,80)(791)が呼び出される。一方、受信側アプリケーションプログラム107もアドレスRbuff’のバッファ813に100KBのデータを受信するために関数EMU_read(Rbuff’,100KB)(775)を呼び出すと、これに対しても同様に受信707が実行される。
【0093】
この受信処理707は、最初の判定処理202における判定では、受信側のTCP/IPエミュレーションライブラリ112内の受信用のバッファ901内に未転送のデータ906が残っていると判断される。その結果、メモリコピー命令memcpy(Rbuff’,Ebuff+30KB,20KB)(776)を発行して、このデータ906を受信側のアプリケーションプログラム107内のバッファ813の先頭領域907にコピーする(処理203)。このメモリコピーするデータの長さは、バッファ901に保持されているデータの長さの内、関数EMU_readに対する上記第2の関数呼び出しが指定するバッファ長を超えない範囲に設定される。今の場合にはバッファ901に保持されているデータの長さが20KBであり、受信を要求されたデータの長さが100KBより小さいので、このデータ20KBが全てコピーされる。
【0094】
その後受信側アプリケーションプログラム107が要求する80KBの残りのデータをさらに受信するために、処理206が実行される。この処理206ではすでに説明したように、送信データがあるか否かをか調べる命令MPI_Probe()が発行される。具体的には、送信データに対するヘッダが受信済みであるか否かが判定される。今の場合に、送信側の関数呼び出し791がすでに実行済みであると仮定すると、80KBの送信データがあることが判明する。その場合には、この送信データのサイズが受信側アプリケーションプログラム102が指定するバッファ813に入りきるか否かが判定される(処理208)。今の場合には受信側のアプリケーションプログラムのバッファ813の残りの領域908のサイズは80KBなので、送信データはバッファ813のこの領域908に入りきる。
【0095】
この結果、関数MPI_Recv(Rbuff’+20KB,80KB)(778)が呼び出される。この関数呼び出しは、バッファ813の残りの領域908のアドレスと送信データのサイズ80KBを指定する。こうして、この送信データがバッファ813の領域908に直接受信される(処理210)。その後、受信を要求されたデータが全て受信されたか否かが判定される(処理212)。今の場合は判定の結果が肯定的であるので、受信処理707は終了し、処理はアプリケーションプログラムに戻る(処理211)。
【0096】
以上の手順により、複数の関数EMU_writeの呼び出し(702,790)が指定する送信データをひと繋がりのデータストリームとして複数の関数の呼び出しEMU_read(701、775)により受信する、ストリーム通信を実現することができる。
【0097】
送信側のアプリケーションプログラムが指定する送信データのサイズが受信側のアプリケーションプログラムが指定するバッファのサイズよりも小さいときでも、以下のようにしてストリーム通信が簡単に実現される。たとえば、送信側のアプリケーションプログラムが50KBのデータの送信を繰り返し要求し、受信側のアプリケーションプログラムが100KBのデータの受信を要求する場合のストリーム通信を図8を参照して説明する。
【0098】
送信側のアプリケーションプログラムが呼び出す関数EMU_write(702)に対する送信処理708(図4)の中で、関数MPI_send(781)が呼び出される。この関数呼び出しでは、送信側アプリケーションプログラムのバッファ803のアドレスSbuffとサイズ50KBを指定する。
【0099】
受信側のアプリケーションプログラムが呼び出す関数EMU_read(701)に対する受信処理707(図4)も、すでに述べたように図6に従い処理される。今の仮定では処理202での判定は失敗する。処理206において、データ検査命令771が実行されたときに、送信データがあると判定されたと仮定する。今の場合には受信側のバッファ812のサイズは、送信側のバッファのサイズより大きいので、処理208での判定の結果は肯定的となる。その結果、処理210が実行される。この処理では、送信データを受信側アプリケーションプログラムが指定したバッファ812に直接受信するための関数MPI_recv(774)が呼び出される。この関数呼び出しは、受信側アプリケーションプログラムのバッファ812の先頭アドレスRbuffと送信側のバッファ803のサイズ50KBを指定する。こうして、送信側のバッファ803内の全データが、受信側のバッファ812内の先頭の50KBの領域907に書き込まれる。次に処理212が実行される。今の場合、受信を要求されたデータのサイズは100KBであるのに対して、すでに受信されたデータのサイズは50KBである。したがって、要求されたデータの一部がまだ受信されていない。したがって、判定212の結果は否定的となり、残りのデータを受信するために処理206が再度実行される。
【0100】
もし、送信側のアプリケーションプログラムが次に関数EMU_write790を呼び出せば、それに対する送信処理708(図4)の中で、関数MPI_send(791)が同様に呼び出される。この関数呼び出しでも、送信側アプリケーションプログラムの次のバッファ804のアドレスSbuff’とサイズ50KBを指定する。
【0101】
上記処理206を繰り返したときに、すでに送信信側のアプリケーションプログラムが上記次の関数EMU_Send791を呼び出していたならば、処理206での判定結果は肯定的となり、判定処理208に移る。今の場合には、受信側のバッファ812の残りの領域910のサイズは送信されようとするデータのサイズに等しいので、この判定の結果は肯定的となる。その結果、処理210が実行され、送信データを受信側のバッファ812の残りの領域910に直接書き込むための第2の受信関数779が呼び出される。この関数呼び出しでは、受信側アプリケーションプログラムのバッファ812の残りの領域910のアドレスRbuff+50KBと送信データのサイズ50KBとを指定する。こうして、処理212において、要求された全てのデータの受信が完了したと判断されるので、受信処理707は完了する。なお、上記処理206が繰り返し実行された時点で送信データが存在しないときには、受信処理707は終了し、処理は受信側アプリケーションプログラムに戻る。また、上記処理208が繰り返された時点で、処理208での判定結果が否定的であるときには、処理209が実行される。この処理の内容は、すでに説明したものと同じである。以上のごとく、送信側のアプリケーションプログラムが発行した送信命令EMU_writeが指定するバッファのサイズと受信側のアプリケーションプログラムが発行した受信命令EMU_readが指定するバッファのサイズが異なっていても、また、送信側のアプリケーションプログラムが発行する送信命令EMU_writeの数と受信側のアプリケーションプログラムが発行する受信命令EMU_readの数が異なっていてもバッファストリーム通信が実現されることが分かる。
【0102】
以上の説明から分かるように、本実施の形態によれば、並列計算機内部の様に、メッセージパッシング型通信方式の高速通信機構が提供されている計算機で動くアプリケーション同士が、TCP/IPを用いてデータ通信を行なう際に、高速通信機構の特徴を活かした高速通信が可能となる。また、それ以外の計算機上で動くアプリケーションとは、従来通りのTCP/IPによる通信を保証する。利用者は、既存のTCP/IPアプリケーションを一切変更する必要がない。
【0103】
<発明の実施の形態1の変形例>
本発明は、実施の形態1の内容に限定されるのではなく、以下に例示する変形例および他の変形例を含めいろいろの実施形態により実施できる。
【0104】
(1)広域ネットワークの通信規約としてTCP/IPを使用したが、これに代えて他の通信規約を用いることもできる。そのときには、TCP/IP処理ルーチン、エミュレーションライブラリを変更する必要があるのは言うまでもない。
【0105】
(2)実施の形態1では、メッセージパッシング型ライブラリを使用したが、これを使用しないことも可能である。このときには、エミュレーションライブラリは、直接高速通信ライブラリを呼び出すことになる。
【0106】
(3)さらに、この通信ライブラリをなくすことも可能である。たとえば、これに代えて、専用の回路を使用することもできる。
【0107】
(4)実施の形態1では、内部計算機は全て広域通信網に接続されると想定した。しかし、一部の内部計算機が広域通信網に接続されている場合にも同様に本発明を適用できる。
【0108】
(5)実施の形態1では、広域通信網と内部高速通信網の両方を利用することを前提とした。しかし、本発明によるストリーム通信それ自体は、メッセージパッシング型の通信を実行可能な計算機間に適用できるものであり、したがって、このストリーム通信を実行するには、TCP/IP通信を使用しないでメッセージパッシング型の通信のみを使用するアプリケーションプログラム間の通信にも適用できる。この場合には複数種類の通信網を使用しなくてもよい。その際には、送信側のエミュレーションライブラリは実質的には使用しない変形例も可能である。
【0109】
<発明の実施の形態2>
TCP/IP処理ルーチンには従来からアプリケーションプログラムが使用可能な関数としてselect関数が設けられている。そもそもソケット記述子はファイル記述子の一種として定義されている。このファイル記述子が指定するオブジェクトから、データを取得することが可能であるかどうかを調べるためのシステムコールとして、select関数が用意されている。例えば、あるソケットから受け取り可能なデータが送信側から送られてきている(あるいは送られようとしている)かどうかも、select関数によって調べることができる。具体的にはあるソケットを割り当てられているアプリケーションプログラムが、送信システムコールwriteを発行したか否かが判定できる。select関数では、見張ろうとするファイル記述子をビット列で指定する。このビット列の各ビットはそれぞれ個別のファイル記述子に対応しており、ビットを1にすることでファイル記述子を指定する。複数のビットを1にすれば、一回のselect関数で複数のファイル記述子を同時に見張ることができる。select関数は、見張っているファイル記述子の何れかがデータ受け取り可能な状態になるまでブロックする。
【0110】
発明の実施の形態1で用いるTCP/IPエミュレーションライブラリでは、並列計算機内部の通信時には従来のソケットライブラリを用いないため、selectシステムコールでは、内部通信用のソケットからデータ受信可能であるかどうかを調べることができない。そこで、本実施の形態では、実施の形態1のごとくTCP/IPエミュレーションライブラリを使用する計算機システムにおいても、アプリケーションプログラムが従来と同様にセレクト関数を利用可能にする。
【0111】
本実施の形態では、内部ソケットテーブル410、411等に登録されているソケット記述子に対しては、内部通信専用のselectに相当する処理を行い、それ以外のファイル記述子に対しては、従来のselectシステムコールをそのまま用いる、という切り分けを行うセレクト関数EMU_selectをTCP/IPエミュレーションライブラリ113内に設ける。
【0112】
ただし、内部通信用のselectとselectシステムコールは同時に並行して実行しなくてはならない。2つのselectを逐次に実行するのでは、例えば内部通信用のselectがデータを待っている間は、外部との通信用のソケットや標準入出力などがデータを受け取り可能な状態になった場合でも、それを検知することができないからである。
【0113】
selectの同時実行を疑似的に実現する手段として、内部用selectとselectシステムコールをノンブロッキングで続けて発行することをスピンループで繰り返す、という方法が考えられる。しかしこの方法を用いると、データが受け取り可能になるまで計算機を占有してしまい、同一計算機上で走っている他のプロセスに処理が渡らなくなってしまう。
【0114】
これに対して本実施の形態では、1ループ毎に処理を他のプロセスに譲渡する命令を挿入するという方法を採る。この方法により、スピンループによる計算機の占有を避けることができる。
【0115】
図9は、図3で示した接続状態において、アプリケーションプログラム108および109が送信命令1002,1003を発行して、アプリケーションプログラム107にデータを送信し、アプリケーションプログラム107側でそれらのデータの到着を、select命令1001によって見張っている様子を表す。select命令1001で指定しているビット列はソケットSA0およびsa1に対応しているとする(1004,1005)。このうちsa1は内部ソケットテーブルに登録されているので、内部用selectで見張る(1008)。一方、SA0は内部ソケットテーブルに登録されていないので、selectシステムコールで見張る(1009)。TCP/IPエミュレーションライブラリで発行するselectシステムコールではsa1を見張る必要が無いので、アプリケーションプログラム107が発行したselect命令1001で指定されていたビット列に対し、sa1に対応するビットを0にしたビット列を指定する。処理1008と1009はノンブロッキングに発行し、交互に繰り返す(1010,1011)。ただし、繰り返しの途中で処理を一旦、他のプロセスに譲渡する。
【0116】
図9に示したselect命令、内部用のselect関数をアプリケーションプログラムが使用可能にするためには、TCP/IPエミュレーションライブラリ112,113等にはエミュレーションセレクト関数EMU_selectが設けられ、アプリケーションプログラムは、これを呼び出して使用する。アプリケーションプログラムがEMU_select関数を呼び出す際には従来と同じく、それぞれ一つのソケットに対応するビットからなるビット列ap_bitsを指定する。TCP/IPエミュレーションライブラリは、この関数呼び出しに応答して図10にともない処理を実行する。
【0117】
まず、そのビット列ap_bitsに対し(処理1101)、内部ソケットテーブルに登録されているソケット記述子に対応したビットを0にするためのマスクをかける(処理1102)。in_maskは、内部ソケットテーブルに登録されている全てのソケット記述子に対応するビットが0、それ以外のビットが1であるようなビット列である。よって、ap_bitsにin_maskをかけて作成したビット列ex_bitsは、ap_bitsで指定されたファイル記述子のうち、内部通信用のソケット記述子を除いたビット列となる。その後、ex_bitsを引数にしたselectシステムコールと、内部用select処理をノンブロッキングで一回ずつ実行し(処理1103,1104)、もし、この処理で調べたファイル記述子の何れかがデータ受け取り可能状態であった場合にはリターンする(処理1106)。そうでない場合は、一旦他のプロセスに処理を譲渡し(処理1107)、再びselect処理を繰り返す(処理1108)。
【0118】
こうして、本実施の形態によれば、実施の形態1のように内部高速通信機構を併用する計算機システムにおいても、アプリケーションプログラムがselect関数を利用可能になる。
【0119】
<発明の実施の形態3>
上記スピンループによるselect関数の実現方法では、スピンループの途中に他のプロセスに処理を譲渡する処理1107を挿入することで計算機の占有を回避するが、同じ計算機上で処理されるプロセスの優先度が低いと、そのプロセスには処理が渡らない可能性がある。データの到着をスリープして待つブロッキングウェイトを用いればこれを避けることができるが、ブロッキングウェイトの内部通信用select処理とブロッキングウェイトのselectシステムコールを、1プロセス・1スレッド上で同時に実行することはできない。
【0120】
これに対して本実施の形態では、まず2つのスレッドを生成し、一方のスレッド上では内部用selectを、もう一方ではselectシステムコールを実行するという方法を採る。この方法によれば、内部用selectとselectシステムコールがそれぞれのスレッド上で独立に動作することができるため、同時にブロックしてデータを見張ることができる。
【0121】
図11は、図9で示したのと同じ通信状態を表している。ただし、内部用selectとselectシステムコールの同時実行の実現方法が異なる。図11では、これら2つのselect処理は、別々のスレッドの上で実行する(1203,1204)。処理1009と同様に、スレッド1203上のselectシステムコールでは、sa1に対応するビットを0にしたビット列を指定する。
【0122】
図12を参照するに、本実施の形態において、アプリケーションプログラムがEMU_select関数を発行する際に指定したビット列ap_bitsに対し、内部ソケットテーブルに登録されているソケット記述子に対応したビットを0にするためのマスクをかけてex_bitsを作成する処理までは図10の処理(1101,1102)と同じである(処理1301,1302)。その後、まずノンブロッキングでselectシステムコール(処理1303)と内部用select処理(処理1304)を1回ずつ行う。この処理で調べたファイル記述子の何れかがデータ受け取り可能状態であった場合にはリターンする。そうでない場合には、スレッドを2つ生成し(処理1307)、それぞれの上でselectシステムコール(処理1308)と内部用select(処理1309)を実行する。これらの処理は、それぞれデータ受け取り状態になるまでブロックする。両処理のうち先にブロックが解けた方は、もう一方のスレッドをキャンセルして(処理1310,1311)リターンする(処理1314,1315)。このキャンセル処理では、スレッドを強制的に終了させるのではなく、そのスレッドがもう不要であるという印を付ける。スレッドはブロックが解けた時にこの印が付けられているかどうかを調べ(処理1316,1317)、もし付けられていれば、キャンセルされていたことになるのでそのまま消滅する(処理1318,1319)。
【0123】
上記select処理において、スレッド分割の前に処理1303および処理1304のノンブロッキングselect処理を一回ずつ行うのは、次の理由による。もし、処理1301が発行される以前に内部用ソケットとそれ以外のファイル記述子が共にデータ受け取り可能な状態になっている場合、select関数はその両方を検知できなければならない。しかし、いきなりスレッドを分割して、内部ソケットとそれ以外のファイル記述子を別々に見張り始めると、両スレッドのうち若干早く検知した方がもう一方のスレッドをキャンセルしてしまうため、片方のスレッドの状態しか検知することができない。これに対して処理1303および処理1304を実行することで、処理1301が発行される以前の内部ソケットとそれ以外の記述子の状態を両方とも確実に調べることができる。
【0124】
本方式では、データの到着をスリープして待つため、実施の形態2のスピンループで待つ方法に比べると、データ検出のタイミングが遅れるが、優先度の低いプロセスに対しても、処理の妨げとなることを回避できる。
【0125】
【発明の効果】
本発明によれば、ストリーム通信をメッセージパッシング型の通信でもって実現できる。
【0126】
本発明の他の態様によれば、第1の通信網とそれより高速の第2の通信網に接続された計算機上で動作するアプリケーションプログラムが、第1の通信網に接続された他の計算機上で動作する他のアプリケーションプログラムとの間で第1の通信規約に基づいて通信することができ、さらに、第2の通信網に接続された他の計算機上で動作する他のアプリケーションプログラムとの間でその第2の通信網を使用した高速の通信を行うことができる。
【0127】
さらに具体的には、上記第1の通信規約はTCP/IP通信規約を使用できる。また、上記第2の通信網を使用した通信を、メッセージパッシング型の通信とすることができる。
【図面の簡単な説明】
【図1】本発明の実施例の全体構成図。
【図2】ソケット接続のフローチャート。
【図3】ソケット接続を説明すための図。
【図4】内部・外部通信切り分け方法のフローチャート。
【図5】内部・外部通信切り分け方法を説明するための図。
【図6】ストリーム通信のフローチャート。
【図7】送受信動作に使用される命令列の一例を示す図。
【図8】送受信動作に使用される命令列の他の例を示す図。
【図9】select機能をスピンループで実現する方法を説明するための図。
【図10】select機能をスピンループで実現する方法のフローチャート。
【図11】select機能をスレッドを用いて実現する方法を説明するための図。
【図12】select機能をスレッドを用いて実現する方法のフローチャート。
【図13】従来のTCP/IP通信規約の階層図。
【図14】従来のストリーム通信を説明するための図。
【符号の説明】
105...並列計算機内部通信網,106...グローバル通信網,
111...ソケットアプリケーションプログラムインタフェース,118...MPI仕様のインタフェース,119,120,121,122,123...ネットワークインタフェースハードウェア,140、141...メッセージパッシング型ライブラリ,401,402,403,404,405,406...ソケット,407,408,409...ソケットのコネクション,410,411...内部ソケットテーブル,601...並列計算機内部通信時におけるデータ経路,602...外部計算機との通信時におけるデータ経路,803,804,812,813...アプリケーションプログラムのバッファ,809...ストリーム,901...TCP/IPエミュレーションライブラリ内のバッファ。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data transmission / reception method between computers in a computer system having a plurality of computers connected by a plurality of types of communication networks, and is particularly suitable for executing message passing type communication. It relates to a transmission / reception method.
[0002]
[Prior art]
TCP / IP is very commonly used as a communication protocol between computers. A program configured to communicate with other programs using TCP / IP is hereinafter referred to as a TCP / IP application program. There is also a computer system in which a communication protocol other than TCP / IP can be used from this TCP / IP application program. In other words, when a computer constituting a computer system is configured by a plurality of networks having different performances, and a computer in the system communicates with other computers, those computers use any of these networks for the communication. Depending on this, systems using TCP / IP or other communication protocols have also been proposed. For example, Steven H. of Berkeley University. The system developed by Rodrigues et al. Consists of a wide area network that can be used with the TCP / IP protocol and a local network that uses a communication protocol that is simpler and has lower overhead in a smaller area, and is connected to the local network. Computers that have been connected communicate using this communication protocol, and computers connected to a wide area network communicate according to the TCP / IP protocol. For example, “High-Performance Local-Area Communication With Fast Socket”, USENIX '97 Annual Technical Conference pp. 257-274).
[0003]
In this computer system, a TCP / IP emulation library is prepared so that the communication protocol can be used from a TCP / IP application program. In the above system, this TCP / IP emulation library is called a high-speed socket.
[0004]
The high-speed socket uses an active message developed for a workstation cluster as a simple communication protocol. For example, the document T.W. von Eicken, D.C. E. Culler, S.M. C. Goldstein, K.M. E. Schuuser “Active Messages: a Mechanical for Integrated Communication and Computation”, in Proceedings of the 19th International Symptom on Computer Architecture. See 256-266. In the active message, data is exchanged in such a manner that an application program on the data sending side interrupts the application program on the receiving side, and the receiving side performs data reception processing in response to the interruption.
[0005]
A parallel computer is a computer whose purpose is to solve a problem in cooperation with a plurality of computers communicating with each other. In order to satisfy this purpose, computers in the parallel computer are generally connected to each other by a high-speed internal high-speed communication network, and at least some of the computers in the parallel computer are further externally connected by a wider network such as a LAN. Connected to a calculator.
[0006]
A communication protocol used for a wide area network is mainly TCP / IP. In order to use the internal high-speed communication network, the parallel computer uses high-speed communication hardware for communicating with each other computer via the internal high-speed communication network and a high-speed communication library for using the hardware. Is provided. Currently, the communication protocol adopted in many parallel computers is message passing type communication. Message passing communication is communication in which communication is performed when a transmission command issued by a transmission application program and a reception command issued by a reception application program are associated with each other in a one-to-one relationship. In many cases, this communication method is suitable for high-speed communication hardware inside a parallel computer. As a high-speed communication library used for realizing the message passing communication, a library called a remote memory writing library or a PUT library is mainly used.
[0007]
The communication overhead inside the parallel computer can be significantly reduced by using high speed communication hardware. In the interrupt type communication method used for the active message, the overhead of the interrupt becomes conspicuous. However, the message passing communication method does not presuppose interrupts, and is therefore more suitable for communication inside a parallel computer than active message communication.
[0008]
[Problems to be solved by the invention]
As described above, the communication protocol for using the internal high-speed communication network of the parallel computer is generally a message passing type. However, many business application programs used when a parallel computer is used in the business field are configured to use the TCP / IP protocol. Therefore, such an application program cannot directly use the message passing communication system as it is. In addition, there is no known method for realizing stream communication in a state where the message passing communication method is used. Further, the stream communication realization method used in active message type communication using interrupts cannot be directly used for stream communication in message passing type communication.
[0009]
Accordingly, an object of the present invention is to provide an inter-computer data transmission / reception method that enables stream communication to be executed between a plurality of application programs operating on a computer configured to execute message passing communication.
[0010]
A more specific object of the present invention is to provide a plurality of application programs configured to execute communication using a communication protocol different from message passing communication, such as TCP / IP, via a first computer network. It is an object to provide a data transmission / reception method between computers using a communication network faster than the computer network and enabling message passing communication.
[0011]
Furthermore, another object of the present invention is to operate on a computer connected to a first communication network and a second communication network that is faster than the first communication network, and for example, a TCP / IP communication protocol with another application program. An application program configured to communicate based on the first communication protocol such as is communicated with another application program operating on another computer connected to the first communication network. High-speed communication using the second communication network with another application program operating on another computer connected to the second communication network. It is to provide a data transmission / reception method between computers that makes it possible to execute
[0012]
Furthermore, another specific object of the present invention is to provide an inter-computer data transmission / reception method that enables communication using the second communication network to be message passing communication.
[0013]
[Means for Solving the Problems]
In order to achieve the above object, in the inter-computer data transmission / reception method according to the present invention,
Each of a plurality of transmission data specified by a plurality of transmission commands issued by the first application program executed on the first computer is transmitted to the second application program executed on the second computer. In response to a plurality of issued reception commands, the message is received by message passing communication. This reception is controlled by an emulation library provided on the second computer.
[0014]
Further, among a series of data composed of a series of a plurality of transmission data, a portion obtained by dividing into a size portion designated by the plurality of reception commands is stored in a plurality of buffers designated by the respective reception commands. The received transmission data is processed so as to realize the stream communication. This process is controlled by the emulation library.
[0015]
More specifically, the inter-computer data transmission / reception method according to the present invention executes the following processing.
[0016]
(A) The receiving-side emulation library detects the length of data that the transmitting-side application intends to transmit with a single transmission command,
(B) The above-mentioned transmission data length is compared with the data reception length specified by the application by a single reception command by the reception side emulation library,
(C) In the above comparison, if the transmission data length is longer than the data reception length, the receiving-side emulation library receives all the data in the buffer area once secured in the memory, and receives the data specified by the application from there. If the data corresponding to the length is copied to the application area and the transmission data length is equal to or shorter than the data reception length, the receiving side emulation library directly receives the data in the application area.
[0017]
(D) If data remains in the buffer area when the application issues a reception command, the data is copied from there to the application area.
[0018]
More specifically, a TCP / IP emulation library is prepared in order to realize the data transmission / reception method according to the present invention. This library has the same interface as the TCP / IP socket application program interface. If the communication partner is outside the parallel computer, the conventional system call is made. If the communication partner is inside, the message passing communication method for the parallel computer such as MPI is used. The use of a high-speed communication network is performed. That is, this TCP / IP emulation library has the following characteristics.
[0019]
(1) When communicating inside a parallel computer, a stream communication service equivalent to TCP / IP is provided using a communication procedure suitable for the message passing communication method.
[0020]
(2) The communication method is separated using an appropriate means as a TCP / IP emulation library.
[0021]
(3) External communication data and internal communication data are detected by a spin loop. Alternatively, external communication data and internal communication data are detected by separate threads.
[0022]
DETAILED DESCRIPTION OF THE INVENTION
<Conventional technology and its problems>
Prior to describing embodiments of the present invention, conventional techniques and problems thereof will be described.
[0023]
(1) TCP / IP
FIG. 13 shows the TCP / IP hierarchy. In TCP / IP, four layers of a link layer 301, an IP layer 302, a TCP layer 303, and an application layer 306 are defined from the bottom. There is actually a physical layer below the link layer 301, but this layer is not mentioned for simplicity. Hereinafter, for simplicity, the layer group 304 including the layers 303, 302, and 301 below the application layer is collectively referred to as a TCP / IP layer. Generally, a program (hereinafter referred to as a TCP / IP processing routine) necessary for performing communication according to a procedure determined by TCP / IP is included in the OS. In order to execute communication according to the procedure determined by TCP / IP, specific processing is executed by each of the plurality of layers constituting the TCP / IP layer 304. In this specification, a plurality of processes executed by these layers or a plurality of program routines for executing these processes are collectively referred to as a TCP / IP processing routine.
[0024]
As an interface for the application program to use the TCP / IP processing routine, a socket application programming interface (socket API) 111 is generally used. In order for an application program to use a TCP / IP processing routine, a system call group called a socket library is provided as a part of the OS.
[0025]
In this specification, calling a system call and function for data reception or a system call and function for data transmission may be described as issuing a reception command or a transmission command in combination with each function. . The socket application program interface is defined as an application program interface of the socket library. An example of an application program (hereinafter referred to as a TCP / IP application program) that communicates with TCP / IP described in accordance with the socket application program interface is shown below.
[0026]
Figure 0003628514
First, the TCP / IP application program on the server side and the TCP / IP application program on the client side that want to communicate with others are the system call sockets included in the TCP / IP processing routine provided in the computer on which it is running. Call (socket). The called system call socket creates an object called a socket that serves as a communication end, and returns a socket descriptor. In the above example, the server-side and client-side TCP / IP application programs receive the returned socket descriptor as sa or sb0.
[0027]
The socket descriptor is an identifier (ID) of a socket that is uniquely determined for each socket in the application program, and includes an integer value. All operations on the created socket are performed by specifying this socket descriptor. In the following description, the socket and the socket descriptor are synonymous unless otherwise specified. The system call argument AF_INET above represents the address family Internet and indicates that a socket is used for communication over the Internet. Furthermore, the argument SOCK_STREAM requests stream communication. The last argument is an argument that specifies the protocol. When this value is 0, the protocol is determined by the two arguments before that argument. In this case, the TCP / IP protocol is used. After the socket is generated, the TCP / IP application program on the server side and the client side perform socket connection processing in different procedures.
[0028]
The server side calls a system call bind (bind) included in the TCP / IP processing routine. The called system call binding associates the name specified by the argument with the socket sa specified by the argument. The name consists of a combination of an IP address and a port number. In the above example, the socket identifier sa is associated with a name consisting of a pair of an IP address and a port number stored in the structure server having a size specified by slen. The server side further calls a system call listen included in the TCP / IP processing routine.
[0029]
This system call listen sets the socket sa specified by the argument as a socket for receiving a connection request. The second argument of this system call represents the size required for the queue used to temporarily hold the connection request and other connection requests, and in this case, the call contains 5 connection requests. Requesting a queue that can hold
[0030]
As a result of the above processing, logically, a communication path is determined between the server side and the client side.
[0031]
Thereafter, the server side calls a system call accept (accept) included in the TCP / IP processing routine. This system call places the socket sa designated by the argument into a connection request waiting state. The second and third arguments of this system call represent the IP address and length on the client side of the connection request to be waited for.
[0032]
On the other hand, the client side calls a system call connect (connect) included in the TCP / IP processing routine. This system call is an argument for the name specified by the argument, in this case the name given to the server-side socket sa (combination of the IP address sin_addr and port number sin_port stored in the structure server). Connect the socket sb0 specified by.
[0033]
Further, in the server-side computer, the previously called system call accept receives this connection request, and the socket sa1 specified by the above argument for the system call accept is newly set as a socket for communication with the client side. To generate. In this way, a communication path is established between the server-side socket sa1 and the client-side socket sb0.
[0034]
When the client side transmits data to the server side with the connection between the sockets established, the client side calls a system call write (write) included in the TCP / IP processing routine. In an argument for this system call, a buffer address buffer0 used to hold data to be transmitted and a length length0 of the buffer are specified. The system call write transmits the data in this buffer using the socket sb0 specified by this system call. The server side calls a system call read (read) included in the TCP / IP processing routine. This system call receives the data transferred through the socket sa1 specified by the argument, and writes it into the buffer at the address buffer1 specified by the argument. In this way, data is transferred between the two application programs. If necessary, the client side calls multiple write system calls to send multiple subsequent data respectively, and the server side calls one or more read system calls to receive those subsequent data .
[0035]
The socket descriptor is defined as a kind of file descriptor used when performing input / output to a file, standard input / output, and the like. Therefore, in the socket application program interface, data can be transmitted and received through the same interface as that for inputting and outputting files and the like.
[0036]
When the communication between the server side and the client side program ends, the server side calls a system call close (close) to close the socket sa1 specified by the argument. The server side also calls the same system call close again, which in turn closes socket sa. The client side similarly calls a system call close, and this system call closes the socket sb0.
[0037]
(2) Switching communication method for high-speed sockets
In conventional TCP / IP, a name (server) consisting of an IP address and a port number is associated with a socket (sa) by system call binding. In the high-speed socket, a socket dedicated for high-speed communication is generated as follows. First, a hash function is applied to the port number (port number sin_port stored in the structure server) whose name is specified by the application when calling the system call binding, and a new shadow port number is derived. Next, a shadow socket is newly created by calling a system call socket. Finally, call the bind system call to associate the shadow port number with the shadow socket. When performing high-speed communication, when a server and a client call and connect to accept and connect, a communication path dedicated to high-speed communication is pasted by using this shadow socket.
[0038]
This method requires special processing when a system call bind or system call listen is invoked.
[0039]
(3) Stream communication by TCP / IP processing routine
The TCP / IP socket library services stream communication. Stream communication is one or a plurality of read systems in which a transmission side application program processes a plurality of data sent by a series of write system calls as a continuous data stream, and the reception side application program issues the data stream. This is a communication method in which one or a plurality of pieces of data having an arbitrary length specified by a call are received.
[0040]
The operation of conventional stream communication will be described with reference to FIG. Here, an example in which the transmission application program 801 sends data to the reception application program 802 is shown. The transmission application program 801 first calls the first write system call and transmits 50 kilobytes (KB) of data in the buffer 803 of the program (805). In FIG. 14, the unit KB is omitted for simplification. The TCP / IP processing routine on the transmission side copies this transmission data in the buffer 803 to a buffer (not shown) once secured in the OS, divides it into a plurality of packets, and transmits it to the reception side OS. The normal packet size is 40-1500 bytes. The receiving-side OS receives these packets in a plurality of buffers (not shown) secured in the OS, connects these packets in a list, and reconstructs the data stream. The transmission application program 801 further issues a second write system call and transmits 80 KB data in the other buffer 804 of the program (806). At this time, the TCP / IP processing routine on the transmitting side and the TCP / IP processing routine on the receiving side operate in the same manner, and the above-mentioned buffer in the OS is combined with this previously transmitted data as one data stream. Hold on.
[0041]
In the figure, reference numeral 809 schematically represents this data stream held in the OS 900. The head data 807 and the subsequent data 808 respectively represent 50 KB and 80 KB data transmitted by the first and second write system calls, respectively. In stream communication, the receiving application program views these data as a single continuous 130 KB data stream 809. Data in the buffers 803 and 804 in the transmission application program 801 hold data portions 807 and 809 in the data stream 809 in the OS 900, respectively. For this purpose, the reception application program 802 issues a first read system call and requests that 30 KB of the 50 KB head data 807 in the stream data 809 be received in the 30 KB buffer 812 of the reception application program 802. (814). The TCP / IP processing routine on the receiving side copies the first 30 KB data 810 from this data stream 809 to the buffer 812 in response to this read system call. When the receiving application program 802 further issues a second read system call, the remaining 100 KB of data 811 in the stream data 809 is copied to the buffer 813 specified by this system call according to the length specified by this system call. (815).
[0042]
(4) Stream communication in active message type communication
The system using the high-speed socket realizes stream communication while adopting active message type communication. That is, in this system, when a transmission request is issued from the transmission-side application program, this transmission request is executed without waiting for the reception-side application program to be issued. In response to the transmission request, an interrupt is generated in the computer on the receiving side, the interrupt handler is activated by this interrupt, and the transmission data is once received in a buffer in the interrupt handler. When the reception-side application program issues a reception request, the interrupt handler transfers data of a size requested by the reception request among the already received data to the buffer of the reception-side application program. If the size requested by the application program on the receiving side is smaller than the size of the received data, the reception request processing ends. The remaining data held in the interrupt handler is transferred to the buffer of the application program when a new reception request is issued from the reception-side application program.
[0043]
Conversely, if the size requested by the receiving application program is larger than the size of the received data, the interrupt handler sends the data to the receiving side when the sending application program subsequently sends the data. Supply to application program. Similarly, when a subsequent reception request is issued from the reception-side application program before the transmission-side application program issues a transmission request, the reception-side interrupt handler is followed by the transmission-side application program. When the data is subsequently transmitted, the subsequent data is supplied to the receiving side application program. If this subsequent data is larger than the size of the insufficient data required by the first reception request or the size of the data required by the subsequent reception request, the interrupt handler requests more data from the subsequent reception request. Hold for.
[0044]
In this way, a plurality of data transmitted by a plurality of transmission requests issued by the transmission side application program are supplied to the reception side application program in response to a series of reception requests issued by the reception side application program. Thus, in this method, stream communication is realized by temporarily holding transmission data in a buffer in the interrupt handler.
[0045]
However, in message passing type communication that does not use interrupts, stream communication cannot be realized using such a method.
[0046]
Hereinafter, the inter-computer data transmission / reception method according to the present invention will be described in more detail with reference to some embodiments shown in the drawings. In the following, the same reference numerals represent the same or similar items. In the second and subsequent embodiments of the invention, differences from the first embodiment of the invention will be mainly described.
[0047]
<Embodiment 1 of the Invention>
(1) Outline of the device
FIG. 1 shows an example of a computer system for executing an inter-computer transmission / reception method according to the present invention. In the figure, it is assumed that two computers 102 and 103 inside the parallel computer 101 and one external computer 104 are connected to each other via a communication network. Actually, the number of computers inside and outside the parallel computer 101 is arbitrary. The internal computers 102 and 103 are connected by an internal high-speed communication network 105, and the internal computers 102 and 103 have network interface hardware 119 and 120 dedicated to the internal high-speed communication network 105, respectively. The internal high-speed communication network 105 is configured by a network capable of transferring a plurality of packets in parallel with each other at high speed, such as a hyper crossbar switch. All of the internal computers 102 and 103 and the external computer 104 are connected to a global communication network 106, and each computer has network interface hardware 121, 122, and 123 dedicated to the communication network 106, respectively.
[0048]
Data transmission / reception is performed between the application programs 107, 108, 109 loaded in the memories 124, 125, 126 of each computer. In addition to the application programs, OSs 127, 128, and 129 are loaded in each memory, and TCP / IP processing routines 114, 115, and 110 exist in each OS. In order to execute communication according to the procedure determined by TCP / IP, processing is executed by each layer constituting the TCP / IP layer 304. The TCP / IP processing routine is a general term for a plurality of processes executed by each of these layers in order to execute communication according to a procedure determined by TCP / IP. These TCP / IP processing routines 114, 115, and 110 themselves are publicly known. It is the same as that, and includes multiple functions that can be called by system calls as described above. The TCP / IP processing routines 114, 115, and 110 communicate with the network interface hardware 121, 122, and 123 dedicated to the global communication network 106 for the purpose of wide area communication.
[0049]
The memory 124 of the computer 102 is further loaded with a TCP / IP emulation library 112, a message passing library 140, and a high-speed communication library 135. Similarly, a TCP / IP emulation library 113, a message passing library 141, and a high-speed communication library 136 are loaded in the memory 125 of the computer 103.
[0050]
The high-speed communication libraries 135 and 136 on the computers 102 and 103 are libraries for communicating with the network interface hardware 119 and 120 dedicated to the internal high-speed communication network 105 for the purpose of high-speed communication inside the parallel computer 101. A so-called remote memory writing library or PUT library is often used. Also in this embodiment, this PUT library is used for the high-speed communication libraries 135 and 136. However, the present invention is not limited to this library, and other libraries such as a library called a PUT / GET library can also be used.
[0051]
In general, communication through the high-speed internal communication network 105 is much faster than communication through the global communication network 106. Therefore, when the application programs on the internal computer try to perform TCP / IP communication, the TCP / IP emulation libraries 112 and 113 are not the TCP / IP processing routines 114 and 115 but the message passing type libraries 140 and 141 and the high speed. The communication library 135, 136 and the internal high-speed communication network 105 are used to implement message passing type communication, thereby achieving high-speed communication.
[0052]
The message passing type libraries 140 and 141 are libraries for starting the high-speed communication library 135 or 136 in accordance with a request from the TCP / IP emulation library 112 or 113. The message passing type libraries 140 and 141 are generally libraries having a message passing type interface to application programs (TCP / IP emulation libraries 112 and 113 in the present embodiment).
[0053]
The TCP / IP emulation libraries 112 and 113 further realize stream communication in the message passing type communication as provided by the conventional TCP / IP processing routine, thereby achieving high-speed communication. Since the TCP / IP processing routines 114 and 115 are functions of the OS 127 and 128, in the conventional technique, an overhead of a context switch always occurs when an application program uses them, but in this embodiment, high-speed communication is performed. Since the libraries 135 and 136 are used, the overhead can be avoided because the OS is not used, thereby further increasing the communication speed.
[0054]
(2) Logical configuration and interface between components
FIG. 1B is a diagram representing the hardware configuration as a logical configuration. In this figure, all parts not relevant to the following description are omitted. The high-speed communication libraries 135 and 136 and the internal high-speed communication dedicated hardware 119 and 120 are collectively expressed as high-speed communication mechanisms 116 and 117. In addition, interfaces 111 and 118 between the components are newly shown. The squares representing the computers 102, 103, 104 and the parallel computer 101 indicate that the logical components in each of them are executed on one computer or the parallel computer 101.
[0055]
On the computer 104, the application program 109 is linked to the TCP / IP 110 and the socket application program interface 111 as is conventional. Application programs 107 and 108 running on the computers 102 and 103 inside the parallel computer 101 are linked to the TCP / IP emulation libraries 112 and 113 by the socket application program interface 111. The TCP / IP emulation libraries 112 and 113 are linked to the conventional TCP / IP processing routines 114 and 115, which are functions of the OS, by the socket application program interface 111. At the same time, the MPI specifications are linked to the high-speed communication mechanisms 116 and 117. Linked by interface 118.
[0056]
(3) Application programs 107 and 108
In the present embodiment, when an application program running on any computer 102 in the parallel computer 101, for example, 107 communicates with another application program running on any other computer, Depending on whether another application program is an application program running on the computer 103 in the parallel computer 101, for example, 108 or an application program running on the computer 104 outside the parallel computer 101, for example 109, the high-speed communication mechanism 116 and the TCP / IP processing routine 114 is used properly. In order for two application programs 107 and 108 operating on different computers 102 and 103 in the parallel computer 101 to communicate with each other using the high-speed communication mechanisms 116 and 117, data is actually transmitted between these application programs. It is necessary to perform special processing so that the high-speed communication mechanisms 116 and 117 are used not only when transmitting and receiving but also when connecting sockets for respective application programs to each other. The TCP / IP emulation library 112 or 113 includes a plurality of functions for executing this special processing. In the present embodiment, the names of the functions provided in the TCP / IP emulation libraries 112 and 113 are prefixed with EMU_, and the names of the functions provided in the TCP / IP processing routines 114, 115, and 110 are added. To distinguish.
[0057]
Specifically, among the application programs 107 or 108 operating on the computers 102 and 103 in the parallel computer 101, the application programs operating on the server side and the client side are generated to execute the following programs, respectively. The
[0058]
Figure 0003628514
The server-side application program calls a system call for socket, bind, and listen as in the conventional case. These system calls are processed in the same manner as before by the corresponding TCP / IP processing routine. The client-side application program also issues a socket system call as in the conventional case. This system call is also processed in the same manner as before by the corresponding TCP / IP processing routine. In this way, sockets sa and sb0 are generated for the server side and the client side as in the conventional case.
[0059]
Thereafter, the server-side application program calls a function emulation accept (EMU_accept) provided in the TCP / IP emulation library provided in the computer in which the application program is operating, instead of the conventional system call accept. An application program on the client side calls a function emulation connect (EMU_connect) provided in a TCP / IP emulation library provided in a computer in which the application program is operating instead of the conventional function connect. Further, the server side application program calls the function emulation read (EMU_read) provided in the TCP / IP emulation library instead of the conventional system call read, and the client side application program replaces the conventional system call write. The function emulation write (EMU_write) provided in the corresponding TCP / IP emulation library is called. Hereinafter, processing performed by these new functions will be described.
[0060]
(4) Socket connection by TCP / IP emulation library
In FIG. 2, when the server-side application program and the client-side application program call the above-described EMU_accept and EMU_connect functions (processes 501 and 502), these system calls are provided in the server-side TCP / IP emulation library. The function EMU_accept and the EMU_connect provided in the TCP / IP emulation library on the client side are called. The arguments of these system calls are the same as when the server-side application program and the client-side application program call the system calls accept and connect, respectively, and request the TCP / IP processing routines 114 and 115 to connect the sockets sa and sb0. is there.
[0061]
The called functions EMU_accept and EMU_connect first issue an accept system call and a connect system call, respectively (processes 503 and 504). As arguments of these system calls, arguments for the functions EMU_accept and EMU_connect are used as they are. As a result, the system call accept provided in the TCP / IP processing routine on the server side and the system call connect provided in the TCP / IP processing routine on the client side are called, and the system call accept called as before is The connection request issued by the called system call connect is received, the socket sa 1 is generated, and the socket sa 1 and the socket sb 0 are connected via the communication path 106.
[0062]
Thereafter, the functions EMU_accept and EMU_connect confirm whether or not the other party's IP address is the address of the computer inside the parallel computer 101 (processes 506 and 507). If the partner is inside the parallel computer 101, the socket descriptor is registered in the internal table 410 or 411 (processing 510, 511). In this case, a socket sa1 for the server-side application program 107 and a socket sb0 for the client-side application program are registered in the internal tables 410 and 411, respectively. Further, the TCP / IP emulation libraries 112 and 113 exchange data necessary for using the high-speed communication mechanisms 116 and 117 such as identifiers of the computers in the parallel computer 101. For this data exchange, the application programs 107 and 108 issue function read and write system calls, respectively (processing 512, 513, 515, and 516). The data exchange here is performed via the TCP / IP processing routines 114 and 115 and the communication path 106 in the same manner as in the past using the already connected sockets sa1 and sb0. Thereafter, the process returns to the server-side and client-side application programs 107 and 108 (processes 518 and 519). At this time, the TCP / IP emulation library 112 on the server side returns the identifier of the socket sa1 generated in the application program 107.
[0063]
When it is determined in the processes 506 and 507 that the partner is not a computer inside the parallel computer 101, the function EMU_connect returns to the client-side application program 108, and the function EMU_accept returns the socket sa1 to the server-side application program 107. Returning to the program (processes 508 and 509). In this way, the socket sa1 for the server-side application program and the socket sb0 for the client-side application program are connected to the corresponding TCP / IP processing routines via the communication path 106.
[0064]
FIG. 3 shows one state in which sockets generated by the application programs 107, 108, and 109 according to this embodiment are connected to each other. Here, socket SA1 (402) of application program 107 and socket SB0 (403) of application program 108 are connected (407), and socket SB1 (404) of application program 108 and socket SC0 (405) of application program 109 are connected. Connected (408), the socket SC1 (406) of the application program 109 and the socket SA0 (401) of the application program 107 are connected (409). Here, the TCP / IP emulation libraries 112 and 113 hold internal socket tables 410 and 411, respectively. In the internal socket tables 410 and 411, when the connection destination of the socket is an internal computer, the socket descriptor is registered. For example, since the socket SB 0 (403), which is the connection destination of the socket SA 1 (402) of the application program 107, is a socket of the application program 108 that runs on the internal computer 103, SA 1 is registered in the internal socket table 410. Similarly, the socket SA1, which is the connection destination of the socket SB0, is a socket of the application program 107 that runs on the internal computer 102, so SB0 is registered in the internal socket table 411. On the other hand, since the socket SC1 (406), which is the connection destination of the socket SA0 (401), is a socket of the application program 109 on the external computer, SA0 is not registered in the internal socket table 410. Similarly, SB1 connected to SC0 is not registered in the internal socket table 411.
[0065]
(5) Separation method between internal communication and external communication
Thereafter, the server-side application program and the client-side application program start data communication. One and the other of these two programs call the functions EMU_write and EMU_read for data transmission and reception, respectively. In the example of the client-side and server-side programs shown above, the server-side application program calls the function EMU_read, and the client-side application program calls the function EMU_write. The arguments specified by these are the same as the arguments for the system calls write and read included in the TCP / IP processing routines 114 and 115.
[0066]
Referring to FIG. 4, when EMU_read and EMU_write are called (processes 701 and 702), the respective functions correspond to the internal socket tables 410 and 411 corresponding to the socket descriptors of the sockets sa1 and sb0 specified by the respective arguments. It is determined whether or not each is registered (processes 703 and 704). When the respective socket identifiers are registered in the internal socket tables 410 and 411, message-passing communication is performed using the high-speed communication mechanisms 116 and 117 and the high-speed internal communication network 105 in a procedure described in detail later (processing) 707, 708). If the respective socket identifiers are not registered in the internal socket tables 410 and 411, conventional read and write system calls are issued to the designated sockets as they are (processes 705 and 706). These system calls are processed by the corresponding TCP / IP processing routines 114 and 115, and communication using the global communication path 106 is executed by the TCP / IP processing routines 114 and 115.
[0067]
FIG. 5 is an overall configuration diagram for explaining the above-described separation method, showing the flow of data when the application programs 107, 108, and 109 communicate with each other in the socket connection state shown in FIG. It is. When the application program 107 and the application program 108 communicate, the socket sa1 (402) and the socket sb0 (403) are used as communication ends. These sockets are registered in internal socket tables 410 and 411 held by the TCP / IP emulation libraries 112 and 113. Therefore, the TCP / IP emulation libraries 112 and 113 use the high-speed communication mechanisms 116 and 117 instead of the TCP / IP processing routines 114 and 115 for data communication processing (601). On the other hand, when the application program 108 and the application program 109 communicate, the socket SB1 (404) and the socket SC0 (405) are used as communication ends. SB1 is not registered in the internal socket table 411 held by the TCP / IP emulation library 113 linked with the application program 108. Therefore, the TCP / IP emulation library 113 uses the TCP / IP processing routine 115 as it is for data communication processing (602). As a result, data exchange with the external TCP / IP processing routine 110 becomes possible.
[0068]
According to this method, the bind system call and the listen system call can be used as they are without changing from the conventional TCP / IP processing routine, and the internal communication and the external communication can be separated.
[0069]
(6) Message passing type libraries 140 and 141
The communication hardware 119 and 120 and the high-speed communication libraries 135 and 136 for using the internal high-speed communication network 105 used for each computer of the parallel computer are often vendor-specific, and the usage method varies depending on the machine. is there. Therefore, when trying to create an application program using the high-speed communication hardware and high-speed communication library of each machine, the program has to be a low general-purpose program specialized for the machine. On the other hand, there is an activity to improve the versatility of application programs by preparing a library for communication using communication hardware inside the parallel computer and defining the application program interface of this library as a standard. Active throughout the world.
[0070]
An interface that is currently widely used as a general-purpose interface for using the message type communication is a message passing interface (MPI-Message Passing Interface). For example, see: "MPI: Message Passing Interface Standard version 1.1", MPI Forum, University of Tennessee, 1995. This interface is premised on the existence of the high-speed communication library described above for realizing message-passing type communication. Even if this interface is used, message-passing type communication is fundamental. However, this is not different from that realized by the high-speed communication library.
[0071]
Many parallel computer vendors provide high-speed communication libraries that allow MPI-compliant application programs to use high-speed communication hardware inside the parallel computer.
[0072]
In this specification, an interface for using message type communication is called a message passing type interface, and a library having the interface is called a message passing type library. In particular, an MPI specification interface may be referred to as an MPI or MPI interface or a message passing interface, and a library having the interface may be referred to as an MPI library or a message passing interface library.
[0073]
In this embodiment, a library for exchanging commands or data with an interface defined by a standard MPI specification that can be used in many parallel computers is used as the message passing type libraries 140 and 141. Therefore, the versatility of the TCP / IP emulation libraries 112 and 113 is improved. However, interfaces with other specifications may be used.
[0074]
A description example of a conventional application program compliant with MPI is shown below. In the present embodiment, the TCP / IP emulation libraries 112 and 113 have the following program parts with respect to the part for starting the message passing type libraries 140 and 141. More details of this program part will be described later.
[0075]
Figure 0003628514
In MPI, all processes to be communicated are launched simultaneously. At this time, a process identifier called a rank is determined for each process. The above example shows a case where two processes, that is, a sender process sender and a receiver process receiver are started up. At this time, rank 0 and 1 are assigned to each process. Each process first initializes MPI using the MPI initialization function MPI_Init, and acquires its own rank using the MPI communication rank function MPI_Comm_rank. Thereafter, processing for each rank is performed. The above example shows a case where the rank 1 process receives the data sent by the MPI transmission function MPI_Send by the MPI reception function MPI_Recv.
[0076]
(7) Message passing type communication using high-speed communication mechanism
Before describing the details of the data reception processing 707 and data transmission processing 708 using the high-speed communication mechanisms 116 and 117, an outline of the message passing type communication using the high-speed communication mechanisms 116 and 117 necessary for executing these processes. Will be explained.
[0077]
In general, in order to execute message passing type communication, a transmission computer executes a transmission function for transmitting data, and a reception computer executes a reception function for receiving the data. These functions are repeatedly executed to transfer subsequent data between the computers. In the present embodiment, message passing communication based on the MPI specification will be described as a specific description of message passing communication.
[0078]
In message passing communication according to the MPI specification, the sending computer executes the transmission function MPI_Send, and the receiving computer executes the reception function MPI_Recv. In this case, when the transmission process 708 is activated, the TCP / IP emulation library 113 on the transmission side calls the transmission function MPI_Send as in the example of the application program of the MPI specification described above. Before calling the transmission function MPI_Send, it is necessary to call functions such as MPI_Init and MPI_Comm_rank as initial processes. These processes are performed by the internal table registration process (510, 511) at the same time. On the other hand, the TCP / IP emulation library 112 on the receiving side calls the reception function MPI_Recv in order to use the internal high-speed communication network 105.
[0079]
The buffer address buffer and buffer length length specified by the argument of the function MPI_Send that the TCP / IP emulation library 113 on the transmission side calls in the transmission processing 708 are equal to the corresponding argument of the function EMU_write issued by the application program 108 on the transmission side. Is done. On the other hand, the buffer address buffer and the buffer length length specified by the argument of the function MPI_Recv called by the receiving TCP / IP emulation library 112 in the receiving process 707 are the functions issued by the receiving application program 107 as will be described later. The buffer address and buffer length specified by the argument of EMU_read or the address and size of a specific buffer provided in the TCP / IP emulation library 113 on the receiving side are made equal.
[0080]
When the function MPI_Send in the message passing type library 141 on the transmission side is activated, data corresponding to the length specified by the argument is stored in the buffer at the address specified by the argument for the function MPI_Send to the corresponding high-speed communication library 136. It is requested to transfer to the receiving computer 124 via the high-speed communication network 105. When activated, the function MPI_Recv in the message passing library 140 on the receiving side receives the transferred data from the corresponding high-speed communication library 135 via the internal high-speed communication network 105. Then, it requests to write the data of the length specified by the argument to the buffer at the address specified by the argument to the function MPI_Recv.
[0081]
The activated high-speed transfer library 136 on the transmission side and high-speed transfer library 135 on the reception side perform transmission and reception of the requested data via the internal high-speed communication network 105 by a method known per se. Specifically, this data transfer is performed as follows. In general, a command called a remote memory write command or a PUT command is used. Hereinafter, this command is referred to as a PUT command. A communication method for transferring data via the internal high-speed communication network 105 is performed by three PUT commands.
[0082]
First, when the function MPI_Send is called from the TCP / IP emulation library 113 on the transmission side, the message passing type library 141 on the transmission side reads the buffer length specified by this argument (this is the length of data to be transmitted). A first PUT command is issued to request the high-speed transfer library 136 on the transmission side to transmit a header including attribute information of data including The high-speed transfer library 136 transmits this header to the computer 102 on the receiving side. The internal high-speed communication dedicated hardware 119 in the computer 102 directly writes this data at a predetermined position in the memory 124 on the receiving side.
[0083]
On the other hand, when the reception instruction MPI_Recv is called from the reception-side TCP / IP emulation library 112, the reception-side message passing library 140 first checks whether a header has already been transmitted from the transmission-side computer 103. For this purpose, a data check instruction MPI_probe described later is used. When the header has not been sent, the execution of the reception command ends. When the header has already been sent, it is determined whether or not transmission data can be received from the buffer length in the header. That is, it is determined whether or not the length of the transmission data is equal to or less than the buffer length specified by the reception command MPI_Recv. In general, in message passing type communication, not only MPI specification message passing communication, but if the transmission data length specified by the transmission command is larger than the reception buffer size specified by the reception command, the receiving computer receives the transmission data. It is supposed not to. This is because if the receiving computer receives received data exceeding the size of the receiving buffer, the memory area other than the buffer may be destroyed by the received data. If the message-passing type library 140 on the receiving side determines that the transmission data is receivable as a result of the determination, the message-passing library 140 on the receiving side sends the transmission of the address of the receiving buffer designated by the argument to the receiving command MPI_Recv to the high-speed communication library 135 on the receiving side Issue the requested second PUT command. The high-speed communication library 135 transmits a buffer address to the computer 103 on the transmission side as a response to this command. Internal high-speed communication dedicated hardware 119 in 102 writes this address in a predetermined position in memory 125 on the transmission side. If the transmission data is not receivable as a result of the determination, the message passing type library on the reception side notifies the error to the transmission side computer without returning the buffer address.
[0084]
Finally, the message passing library on the transmission side issues a third PUT command for requesting the transmission-side high-speed transfer library 136 to transmit the transmission data and the received buffer address. The high-speed transfer library 136 transmits this data and buffer address to the computer 102 on the receiving side. The internal high-speed communication dedicated hardware 119 in the computer 102 on the receiving side receives this buffer address and data, and directly writes the received data in the buffer having the address. Thus, the data transfer is completed.
[0085]
The data communication method via the internal high-speed communication network 105 is not limited to the above method, and other methods can be used. For example, depending on the parallel computer, the high-speed communication library can execute a remote memory write command or a GET command in addition to the PUT command. In the case of such a parallel computer, instead of the message passing library 141 on the transmission side issuing the third PUT command, the message passing library 140 on the reception side issues a GET command and The high-speed communication library 135 executes processing for reading transmission data from the memory 125 on the transmission side.
[0086]
(8) Stream communication in message passing type communication
Details of the data reception processing 707 and transmission processing 708 shown in FIG. 4 will be described with reference to the specific examples shown in FIGS. In FIG. 4, as described above, when the transmission-side application program 108 calls the function EMU_write (702) and the transmission processing 708 is activated, the function MPI_Send included in the message passing library 141 is called. (781). In the example shown in FIG. 7, it is assumed that the address Sbuff of the buffer 803 and the buffer size of 50 kilobytes (KB) are specified as arguments when the function EMU_write is called (702). The buffer address and buffer size specified by the argument at the time of calling the function MPI_Send (781) are made equal to these values. In the following, explanation of other arguments of the function to be used is omitted for the sake of simplicity. Further, assuming that the unit of the buffer size to be specified is KB, and when illustrating the argument of the function, this unit KB is not shown for simplicity. In response to this function call 781, the message passing type library 141 instructs the high-speed communication mechanism 117 to transmit a header as described above for data transfer, and then instructs data transmission.
[0087]
On the other hand, in FIG. 4, as described above, when the reception-side application program 107 calls the function EMU_read (701) and the reception processing 707 is started, the reception processing 707 performs the processing shown in FIG. The In the example shown in FIG. 7, the buffer address specified by the argument of the function EMU_read call 701 is Rbuff, the buffer size is 30 KB, and a size smaller than the buffer size specified by the call 702 of the transmission function EMU_write is specified. Assuming that
[0088]
In this reception processing 707, first, data that has been received in a specific data reception buffer (buffer 901 described later) provided in the TCP / IP emulation library 112 on the reception side and has not yet been transferred to the application program on the reception side. An instruction is issued to determine whether or not there remains (process 202). This instruction is not shown in FIG. As assumed now, when the function EMU_read is first executed, the result of this determination is negative. Thereafter, a transmission data detection command MPI_probe 771 is issued, and it is determined whether there is data to be transmitted to the receiving-side application program (process 206). Specifically, this command is a command for determining whether or not the high-speed communication mechanism 116 has already received the header described above regarding data to be transmitted to the application program 107. If this header has not yet been transmitted from the transmission-side application program 108, the reception processing 708 ends the processing and returns to the reception-side application program 107 (processing 207). The receiving-side application program 107 executes processing when reception fails. For example, the function 701 is repeatedly called until reception is successful.
[0089]
Assuming that the header has already been transmitted from the application program 108 on the transmission side, it is determined whether or not the transmission data specified by the header can enter the buffer 812 of the application program on the reception side (process 208). In the example of FIG. 7, the size of the transmission data is 50 KB, and the size of the buffer 812 on the receiving side is 30 KB, and the result of this determination is negative. In such a case, when the receiving TCP / IP emulation library 112 issues an MPI_Recv instruction for receiving this transmission data to the buffer 812 of the receiving application program 107, the receiving message passing library 140 Either processes this command as an error according to the MPI specification, or discards the portion of the transmission data that does not fit in the buffer 812 of the receiving application program.
[0090]
In order to prevent this, in this embodiment, a special buffer 901 is prepared in the reception side TCP / IP emulation library 112 linked to the reception side application program 107, and the reception side TCP / IP emulation library 112 is here. The buffer 901 is requested to receive transmission data once. That is, the function MPI_Recv is designated to specify the address Ebuff of this buffer 901 and the size of all transmission data 50 KB (772).
[0091]
In response to this function call 772, the high-speed communication mechanism 116 on the reception side and the high-speed communication mechanism 117 on the transmission side transmit and receive data as described above, and the high-speed communication mechanism 116 on the reception side transmits the data to the above-described data. Write to buffer 901. The TCP / IP emulation library 112 on the receiving side then copies a memory copy instruction (MEMCPY) to copy the data of size 30 KB specified by the argument at the time of calling the function EMU_Read to the buffer 812 of the application program 107 on the receiving side. (Rbuff, Ebuff, 30 KB)) 773 is issued (process 209). Thereafter, the process returns to the application program (process 211). In this way, transmission / reception between application programs is completed in a state where a part 906 of the received data remains in the buffer 901 in the TCP / IP emulation library 112.
[0092]
Thereafter, when the transmission-side application program 108 further calls the function EMU_write (Sbuff ', 80KB) (790) (FIG. 7B) to transmit the data 80KB in the buffer 804 at the address Sbuff', the transmission process 708 is performed in the same manner. Is executed, and the function MPI_Send (Sbuff ', 80) (791) is called in this process. On the other hand, when the receiving-side application program 107 also calls the function EMU_read (Rbuff ′, 100 KB) (775) to receive 100 KB of data in the buffer 813 at the address Rbuff ′, the reception 707 is executed in the same manner. The
[0093]
In the reception process 707, in the determination in the first determination process 202, it is determined that untransferred data 906 remains in the reception buffer 901 in the TCP / IP emulation library 112 on the reception side. As a result, a memory copy instruction memcpy (Rbuff ′, Ebuff + 30 KB, 20 KB) (776) is issued, and this data 906 is copied to the head area 907 of the buffer 813 in the application program 107 on the receiving side (process 203). The length of the data to be copied to the memory is set in a range that does not exceed the buffer length specified by the second function call to the function EMU_read among the lengths of data held in the buffer 901. In this case, the length of the data held in the buffer 901 is 20 KB, and the length of the data requested to be received is smaller than 100 KB. Therefore, all the data 20 KB is copied.
[0094]
Thereafter, in order to further receive the remaining 80 KB data requested by the receiving-side application program 107, a process 206 is executed. In this process 206, as already described, the command MPI_Probe () for checking whether there is transmission data is issued. Specifically, it is determined whether or not a header for transmission data has been received. In this case, assuming that the function call 791 on the transmission side has already been executed, it is found that there is 80 KB of transmission data. In that case, it is determined whether or not the size of the transmission data can fit in the buffer 813 designated by the reception-side application program 102 (process 208). In this case, since the size of the remaining area 908 of the buffer 813 of the application program on the receiving side is 80 KB, the transmission data can completely enter this area 908 of the buffer 813.
[0095]
As a result, the function MPI_Recv (Rbuff ′ + 20 KB, 80 KB) (778) is called. This function call specifies the address of the remaining area 908 of the buffer 813 and the size of transmission data of 80 KB. In this way, the transmission data is directly received in the area 908 of the buffer 813 (process 210). Thereafter, it is determined whether or not all the data requested to be received have been received (process 212). In this case, since the determination result is affirmative, the reception process 707 ends, and the process returns to the application program (process 211).
[0096]
Through the above procedure, it is possible to realize stream communication in which transmission data specified by a plurality of function EMU_write calls (702, 790) is received as a series of data streams by a plurality of function calls EMU_read (701, 775). it can.
[0097]
Even when the size of transmission data specified by the application program on the transmission side is smaller than the size of the buffer specified by the application program on the reception side, stream communication is easily realized as follows. For example, the stream communication in the case where the transmission side application program repeatedly requests transmission of 50 KB data and the reception side application program requests reception of 100 KB data will be described with reference to FIG.
[0098]
The function MPI_send (781) is called in the transmission process 708 (FIG. 4) for the function EMU_write (702) called by the transmission side application program. In this function call, the address Sbuff and the size 50 KB of the buffer 803 of the transmission side application program are specified.
[0099]
The reception processing 707 (FIG. 4) for the function EMU_read (701) called by the reception-side application program is also processed in accordance with FIG. Under the current assumption, the determination in the process 202 fails. In process 206, it is assumed that it is determined that there is transmission data when the data check instruction 771 is executed. In this case, since the size of the buffer 812 on the reception side is larger than the size of the buffer on the transmission side, the determination result in the processing 208 is affirmative. As a result, the process 210 is executed. In this process, a function MPI_recv (774) for directly receiving the transmission data in the buffer 812 designated by the reception side application program is called. This function call designates the start address Rbuff of the buffer 812 of the reception side application program and the size 50 KB of the transmission side buffer 803. In this way, all the data in the transmission side buffer 803 is written into the first 50 KB area 907 in the reception side buffer 812. Next, the process 212 is executed. In this case, the size of data requested to be received is 100 KB, whereas the size of already received data is 50 KB. Thus, some of the requested data has not yet been received. Accordingly, the result of determination 212 is negative and process 206 is performed again to receive the remaining data.
[0100]
If the application program on the transmission side next calls the function EMU_write 790, the function MPI_send (791) is similarly called in the transmission processing 708 (FIG. 4) corresponding thereto. Also in this function call, the address Sbuff ′ and the size 50 KB of the next buffer 804 of the transmission side application program are designated.
[0101]
If the application program on the transmission side has already called the next function EMU_Send 791 when the process 206 is repeated, the determination result in the process 206 becomes affirmative, and the process proceeds to the determination process 208. In this case, since the size of the remaining area 910 of the buffer 812 on the receiving side is equal to the size of the data to be transmitted, the result of this determination is positive. As a result, the process 210 is executed, and the second reception function 779 for directly writing the transmission data to the remaining area 910 of the reception-side buffer 812 is called. In this function call, the address Rbuff + 50 KB of the remaining area 910 of the buffer 812 of the reception side application program and the size of transmission data 50 KB are designated. Thus, since it is determined in the process 212 that reception of all requested data has been completed, the reception process 707 is completed. When there is no transmission data at the time when the process 206 is repeatedly executed, the reception process 707 ends and the process returns to the receiving application program. Further, when the process 208 is repeated and the determination result in the process 208 is negative, the process 209 is executed. The contents of this process are the same as those already described. As described above, even if the size of the buffer specified by the transmission command EMU_write issued by the transmission-side application program and the size of the buffer specified by the reception command EMU_read issued by the reception-side application program are different, It can be seen that the buffer stream communication is realized even if the number of transmission commands EMU_write issued by the application program is different from the number of reception commands EMU_read issued by the reception-side application program.
[0102]
As can be seen from the above description, according to the present embodiment, applications running on a computer provided with a high-speed communication mechanism of a message passing type communication method, such as inside a parallel computer, use TCP / IP. When performing data communication, high-speed communication utilizing the features of the high-speed communication mechanism becomes possible. In addition, with applications running on other computers, the conventional TCP / IP communication is guaranteed. The user does not need to change any existing TCP / IP application.
[0103]
<Modification of Embodiment 1 of the Invention>
The present invention is not limited to the contents of the first embodiment, but can be implemented by various embodiments including the following modifications and other modifications.
[0104]
(1) Although TCP / IP is used as the communication protocol for the wide area network, other communication protocols can be used instead. At that time, it is needless to say that the TCP / IP processing routine and the emulation library need to be changed.
[0105]
(2) In the first embodiment, the message passing type library is used, but it is also possible not to use it. At this time, the emulation library directly calls the high-speed communication library.
[0106]
(3) Furthermore, it is possible to eliminate this communication library. For example, instead of this, a dedicated circuit can be used.
[0107]
(4) In the first embodiment, it is assumed that all internal computers are connected to a wide area communication network. However, the present invention can be similarly applied to a case where some internal computers are connected to a wide area communication network.
[0108]
(5) In the first embodiment, it is assumed that both the wide area communication network and the internal high-speed communication network are used. However, the stream communication according to the present invention can be applied between computers capable of executing message passing type communication. Therefore, message passing can be performed without using TCP / IP communication to execute this stream communication. It can also be applied to communication between application programs that use only type communication. In this case, a plurality of types of communication networks need not be used. In this case, a modification in which the emulation library on the transmission side is not substantially used is possible.
[0109]
<Embodiment 2 of the Invention>
The TCP / IP processing routine is conventionally provided with a select function as a function that can be used by an application program. In the first place, a socket descriptor is defined as a kind of file descriptor. A select function is prepared as a system call for checking whether it is possible to acquire data from the object specified by the file descriptor. For example, whether or not data that can be received from a certain socket has been sent (or is about to be sent) from the transmission side can be checked by the select function. Specifically, it can be determined whether or not an application program to which a certain socket is assigned has issued a transmission system call write. In the select function, a file descriptor to be watched is specified by a bit string. Each bit of this bit string corresponds to an individual file descriptor, and by setting the bit to 1, the file descriptor is specified. If a plurality of bits are set to 1, a plurality of file descriptors can be watched simultaneously by a single select function. The select function blocks until any of the watched file descriptors are ready to receive data.
[0110]
In the TCP / IP emulation library used in the first embodiment of the invention, the conventional socket library is not used during communication inside the parallel computer. Therefore, the select system call checks whether data can be received from the socket for internal communication. I can't. Therefore, in the present embodiment, even in the computer system that uses the TCP / IP emulation library as in the first embodiment, the application program can use the select function as in the conventional case.
[0111]
In the present embodiment, processing corresponding to select dedicated to internal communication is performed on socket descriptors registered in the internal socket tables 410, 411, etc., and other file descriptors are conventionally processed. A select function EMU_select is provided in the TCP / IP emulation library 113 to perform the separation of using the select system call.
[0112]
However, the select for internal communication and the select system call must be executed simultaneously in parallel. By executing two select sequentially, for example, while the select for internal communication is waiting for data, even if the socket for communication with the outside, the standard input / output, etc. are ready to receive data. This is because it cannot be detected.
[0113]
As a means for realizing the simultaneous execution of the select in a pseudo manner, it is conceivable to repeat the issuance of the internal select and the select system call in a non-blocking manner in a spin loop. However, if this method is used, the computer will be occupied until data can be received, and processing will not be passed to other processes running on the same computer.
[0114]
On the other hand, in this embodiment, a method of inserting an instruction for transferring processing to another process for each loop is adopted. By this method, the occupation of the computer by the spin loop can be avoided.
[0115]
9 shows that the application programs 108 and 109 issue transmission instructions 1002 and 1003 to transmit data to the application program 107 in the connection state shown in FIG. A state of being watched by a select instruction 1001 is shown. It is assumed that the bit string specified by the select instruction 1001 corresponds to the sockets SA0 and sa1 (1004, 1005). Of these, sa1 is registered in the internal socket table, and is watched by the internal select (1008). On the other hand, since SA0 is not registered in the internal socket table, it is watched by the select system call (1009). In the select system call issued by the TCP / IP emulation library, it is not necessary to keep an eye on sa1, so a bit string in which the bit corresponding to sa1 is set to 0 is specified for the bit string specified by the select instruction 1001 issued by the application program 107. To do. Processes 1008 and 1009 are issued non-blocking and are repeated alternately (1010, 1011). However, the process is temporarily transferred to another process in the middle of repetition.
[0116]
In order to enable the application program to use the select instruction and the internal select function shown in FIG. 9, the emulation select function EMU_select is provided in the TCP / IP emulation libraries 112, 113, etc. Call and use. When the application program calls the EMU_select function, a bit string ap_bits composed of bits corresponding to one socket is designated as in the conventional case. The TCP / IP emulation library executes processing in accordance with FIG. 10 in response to this function call.
[0117]
First, a mask for setting the bit corresponding to the socket descriptor registered in the internal socket table to 0 is applied to the bit string ap_bits (process 1101) (process 1102). in_mask is a bit string in which the bits corresponding to all the socket descriptors registered in the internal socket table are 0, and the other bits are 1. Therefore, the bit string ex_bits created by applying ap_bits to in_mask is a bit string excluding the socket descriptor for internal communication from the file descriptor specified by ap_bits. After that, the select system call with ex_bits as an argument and the internal select processing are executed once in a non-blocking manner (processing 1103 and 1104). If any of the file descriptors examined in this processing is in a state where data can be received. If there is, the process returns (process 1106). If not, the process is temporarily transferred to another process (process 1107), and the select process is repeated again (process 1108).
[0118]
Thus, according to the present embodiment, the select function can be used by the application program even in the computer system using the internal high-speed communication mechanism as in the first embodiment.
[0119]
<Third Embodiment of the Invention>
In the above-described method for realizing a select function using a spin loop, the processing 1107 for transferring the processing to another process is inserted in the middle of the spin loop to avoid the occupation of the computer. However, the priority of processes processed on the same computer If the value is low, the process may not be processed. This can be avoided by using a blocking wait that waits for the arrival of data, but it is not possible to simultaneously execute the select processing for blocking weight internal communication and the select system call for blocking weight on one process and one thread. Can not.
[0120]
On the other hand, in this embodiment, two threads are first generated, and an internal select is executed on one thread and a select system call is executed on the other. According to this method, the internal select and select system calls can operate independently on each thread, so that data can be blocked and monitored at the same time.
[0121]
FIG. 11 shows the same communication state as shown in FIG. However, the method for realizing simultaneous execution of the select for internal use and the select system call is different. In FIG. 11, these two select processes are executed on different threads (1203, 1204). Similar to the process 1009, the select system call on the thread 1203 specifies a bit string in which the bit corresponding to sa1 is set to 0.
[0122]
Referring to FIG. 12, in this embodiment, the bit corresponding to the socket descriptor registered in the internal socket table is set to 0 for the bit string ap_bits specified when the application program issues the EMU_select function. The process up to the creation of ex_bits by applying the above mask is the same as the process (1101, 1102) of FIG. 10 (process 1301, 1302). After that, first, a non-blocking select system call (process 1303) and an internal select process (process 1304) are performed once. If any of the file descriptors examined in this process is ready to receive data, the process returns. Otherwise, two threads are generated (process 1307), and a select system call (process 1308) and an internal select (process 1309) are executed on each of them. Each of these processes blocks until the data reception state is reached. Of the two processes, the one that can be unblocked first cancels the other thread (processes 1310 and 1311) and returns (processes 1314 and 1315). In this cancellation process, the thread is not forcibly terminated, but is marked as no longer needed. The thread checks whether or not the mark is attached when the block is unwound (processes 1316 and 1317). If the thread is attached, the thread is canceled and disappears (processes 1318 and 1319).
[0123]
In the select process, the non-blocking select process of the process 1303 and the process 1304 is performed once before the thread division for the following reason. If the internal socket and other file descriptors are ready to receive data before the processing 1301 is issued, the select function must be able to detect both. However, if you suddenly split the thread and start watching the internal socket and the other file descriptors separately, if one of the two threads detects it a little earlier, it cancels the other thread. Only the state can be detected. On the other hand, by executing the processing 1303 and the processing 1304, it is possible to surely check both the state of the internal socket before the processing 1301 is issued and the other descriptors.
[0124]
Since this method sleeps and waits for the arrival of data, the data detection timing is delayed as compared with the method of waiting in the spin loop of the second embodiment, but it also hinders processing even for low priority processes. Can be avoided.
[0125]
【The invention's effect】
According to the present invention, stream communication can be realized by message passing type communication.
[0126]
According to another aspect of the present invention, an application program that operates on a computer connected to a first communication network and a second communication network that is faster than the first communication network is transferred to another computer connected to the first communication network. It is possible to communicate with other application programs that operate on the basis of the first communication protocol, and with other application programs that operate on other computers connected to the second communication network. High-speed communication using the second communication network can be performed.
[0127]
More specifically, the first communication protocol can use a TCP / IP communication protocol. Further, communication using the second communication network can be message passing communication.
[Brief description of the drawings]
FIG. 1 is an overall configuration diagram of an embodiment of the present invention.
FIG. 2 is a flowchart of socket connection.
FIG. 3 is a diagram for explaining socket connection;
FIG. 4 is a flowchart of an internal / external communication separation method.
FIG. 5 is a diagram for explaining an internal / external communication separation method;
FIG. 6 is a flowchart of stream communication.
FIG. 7 is a diagram showing an example of an instruction sequence used for transmission / reception operations.
FIG. 8 is a diagram showing another example of an instruction sequence used for transmission / reception operations.
FIG. 9 is a diagram for explaining a method for realizing a select function by a spin loop;
FIG. 10 is a flowchart of a method for realizing a select function in a spin loop.
FIG. 11 is a diagram for explaining a method for realizing a select function using a thread;
FIG. 12 is a flowchart of a method for realizing a select function using threads.
FIG. 13 is a hierarchical diagram of a conventional TCP / IP communication protocol.
FIG. 14 is a diagram for explaining conventional stream communication.
[Explanation of symbols]
105. . . Parallel computer internal communication network, 106. . . Global communication network,
111. . . Socket application program interface, 118. . . MPI specification interface, 119, 120, 121, 122, 123. . . Network interface hardware 140, 141. . . Message passing type library, 401, 402, 403, 404, 405, 406. . . Socket, 407, 408, 409. . . Socket connection, 410, 411. . . Internal socket table, 601. . . Data path in parallel computer internal communication, 602. . . Data path at the time of communication with an external computer, 803, 804, 812, 813. . . Application program buffer 809. . . Stream, 901. . . A buffer in the TCP / IP emulation library.

Claims (7)

送信命令が指定した送信データ長が、受信命令が指定した受信バッファサイズより大きいときは受信がなされないメッセージパッシング型通信方式に基づくデータ通信を、異なる計算機上でそれぞれ稼動し、かつ該メッセージパッシング型通信方式以外の通信規約の使用をそれぞれ前提とするアプリケーションプログラム間で行う計算機間データ送受信方法であって、
第1の計算機上で実行されている第1のアプリケーションプログラムが発行した複数の送信命令のそれぞれによりそれぞれ指定される複数の送信データを、第2の計算機上で実行されている第2のアプリケーションプログラムが発行した複数の受信命令に応答して、第2の計算機上に設けられたエミュレーションライブラリの制御下で該エミュレーションライブラリ内のバッファにメッセージパッシング型の通信でそれぞれ一旦受信し、
上記複数の送信データの連なりからなるひと繋がりのデータの内、上記複数の受信命令のそれぞれにより指定されるそれぞれのサイズ部分に区分して得られる部分をそれぞれの受信命令が指定するそれぞれのアプリケーション領域のバッファに格納するように、受信されたそれぞれの送信データを上記エミュレーションライブラリの制御下で処理する計算機間データ送受信方法。
When the transmission data length specified by the transmission command is larger than the reception buffer size specified by the reception command, the data communication based on the message passing communication system that is not received is operated on different computers, and the message passing type A computer-to-computer data transmission / reception method between application programs, each premised on the use of a communication protocol other than the communication method,
A plurality of transmission data specified respectively by each of a plurality of transmission instructions first application program being executed has been issued by the first computing machine, the second application program running on the second computing machine In response to a plurality of reception commands issued by the second computer, each of them is temporarily received by message passing communication in a buffer in the emulation library under the control of the emulation library provided on the second computer.
Each application area in which each reception command designates a portion obtained by dividing the data into a size portion designated by each of the plurality of reception commands, among a series of data consisting of a series of a plurality of transmission data. A computer-to-computer data transmission / reception method for processing each received transmission data under the control of the emulation library so as to be stored in the buffer of the computer.
送信命令が指定した送信データ長が、受信命令が指定した受信バッファサイズより大きいときは受信がなされないメッセージパッシング型の通信に基づくデータ通信を、異なる計算機上でそれぞれ稼動し、かつ該メッセージパッシング型通信方式以外の通信規約の使用を前提とするアプリケーションプログラム間で行う計算機間データ送受信方法であって
メッセージパッシング型の通信を実行するための第1の通信ライブラリを有する第1の計算機上で実行されている第1のアプリケーションプログラムが発行した複数の送信命令に応答して、該複数の送信命令のそれぞれにより指定されるアプリケーション領域のバッファにそれぞれが保持された複数の送信データの送信をそれぞれ要求する複数の送信命令を、上記第1の計算機に設けられた第1のエミュレーションライブラリにより上記第1の通信ライブラリに対して発行し、
メッセージパッシング型の通信を実行するための第2の通信ライブラリを有する第2の計算機上で実行されている第2のアプリケーションプログラムが発行した複数の受信命令に応答して、上記複数の送信データを上記第2の計算機に設けられている第2のエミュレーションライブラリ内のバッファにメッセージパッシング型の通信でそれぞれ一旦受信するための複数の受信命令を、上記第2のエミュレーションライブラリにより上記第2の通信ライブラリに対して発行し、
第1のエミュレーションライブラリが発行した上記複数の送信命令により指定される複数の送信データの連なりからなるひと繋がりのデータを、上記複数の受信命令のそれぞれによりそれぞれ指定されるサイズ部分に区分してそれぞれの受信命令が指定するそれぞれのアプリケーション領域のバッファに格納するように、上記第2のエミュレーションライブラリが発行した上記複数の受信命令により受信される上記複数の送信データの第2の計算機内での格納位置およびそれぞれの送信データの受信後の第2の計算機内での移動を、上記第2のエミュレーションライブラリにより制御する計算機間データ送受信方法。
When the transmission data length specified by the transmission command is larger than the reception buffer size specified by the reception command, data communication based on message-passing communication that is not received is run on different computers, and the message-passing type An inter-computer data transmission / reception method performed between application programs on the premise of using a communication protocol other than a communication method ,
In response to a plurality of transmission instructions first application program running on the first computing machine issued with a first communication libraries for performing communication message passing type, the transmission instruction of said plurality of multiple transmission instructions for requesting transmission of a plurality of transmission data each buffer is retained in the application area designated respectively by each by a first emulation library provided in the first computer the first Issued to the communication library,
In response to a plurality of reception commands issued by a second application program executed on a second computer having a second communication library for executing message passing type communication, the plurality of transmission data are transmitted. A plurality of reception commands for temporarily receiving each of them by message passing communication in a buffer in the second emulation library provided in the second computer is sent to the second communication library by the second emulation library. Issued against
A series of data composed of a series of a plurality of transmission data specified by the plurality of transmission commands issued by the first emulation library is divided into size portions respectively specified by the plurality of reception commands. The plurality of transmission data received by the plurality of reception commands issued by the second emulation library are stored in the second computer so as to be stored in the buffers of the respective application areas specified by the reception commands. A computer-to-computer data transmission / reception method of controlling the position and movement in the second computer after receiving each transmission data by the second emulation library.
送信命令が指定した送信データ長が、受信命令が指定した受信バッファサイズより大きいときは受信がなされないメッセージパッシング型の通信に基づくデータ通信を、異なる計算機上でそれぞれ稼動し、かつ該メッセージパッシング型通信方式以外の通信規約の使用を前提とするアプリケーションプログラム間で行う計算機間データ送受信方法であって
メッセージパッシング型の通信を実行するための第1の通信ライブラリを有する第1の計算機上で実行されている第1のアプリケーションプログラムが発行した複数回の送信命令に応答して、該複数回の送信命令によりそれぞれ指定されるアプリケーション領域のバッファにそれぞれが保持された複数の送信データの送信をそれぞれ要求する複数の送信命令を、上記第1の計算機に設けられた第1のエミュレーションライブラリにより上記第1の通信ライブラリに対して発行し、
メッセージパッシング型の通信を実行するための第2の通信ライブラリを有する第2の計算機上で実行されている第2のアプリケーションプログラムが発行した複数回の受信命令に応答して、上記複数の送信データを上記第2の計算機に設けられている第2のエミュレーションライブラリ内のバッファにそれぞれメッセージパッシング型の通信で受信するための複数の受信命令を、上記第2のエミュレーションライブラリにより上記第2の通信ライブラリに対して発行し、
第1のエミュレーションライブラリが発行した上記複数の送信命令により指定される複数の送信データの連なりからなるひと繋がりのデータを、上記第2のアプリケーションプログラムが発行した上記複数回の受信命令によりそれぞれ指定されるアプリケーション領域のバッファに格納するように、上記第2のエミュレーションライブラリにより、(イ)上記第2のエミュレーションライブラリが発行した上記複数の受信命令の各々が指定する受信データの格納位置を、現在処理中の第2のアプリケーションプログラムが発行した受信命令が指定するアプリケーションデータ領域のアドレスもしくは上記第2の通信ライブラリが利用可能なバッファに属するアドレスとなるように定め、かつ、(ロ)上記第2の通信ライブラリが利用可能な上記バッファのアドレスを指定する、第2のエミュレーションライブラリが発行した受信命令により受信した送信データのその後の上記第2の計算機内での移動を制御し、
上記第2のエミュレーションライブラリが発行した上記複数の受信命令は、それぞれ第1のエミュレーションライブラリが発行した上記複数の送信命令の一つに対応して発行され、
上記第2のエミュレーションライブラリが発行した上記複数の受信命令の各々が指定する受信データのサイズは、第1のエミュレーションライブラリが発行した上記複数の送信命令の内の対応する一つの送信命令が指定する送信データのサイズに等しくなるように設定される計算機間データ送受信方法。
When the transmission data length specified by the transmission command is larger than the reception buffer size specified by the reception command, data communication based on message-passing communication that is not received is run on different computers, and the message-passing type An inter-computer data transmission / reception method performed between application programs on the premise of using a communication protocol other than a communication method ,
In response to a plurality of transmission commands issued by a first application program executed on a first computer having a first communication library for executing message passing communication, the plurality of transmissions A plurality of transmission instructions respectively requesting transmission of a plurality of transmission data respectively held in application area buffers designated by the instructions are sent to the first emulation library provided in the first computer by the first emulation library. Issued to the communication library of
In response to a plurality of reception instructions issued by a second application program executed on a second computer having a second communication library for executing message passing communication, the plurality of transmission data A plurality of reception commands for receiving the message by a message passing type communication in a buffer in the second emulation library provided in the second computer by the second emulation library. Issued against
A series of data composed of a series of a plurality of transmission data specified by the plurality of transmission commands issued by the first emulation library is respectively specified by the plurality of reception commands issued by the second application program. to store in the buffer of the application area that, by the second emulation library, the storage location of the received data specified by each of the plurality of received instructions issued by (i) the second emulation library, currently processed And an address of an application data area designated by a reception command issued by the second application program in the middle or an address belonging to an available buffer of the second communication library, and (b) the second Communication library is available To address the serial buffer, and controls the movement of a subsequent said second calculation machine of the transmission data received by the receiving instruction second emulation library issued,
The plurality of reception commands issued by the second emulation library are issued in correspondence with one of the plurality of transmission commands issued by the first emulation library,
The size of the reception data specified by each of the plurality of reception commands issued by the second emulation library is specified by one corresponding transmission command among the plurality of transmission commands issued by the first emulation library. An inter-computer data transmission / reception method set to be equal to the size of transmission data.
送信命令が指定した送信データ長が、受信命令が指定した受信バッファサイズより大きいときは受信がなされないメッセージパッシング型の通信に基づくデータ通信を、異なる計算機上でそれぞれ稼動し、かつ該メッセージパッシング型通信方式以外の通信規約の使用を前提とするアプリケーションプログラム間で行う計算機間データ送受信方法であって、
(a)送信側のアプリケーションが指定するいずれかの送信データの送信を要求する、上記メッセージパッシング型の通信により定められた送信命令を送信側の計算機内で発行し、
(b)上記送信命令が指定する送信データ長を、その送信データの送信前に、受信側の計算機上で動作する受信側のエミュレーションライブラリにより検知し、
(c)受信側のアプリケーションが発行した受信命令によって指定された受信データ長と上記送信データ長とを、上記受信側のエミュレーションライブラリにより比較し、
(d)上記比較の結果に応じて、上記受信側の計算機内のエミュレーションライブラリ用のバッファに上記送信データを受信することを要求するかもしくは上記送信データをアプリケーション領域のバッファに受信することを要求する、上記メッセージパッシング型の通信により定められた受信命令を上記受信側のエミュレーションライブラリにより発行し、
(e)上記送信命令と受信側のエミュレーションライブラリにより発行した上記受信命令とに応答して、上記送信データを上記送信側の計算機と上記受信側の計算機により、上記送信側の計算機から上記エミュレーションライブラリ用のバッファもしくは上記アプリケーション領域のバッファに転送する計算機間データ送受信方法。
When the transmission data length specified by the transmission command is larger than the reception buffer size specified by the reception command, data communication based on message-passing communication that is not received is run on different computers, and the message-passing type An inter-computer data transmission / reception method performed between application programs on the premise of using a communication protocol other than a communication method,
(A) Issuing a transmission command determined by the message passing type communication requesting transmission of any transmission data specified by the transmission side application in the transmission side computer;
(B) The transmission data length specified by the transmission command is detected by the reception-side emulation library operating on the reception-side computer before the transmission data is transmitted,
(C) The reception data length specified by the reception command issued by the reception side application is compared with the transmission data length by the emulation library on the reception side,
(D) Depending on the result of the comparison, it is requested to receive the transmission data in an emulation library buffer in the receiving computer or to receive the transmission data in an application area buffer. Issuing a reception command determined by the message passing communication by the emulation library on the reception side,
(E) In response to the transmission command and the reception command issued by the reception side emulation library, the transmission data is transmitted from the transmission side computer to the emulation library by the transmission side computer and the reception side computer. Data transmission / reception method for transferring data to the application buffer or the application area buffer .
(f)上記送信データが上記エミュレーションライブラリ用のバッファに送信されたときには、エミュレーションライブラリ用のバッファから上記受信データ長分だけのデータを上記受信命令が指定したアプリケーションデ領域のバッファ内に、上記受信側のエミュレーションライブラリによりコピーするステップをさらに有する請求項4に記載の計算機間データ送受信方法。When (f) the transmission data is sent to the buffer for the emulation library, the data of only the receive data length from the buffer for the emulation library in the buffer of the application de region where the received command is specified, the 5. The inter-computer data transmission / reception method according to claim 4, further comprising a step of copying by a reception-side emulation library. (g)上記ステップ(e)により、上記送信データが上記アプリケーション領域のバッファ内に転送された場合、上記送信側の計算機が後続の送信データに関して上記ステップ(a)を実行するのを待ち、
(h)上記後続の送信データに関して、上記ステップ(a)が実行された場合、
その後続の送信データと上記受信命令が要求した受信データ長の残りの長さのデータに関して上記ステップ(b)以降のステップを実行するステップをさらに有する請求項5に記載の計算機間データ送受信方法。
The (g) step (e), when the transmission data is transferred to the buffer of the application area, waits to perform the above step (a) with respect to the transmitting side computer transmits the following data,
(H) with respect to the subsequent transmission data, when the step (a) is performed,
6. The inter-computer data transmission / reception method according to claim 5, further comprising a step of executing the steps after the step (b) with respect to the subsequent transmission data and the remaining data of the reception data length requested by the reception command.
(i)上記ステップ(a)を実行する前に、上記エミュレーションライブラリ用のバッファ内に受信済みでいずれのアプリケーション領域にも転送されていないデータが残っているか否かを判別し、
(j)そのデータが残っているときには、上記エミュレーションライブラリ用のバッファから上記アプリケーション領域のバッファに上記受信データ長を超えない範囲でコピーするステップをさらに有する請求項6に記載の計算機間データ送受信方法。
(I) Before executing step (a), it is determined whether data that has been received and not transferred to any application area remains in the emulation library buffer;
(J) When there remains data in the computer between data transmission and reception method according to claim 6, further comprising the step of copying to the extent that the buffer for the emulation library does not exceed the received data length in the buffer of the application area .
JP13236498A 1998-05-14 1998-05-14 Data transmission / reception method between computers Expired - Fee Related JP3628514B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13236498A JP3628514B2 (en) 1998-05-14 1998-05-14 Data transmission / reception method between computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13236498A JP3628514B2 (en) 1998-05-14 1998-05-14 Data transmission / reception method between computers

Publications (2)

Publication Number Publication Date
JPH11328134A JPH11328134A (en) 1999-11-30
JP3628514B2 true JP3628514B2 (en) 2005-03-16

Family

ID=15079650

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13236498A Expired - Fee Related JP3628514B2 (en) 1998-05-14 1998-05-14 Data transmission / reception method between computers

Country Status (1)

Country Link
JP (1) JP3628514B2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10009570A1 (en) * 2000-02-29 2001-08-30 Partec Ag Method for controlling the communication of individual computers in a computer network
JP2002208981A (en) 2001-01-12 2002-07-26 Hitachi Ltd Communication method
GB0408876D0 (en) * 2004-04-21 2004-05-26 Level 5 Networks Ltd User-level stack
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
JP5825261B2 (en) * 2010-09-24 2015-12-02 日本電気株式会社 Information processing apparatus, method and program thereof
WO2013027247A1 (en) * 2011-08-25 2013-02-28 富士通株式会社 Information processing device and method for controlling information processing device
JP5900115B2 (en) 2012-03-30 2016-04-06 富士通株式会社 Information processing device, arithmetic device, and control method of information processing device
JP5773443B2 (en) * 2012-06-22 2015-09-02 Necエンジニアリング株式会社 Client device, client control method, and program

Also Published As

Publication number Publication date
JPH11328134A (en) 1999-11-30

Similar Documents

Publication Publication Date Title
US7089289B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
US8671152B2 (en) Network processor system and network protocol processing method
US8458280B2 (en) Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US6799200B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system
AU2012384904B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
JP5066702B2 (en) Intelligent network storage interface system and device
US8848727B2 (en) Hierarchical transport protocol stack for data transfer between enterprise servers
US6948004B2 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US6111894A (en) Hardware interface between a switch adapter and a communications subsystem in a data processing system
US7817634B2 (en) Network with a constrained usage model supporting remote direct memory access
US6687758B2 (en) Port aggregation for network connections that are offloaded to network interface devices
US8438321B2 (en) Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney
US20070208820A1 (en) Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
AU2016201513B2 (en) Low latency fifo messaging system
US20060069788A1 (en) Interface method, system, and program product for facilitating layering of a data communications protocol over an active message layer protocol
JP5107570B2 (en) Network architecture, method, and computer program for network protocol stack isolation
US20090292825A1 (en) Method and apparatus for in-kernel application-specific processing of content streams
JP3628514B2 (en) Data transmission / reception method between computers
Riddoch et al. Distributed computing with the CLAN network
Seifert et al. SCI SOCKET-A fast socket implementation over SCI
US10681145B1 (en) Replication in a protocol offload network interface controller
JPH11249978A (en) Method and device for transferring data
Ciaccio Using a self-connected gigabit ethernet adapter as a memcpy () low-overhead engine for mpi
Wang Design and Implementation of TCPHA
Salz tesla: A transparent, extensible session-layer framework for end-to-end network services

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041208

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071217

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees