JP2016045510A - 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム - Google Patents

情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム Download PDF

Info

Publication number
JP2016045510A
JP2016045510A JP2014166741A JP2014166741A JP2016045510A JP 2016045510 A JP2016045510 A JP 2016045510A JP 2014166741 A JP2014166741 A JP 2014166741A JP 2014166741 A JP2014166741 A JP 2014166741A JP 2016045510 A JP2016045510 A JP 2016045510A
Authority
JP
Japan
Prior art keywords
communication
transmission
data
information processing
reception
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.)
Pending
Application number
JP2014166741A
Other languages
English (en)
Inventor
幸 荒川
Yuki Arakawa
幸 荒川
崇裕 川島
Takahiro Kawashima
崇裕 川島
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014166741A priority Critical patent/JP2016045510A/ja
Priority to US14/823,403 priority patent/US20160057068A1/en
Publication of JP2016045510A publication Critical patent/JP2016045510A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address

Abstract

【課題】プロセス間でのデータ通信において、バッファに保持される受信データの上書きに関係して発生する余分な制御通信を抑制する。【解決手段】送信側情報処理装置は、送信側プロセスを実行する送信側演算処理装置と、送信対象である対象データを保持する送信側記憶領域を有する送信側記憶装置と、送信側プロセスにより、対象データと対象データの宛先を示す宛先情報とを有する制御情報を含んで生成される送信データを、通信経路を介して送信する送信側通信装置を有する。送信側情報処理装置に通信経路を介して接続される受信側情報処理装置は、送信データを、通信経路を介して受信する受信側通信装置と、受信側プロセスを実行する受信側演算処理装置と、受信側プロセスにより、送信データから抽出される対象データを、記憶する受信側記憶領域を有する受信側記憶装置を有する。【選択図】図11

Description

本発明は、情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラムに関する。
いわゆるスーパーコンピュータでは、例えば大規模な科学技術計算(HPC:High Performance Computing)が主要目的とされる場合が多い。そのため、スーパーコンピュータでは、システム全体の処理性能が最重要項目の1つである。
スーパーコンピュータは、複数のProcessor Element(PE)と通信モジュールを含む情報処理装置としての計算ノード、複数の計算ノード間を接続するネットワーク等をそのシステム内に含む。PEはそれぞれ、演算処理装置としてのCentral Processing Unit(CPU)と主記憶装置としてのメモリを有する。
ユーザは、システムの多数のPE上に、それぞれプロセスを起動して、1つのプログラムを実行する。このようなプログラムの実行においては、プロセス間でのデータ通信が発生する場合がある。プロセス間のデータ通信では、例えばMessage Passing Interface(MPI)というApplication Programming Interface(API)が使用される。
近年のスーパーコンピュータにおいては、含まれるPEの数は増加傾向にある。また、PE内のCPUの多コア化が進んでおり、1つのPE上に複数のプロセスを立ち上げて処理をする傾向に移行してきている。このため、スーパーコンピュータにおいてプログラムの実行により使用されるプロセス数や、プログラムの実行により発生するプロセス間通信の数も増加してきている。
多数のプロセス間でデータの通信が発生するプログラムでは、プログラム全体の処理において、計算ノード間の通信処理がより重要になる。MPIには例えば、特定プロセス(グループ)に他のプロセス(グループ)がデータを転送するAPIや、全プロセス間のデータを転置交換するAPIが存在する。このようなAPIの処理が実行される場合には、プロセスの数の増加に応じて通信が増加し、プログラム全体の処理性能に対するプロセス間通信の影響が大きくなる。
一方、データの通信に関する技術として、送信部は、データ転送要求を受けた際に、転送先に受信許可の有無かを問合せることなく、送信対象データからRemote Direct Memory Access(RDMA)パケットを作成して投機的に送信する技術がある。送信部は、受信領域が受信不許可であれば、転送先から再送要求を受信した際に、RDMAパケットを再送する。受信部は、パケット受信時に転送領域管理情報を参照して転送不許可を判別した場合に、受信パケットを破棄し、その後に転送許可を判別した場合に、再送要求を送信して転送させる。
特開2007−257479号公報 特開2011−234145号公報
Yuichiro Ajima, Yuzo Takagi, Tomohiro Inoue, Shinya Hiramoto, Toshiyuki Shimizu: "The Tofu Interconnect", The 19th Annual Symposium on High-Performance Interconnects, p87-94(2011). Yuichiro Ajima, Tomohiro Inoue, Shinya Hiramoto, Toshiyuki Shimizu, Yuzo Takagi: "The Tofu Interconnect", IEEE Micro, Vol.32, No.1, p21-31(2012).
上記技術では、同時に複数のプロセス間通信が発生した場合に、受信側のバッファに格納された受信データが、受信プロセスにより使用される前に、別のプロセス間通信における受信データに上書きされてしまうことがある。この場合、上書きされたデータは受信側から消失してしまうため、上書きされたデータを再取得するための制御通信が発生する。通信するプロセス数が大量である場合や、各プロセスにおける処理数が大量である場合は、制御通信の発生による遅延の影響が大きくなる。
1つの側面では、本発明は、プロセス間でのデータ通信において、バッファに保持される受信データの上書きに関係して発生する余分な制御通信を抑制する。
一態様の情報処理システムは、送信側情報処理装置と、送信側情報処理装置に通信経路を介して接続される受信側情報処理装置とを有する。送信側情報処理装置は、送信側プロセスを実行する送信側演算処理装置と、送信対象である対象データを保持する送信側記憶領域を有する送信側記憶装置と、送信側プロセスにより、対象データと対象データの宛先を示す宛先情報とを有する制御情報を含んで生成される送信データを、通信経路を介して送信する送信側通信装置を有する。受信側情報処理装置は、送信データを、通信経路を介して受信する受信側通信装置と、受信側プロセスを実行する受信側演算処理装置と、受信側プロセスにより、送信データから抽出される対象データを、記憶する受信側記憶領域を有する受信側記憶装置を有する。
一態様によれば、プロセス間でのデータ通信において、バッファに保持される受信データの上書きに関係して発生する余分な制御通信を抑制することができる。
MPI通信関数とRDMA通信関数の違いを説明するための図である。 Eagerプロトコルについて説明するための図である。 Rendezvous-RDMA readプロトコルについて説明するための図である。 Rendezvous-RDMA writeプロトコルについて説明するための図である。 送信ノードのMPI領域のデータが受信ノードのMPI領域に送信される手順を説明するための図である。 第1の方法を説明するための図である。 第2−1の方法において、データの上書きが発生した場合の再転送の様子を説明するための図である。 第2−2の方法において、データの上書きを防止するための制御を説明するための図である。 第2−3の方法において、データの上書きを防止するための制御を説明するための図である。 実施形態の通信方法の流れを説明するための図である。 実施形態に係る情報処理システムの構成の一例を示す。 通信ノードの構成の一例を示す。 設定部によるディスクリプタへの送信対象データの埋め込みについて説明するための図である。 送信対象データが複数のディスクリプタに分割して埋め込まれて、転送される様子を説明するための図である。 ディスクリプタのデータ構造の一例を示す。 ディスクリプタの埋め込み領域の一例を示す。 ダミー通信において、2つの送信プロセスが同時に、1つの受信プロセスに対してデータを送信する様子を説明するための図である。 基本通信における第1の方法と、ダミー通信とのバッファの確保のされ方について比較する図である。 実施形態に係る送信ノードのダミー通信における処理の詳細を図解したフローチャートの一例である。 送信処理Aの処理の詳細を図解したフローチャートの一例である。 送信処理Bの処理の詳細を図解したフローチャートの一例である。 実施形態に係る受信ノードのダミー通信における処理の詳細を図解したフローチャートの一例である。 受信処理Aの処理の詳細を図解したフローチャートの一例である。 受信処理Bの処理の詳細を図解したフローチャートの一例である。 受信処理Cの処理の詳細を図解したフローチャートの一例である。 実施形態に係る通信モジュールのデータの受信処理の詳細を図解したフローチャートの一例である。 実施形態に係る情報処理システムのハードウェア構成の一例を示す。
情報処理システムとしてのスーパーコンピュータにおけるプロセス間のデータ通信では、例えばMPIが使用される。MPIライブラリの実装において例えば3つのプロトコルのうちのいずれかが選択されて通信が行われる。3つのプロトコルとは、すなわち、Eagerプロトコル、Rendezvous-RDMA readプロトコル、Rendezvous-RDMA writeプロトコルである。
以下の説明では、プロセス間通信において、送信プロセスが受信プロセスに転送する対象データを送信対象データと記す場合がある。
先ず、MPI通信関数と、RDMA通信関数の違いについて説明する。図1は、MPI通信関数とRDMA通信関数の違いを説明するための図である。図1(A)は、MPI通信関数を用いた通信について説明するための図である。図1(B)は、RDMA通信関数を用いた通信について説明するための図である。
図1(A)に示すように、MPI通信関数を用いた通信の場合、データを送信するプロセスAは、プロセスA自身の情報と、通信相手のプロセスBのプロセスIDの情報を用いてデータを送信することが可能である。具体的にはプロセスAは、通信相手先であるプロセスBのプロセスIDを指定してプロセスBに対してデータを送信する。このようにMPI通信関数を用いた通信の場合、プロセスAはプロセスBに関してプロセスID以外の情報を持たなくても、データの通信を行うことができる。尚、通信相手のプロセスIDは、別のMPI関数を用いて入手可能である。
一方、RDMA通信関数を用いた通信の場合、図1(B)に示すように、プロセスAは、プロセスBのプロセスIDに加えて、プロセスBについての通信制御に関する情報を用いて、データを送信する。すなわちプロセスAは、プロセスBについての通信制御に関する情報を持っていなければ、データをプロセスBに送信することはできない。通信制御に関する情報とは、例えば、受信側情報処理装置としての受信ノードにおいて送信対象データが格納されるメモリのアドレスなどの情報である。プロセスAは、データの通信に先立ってプロセスBについての通信制御に関する情報をプロセスBから取得する。そして取得した情報に基づいて、プロセスAは、受信ノードのメモリのアドレス等を指定してデータをプロセスBへ送信する。このようにRDMA通信関数を用いた通信では、通信相手の通信制御に関する情報をやり取りするための制御通信が発生する。
次に、図2〜図4を参照して、実施形態で使用される3つのプロトコルについて説明する。先ずEagerプロトコルについて説明する。
Eagerプロトコルを用いた通信では、送信対象データの通信前の制御通信は行われない。制御通信がない代わりに、受信ノードにおいてMPIライブラリにより受信バッファが確保される。送信対象データは受信ノードで受信されると、受信バッファに格納される。受信バッファに格納された送信対象データは、その後、アプリケーションの使用するメモリ領域(ユーザ領域)へコピーされる。以下の説明では、MPIライブラリにより使用されるメモリ領域をMPI領域と記し、アプリケーションが使用するメモリ領域をアプリケーション領域と記す場合がある。受信バッファは、MPI領域に確保される。尚、アプリケーション領域は、所定の記憶領域でもよい。
図2は、Eagerプロトコルについて説明するための図である。図2に示すように、先ず送信プロセスは、アプリケーション領域から送信対象データをMPI領域にコピーする。次に送信プロセスは、コピーした送信対象データに、タグ情報等を格納したヘッダ及びフッタを付加して、受信プロセスへ送信する。受信プロセスはデータを受信すると、受信バッファに、受信したデータを格納する。次に受信プロセスは、ヘッダ及びフッタを送信対象データから外して、アプリケーションが使用するメモリ領域にコピーする。そして受信プロセスは、送信プロセスに対して送信対象データの受信が完了したことを通知する。
Eagerプロトコルを用いた通信は、比較的小さなデータの転送に適している。具体的にはEagerプロトコルを用いた通信に適するデータとは、送信プロセスに対応する受信バッファに入りきるサイズのデータ等であり、例えば、1メガバイトまでのデータである。尚、Eagerプロトコルを用いた通信において送信プロセスは、事前に受信ノードのアドレスを知っているものとする。
次にRendezvous-RDMA readプロトコルについて説明する。Rendezvous-RDMA readプロトコルを用いた通信では、送信対象データの通信前に、通信相手の通信制御に関する情報をやり取りするための制御通信が行われる。具体的には受信プロセスは、制御通信により送信プロセスの通信制御に関する情報を取得する。そして受信プロセスは、取得した情報を用いて、送信側のアプリケーション領域から送信対象データを取得し、直接受信ノードのアプリケーション領域に格納する。
図3は、Rendezvous-RDMA readプロトコルについて説明するための図である。図3に示すように、先ず送信プロセスは制御通信により、通信制御に関する情報を受信プロセスに送信する。通信制御に関する情報を受信すると、受信プロセスは、通信制御に関する情報を受信バッファに格納する。次に受信プロセスは、通信制御に関する情報に基づいて、例えば、取得対象のデータが格納される送信側情報処理装置としての送信ノードのアドレスや、取得したデータを格納する受信ノードのアドレス等を指定して、送信対象データの取得要求(RDMA Read)を発行する。送信対象データの取得要求を受信すると、送信プロセスは、送信対象データを受信ノードのアプリケーション領域に送信する。送信対象データを受信すると、受信プロセスは通信の完了通知を送信プロセスに対して送信する。
Rendezvous-RDMA readプロトコルを用いた通信は、Eagerプロトコルを用いた通信よりも、大きなデータの転送に適している。具体的にはRendezvous-RDMA readプロトコルを用いた通信に適するデータとは、送信プロセスに対応する受信バッファのサイズより大きいサイズのデータ等であり、例えば1メガバイトより大きなデータである。
次にRendezvous-RDMA writeプロトコルについて説明する。Rendezvous-RDMA writeプロトコルを用いた通信では、Rendezvous-RDMA writeプロトコルを用いた通信と同様に、送信対象データの通信前に、通信相手の通信制御に関する情報をやり取りするための制御通信が行われる。具体的には送信プロセスは、制御通信により、送信プロセスの通信制御に関する情報を受信プロセスに送信し、その応答として、受信プロセスの通信制御に関する情報を取得する。そして送信プロセスは、送信側のアプリケーション領域から送信対象データを送信し、直接受信ノードのアプリケーション領域に格納する(RDMA Write)。
図4に示すように、先ず送信プロセスは制御通信により、送信ノードの通信制御に関する情報を受信プロセスに送信する。通信制御に関する情報を受信すると、受信プロセスは、通信制御に関する情報を受信バッファに格納する。次に受信プロセスは、受信ノードの通信制御に関する情報を送信プロセスに送信する。次に送信プロセスは、受信プロセスの通信制御に関する情報に基づいて、送信対象データの格納先となる受信ノードのアプリケーション領域のアドレスを指定して、送信対象データ送信する。それにより送信プロセスは、指定したアプリケーション領域に送信対象データを書き込む。そして送信プロセスは、通信の完了通知を受信プロセスに対して送信する。
Rendezvous-RDMA writeプロトコルを用いた通信は、Rendezvous-RDMA readプロトコルを用いた通信と同様に、Eagerプロトコルを用いた通信よりも、大きなデータの転送に適している。
上記3つのプロトコルを用いた通信において、異なる送信プロセスから同時にデータが送られてくる場合があるので、受信バッファは送信プロセスごとに確保されることがある。この場合、大量の通信が発生すると、受信側のメモリ使用量が多くなる。
尚、送信側のMPI領域は、他の送信プロセスが他のデータを送信する際にも使い回すことができる領域である。このため、複数の送信プロセスによる通信が発生しても送信側のMPI領域が不足するケースが発生することは、受信側のMPI領域に比較すると少ない。
次に、送信ノードのMPI領域のデータが受信ノードのMPI領域に送信される手順について説明する。以下の説明では、送信ノードのMPI領域から受信ノードのMPI領域に転送されるデータを通信データと記す場合がある。通信データは、Eagerプロトコルの通信の場合は、送信対象データであり、Rendezvous-RDMA read、及びRendezvous-RDMA writeプロトコルの通信の場合は、通信制御に関する情報である。
図5は、送信ノードのMPI領域のデータが受信ノードのMPI領域に送信される手順を説明するための図である。
図5において送信ノードのMPIライブラリ(以下、送信MPIライブラリと記す場合がある)は、先ず、通信データをアプリケーション領域からMPI領域にコピーする。そして送信MPIライブラリは、MPI領域の通信データの送信処理を開始する。データの送信前に送信MPIライブラリは、通信データの通信を制御するための制御情報(以下、ディスクリプタと記す場合がある)を生成する。このディスクリプタとともに、送信MPIライブラリは通信経路としてのネットワークまたはインターコネクトを介して、通信データを受信ノードに送信する。
送信ノードから通信データとディスクリプタを受信すると、受信ノードは通信データをMPI領域に確保したバッファに格納する。通信データのバッファへの格納が完了すると、受信ノードの通信モジュールは、ディスクリプタの一部の情報を含む受信完了通知を生成して、生成した受信完了通知をキューに格納する。キューは、通信モジュールにより受信ノードのメモリを用いて実現される。ここで、通信モジュールは、受信ノードのハードウェアにより制御されるものであってもよいし、MPIライブラリの機能によって実現されてもよい。
次に、受信ノードのMPIライブラリ(以下、受信MPIライブラリと記す場合がある)は、キューに格納された受信完了通知を参照し、参照した受信完了通知に基づいて、バッファの通信データにアクセスする。ここで、受信MPIライブラリは、キューに対してポーリングを行うことにより受信完了通知がキューに格納されたか否かを確認する。
そしてMPIライブラリは、バッファから通信データを、通信プロトコルに応じて、アプリケーション領域またはMPI領域にコピーする。すなわち、通信プロトコルがEagerプロトコルの場合は、MPIライブラリは、通信データをアプリケーション領域にコピーする。そしてコピーされたデータに対してアプリケーション等はアクセスを行う。通信プロトコルがRendezvous-RDMA read、またはRendezvous-RDMA writeの場合には、MPIライブラリは、通信データをMPI領域の別の領域にコピーする。通信プロトコルがRendezvous-RDMA read、またはRendezvous-RDMA writeの場合には、MPI領域にコピーした通信データは、送信ノードの通信制御に関する情報であり、この情報に基づいてRDMA-ReadまたはRDMA-Writeが行われることとなる。以下の説明では、通信データは、受信ノードにおいて、バッファに格納されてから別の領域にコピーされるまでの間は、通信で使用中であると記す場合がある。
ディスクリプタは、対応する通信データのプロセス間の通信を制御するために使用される通信制御情報である。ディスクリプタは通信処理を行う通信モジュールにより使用される。詳しくは後ほど説明するが、ディスクリプタは、例えば、通信の方法、通信相手のデータのメモリ上の位置、通信データのサイズ、及び通信相手の位置情報を含む。例えばプロセスXがプロセスYに通信データを送信する際に生成されるディスクリプタには、以下の情報が含まれてもよい。すなわちディスクリプタに含まれる情報は、RDMA-Writeを行う旨を示す情報、プロセスYのメモリの「AAAA」番地からサイズ「L」バイト分のデータを書き込む旨を示す情報、プロセスXの通信データは「BBBB」番地にある旨を示す情報である。
尚、送信MPIライブラリは送信プロセスによって実行されてもよいし、受信MPIライブラリは受信プロセスによって実行されてもよい。また、ディスクリプタを生成するのは、送信プロセスからデータを送信する旨の通知を受けた通信モジュールのプロセスまたは所定のソフトウェア(プログラム)であってもよい。
上述したようにMPIを用いた通信においては、受信ノードにおいて通信データを一時的に記憶するための領域が利用される。例えば、通信を行うプロセスは各ノードのMPI領域にバッファを確保して、このバッファを通信に利用する。尚、これに比べて例えば、Transmission Control Protocol/Internet Protocol(TCP/IP)等を用いた通信では、バッファを使わずに通信することが処理上は可能である。
プロセス間通信におけるバッファの確保の方法は、プロセス間通信毎にバッファを確保する方法と、全プロセスが共有して使用する固定長の受信バッファを確保する方法との2つの方法がある。
プロセス間通信毎にバッファを確保する方法(第1の方法)では、受信プロセスは、プロセス間通信毎に、MPI領域の互いに異なる領域にバッファを確保する。すなわち受信プロセスは、各プロセス間通信で確保するバッファの領域が、互いに重ならないように確保する。
図6は、第1の方法を説明するための図である。図6において、プロセスAはプロセスXに対して、通信データNを送信している。プロセスAが送信する通信データNに対応するディスクリプタNには、通信データNが、送信ノードAのメモリにおいて、先頭アドレスが「AAA」からサイズが「N」バイトの領域に格納されていることを示す情報が含まれる。また、ディスクリプタNには、通信データNの送信先のプロセスがプロセスXであることを示す情報が含まれる。また、ディスクリプタNには、通信データNの転送先の領域が、受信ノードXのアドレス「XXX」を先頭アドレスとする領域であることを示す情報が含まれる。
また、プロセスBはプロセスXに対して、通信データMを送信している。プロセスBが送信する通信データMに対応するディスクリプタMには、通信データMが、送信ノードBのメモリにおいて、先頭アドレスが「BBB」からサイズが「M」バイトの領域に格納されていることを示す情報が含まれる。また、ディスクリプタMには、通信データMの送信先のプロセスがプロセスXであることを示す情報が含まれる。また、ディスクリプタMには、通信データMの転送先の領域が、受信ノードXのアドレス「YYY」を先頭アドレスとする領域であることを示す情報が含まれる。
受信ノードXには、プロセスXの通信相手のプロセスである、プロセスA、プロセスB毎にバッファが割り当てられている。プロセスA、プロセスBから受信した通信データはプロセス毎に割り当てられたバッファに格納される。バッファに通信データが格納されると、受信用のキューに受信完了通知が書き込まれる。プロセスXはキューにある受信完了通知を確認し、受信完了通知に記載されたメモリのアドレス上の通信データにアクセスする。そしてプロセスXは、通信プロトコルに応じて、通信データを別の領域にコピーする。
例えばプロセスXは、通信データNの受信完了通知を参照して、通信データNが格納されている先頭アドレス「XXX」とデータのサイズ「N」を特定する。そしてプロセスXは、アドレス「XXX」からサイズ「N」の領域に格納されているデータにアクセスして、そのデータを別の領域にコピーする。
尚、受信バッファは、プロセス間通信ごとに割り当てられてもよい。
後ほど説明するが、バッファを全プロセスで共有して使用する場合には、複数のプロセス間通信が同時に発生すると、通信で使用中のデータが上書きされることがある。これに対して第1の方法では、1つのノードにおいて複数のプロセス間通信が同時に発生しても、通信で使用中のデータが上書きされることを防ぐことができる。これは、各プロセス間通信で確保されるバッファの領域が異なるためである。このため、データの上書きを防ぐための制御を実現するための、別途のプロセス間通信は発生しない。よって、複数のプロセス間通信が同時に発生しても、データの上書きを防ぐための制御に起因する処理性能の劣化を抑制することができる。
しかしながら、第1の方法では、プロセス間通信毎にバッファが確保されるため、大量のプロセス間通信が発生すると、MPIライブラリが使用するメモリ量が膨大になる。MPI領域が増大すると、それだけ各ノードのメモリで使用可能なアプリケーション領域を圧迫することとなる。各ノードに搭載される物理メモリは有限であり、特にHPCの分野におけるように、大量のプロセス間通信が発生する場合には、メモリの枯渇や、メモリ不足に起因するアプリケーションの処理性能の低下が問題となる。
送信ノードと受信ノードが、通信において使用可能な一時領域が存在しないインターコネクトで接続される場合には、受信ノードのメモリ使用量の問題の影響は大きくなる。このようなインターコネクトには、例えば、Tofu(Torus fusion)インターコネクト等がある。
全プロセス共通の受信バッファを確保する方法(第2の方法)は、すべてのプロセス間通信において、受信ノードにおいて使用されるバッファが共通のバッファとなる方法である。共通のバッファは、各ノードにおいてMPI領域として確保可能なメモリの容量を超えないように確保される。このため、大量のプロセス間通信が発生した場合にも、MPIライブラリが使用するメモリ量を所定の範囲内に抑えることができる。しかしながら第2の方法では、使用中のデータの上書きを防ぐためには、通信データを送信するための通信とは別途のプロセス間通信が発生することとなる。第2の方法は、バッファの制御方法に基づいてさらに3つの方法(第2−1の方法〜第2−3の方法)に分類される。
第2−1の方法は、各プロセスのバッファの使用に関する制御を何も行わない方法である。第2−1の方法では、バッファの使用に関する制御が行われないために、1つのノードで複数のプロセス間通信が発生した場合に、通信で使用中のデータが上書きされる可能性がある。これは例えば、2つの異なるプロセスが同時に、同じプロセスに対して、同じ受信バッファのアドレスにデータを格納するように指定して、データを送信する場合等である。通信で使用中のデータが上書きされた場合、受信したデータが受信ノードから消失してしまうため、アプリケーション等は受信したデータにアクセスすることができなくなる。そのため、データの上書きが発生した場合には、受信プロセスは上書きされたデータの再転送を行うように制御する。
図7は、第2−1の方法において、データの上書きが発生した場合の再転送の様子を説明するための図である。図7において、プロセスAとプロセスBは同時に、プロセスXに対して、それぞれ通信データN、通信データMを送信している。このとき、プロセスAとプロセスBは、互いに相手のプロセスが、プロセスXにデータを送信することを知らないし、データをプロセスXのバッファのどこの領域に送るのかも知らない。受信ノードXにおいて、通信データNと通信データMが格納されるバッファの領域が重複した場合には、どちらかのデータが他方のデータによって上書きされてしまう。このような上書きが発生した場合、プロセスXは、上書きされたデータの送信プロセス(図7ではプロセスA)に対して、通信データの再送要求を送信する。再送要求を受信すると、プロセスAは再度、プロセスXに対して通信データNを送信する。
このように第2−1の方法では、データの上書きが発生した場合に再転送のための通信が発生する。また、再転送の制御のために、チェックポイント/リスタートのような、実行時の通信順を記録する処理等が発生する。そのためバックアップやリカバリの時間も発生することとなる。
第2−2の方法は、全プロセス共通の受信バッファをプロセス数で分割する制御を行う方法である。第2−2の方法では、プロセス毎に送信可能なデータサイズが制限される。このデータサイズはプロセス数に反比例する。このため送信可能なデータサイズよりも大きいデータを送信する場合には、送信プロセスは通信データを複数に分割して送信する。複数の分割されたデータは連続して送信されることが考えられ、この場合、受信ノードでは、分割されたデータの1つを受信した後、そのデータを処理しきる前に、次の分割されたデータを受信してしまうというケースが発生する確率が高くなる。受信したデータを処理しきる前に新たにデータを受信すると、第2−2の方法では、受信プロセスは、バッファ上の処理前のデータを、後から受信したデータで上書きしてしまう。
このようなデータの上書きを防ぐために、受信プロセスは、データの送信が可能である旨の通知(送信許可通知)を送信プロセスに送信し、送信プロセスは送信許可通知を受信してから、データを送信するように制御が行われる。
図8は、第2−2の方法において、データの上書きを防止するための制御を説明するための図である。図8において、プロセスAは、プロセスXに対して、所定のデータを分割した複数の通信データN1、N2を連続して送信している。このときプロセスXは、通信データN1をメモリに格納してから、通信データN1を別の領域にコピーする前に、通信データN2のデータを受信している。この場合、受信プロセスは、使用中の通信データN1を通信データN2のデータに上書きしてしまう。
そこで、プロセスXは、通信データN1を受信すると、通信データN1が別の領域にコピーされたことを確認してから、送信許可通知をプロセスAに送信する。プロセスAは、送信許可通知を受信したことを確認したのちに、通信データN2をプロセスXに対して送信する。これにより、通信で使用中のデータの上書きを防ぐことができる。
しかしながら第2−2の方法では、上書きを防止するために、送信許可通知を送信する通信が発生し、送信プロセスは、送信許可通知の受信を待ってから次の通信データの送信を行うため、レイテンシが悪化する。
第2−3の方法は、全プロセス共通の受信バッファにおいて、受信プロセスが動的にバッファを確保する制御を行う方法である。図9は、第2−3の方法におけるデータの上書きを防止するための制御を説明するための図である。
第2−3の方法では、先ず送信プロセスAは、受信プロセスXに対して、バッファの領域確保を依頼する。依頼に応じてプロセスXは、バッファの領域を確保する。このときプロセスXは、確保するバッファの領域に対して排他制御を行う。尚、メモリが不足している等の理由でバッファの領域を確保できない場合は待ちが発生する。そしてプロセスXは、確保したバッファのアドレスを、プロセスAに通知する。プロセスAは、バッファのアドレスが通知されるまで待ち、通知を受信すると、その通知で示されるバッファのアドレスを指定して、データを送信する。
このように、第2−3の方法では、バッファ領域の確保のための通信が発生する。通信の回数が増えるためレイテンシが悪化し、また、受信バッファの排他制御のための時間もかかる。
次に、実施形態において、送信対象データが送信プロセスから受信プロセスに転送される様子を説明する。
実施形態において、送信プロセスは、ペイロード情報としての通信データを例えば空データのダミーデータとし、ダミーデータに対応するディスクリプタに送信対象データを埋め込む。そして送信プロセスは、通信データとしてのダミーデータと、ディスクリプタとを受信ノードに送信する。受信プロセスは、ディスクリプタに埋め込まれた送信対象データを抽出することにより、送信対象データを取得する。
ここで、ダミーデータは空データであってもよいし、何かのデータを含む実データであってもよい。
図10は、実施形態の通信方法の流れを説明するための図である。図10において、送信プロセスは先ず、ダミーデータと、そのダミーデータに対応するディスクリプタを生成する。次に送信プロセスは、送信対象データを分割して分割データを生成し、分割データをディスクリプタの特定の領域に埋め込む。そして送信プロセスは、ダミーデータと、そのダミーデータに対応するディスクリプタとを、ネットワークまたはインターコネクトを介して受信ノードに送信する。
受信ノードは、ダミーデータと、ダミーデータに対応するディスクリプタとを受信すると、先ず、ダミーデータを受信バッファに格納する。ダミーデータの受信バッファへの格納が完了すると、受信プロセスはディスクリプタに基づいて、受信完了通知を生成し、キューに格納する。次に受信プロセスは、キューに格納された受信完了通知から分割データを抽出する。そして受信プロセスは、分割データを結合して通信データを再構成する。その後、受信プロセスは、再構成した通信データを、通信プロトコルに応じてアプリケーション領域またはMPI領域にコピーする。
以下の説明では、図10を参照して説明した、通信データをダミー情報として、ディスクリプタに送信対象データを埋め込む通信をダミー通信と記し、図5を参照して説明した通信を基本通信と記す。
図11は、実施形態に係る情報処理システムの構成の一例を示す。図11において情報処理システム1は、送信側情報処理装置2と、送信側情報処理装置2に通信経路を介して接続される受信側情報処理装置3とを有する。
送信側情報処理装置2は、送信側演算処理装置4と、送信側記憶装置5と、送信側通信装置6とを有する。送信側演算処理装置4は、送信側プロセス(送信プロセス)を実行する。送信側記憶装置5は、送信対象である対象データ(送信対象データ)を保持する送信側記憶領域を有する。送信側通信装置6は、送信側プロセスにより、対象データと対象データの宛先を示す宛先情報とを有する制御情報(ディスクリプタ)を含んで生成される送信データを、通信経路を介して送信する。
受信側情報処理装置3は、受信側通信装置7と、受信側演算処理装置8と、受信側記憶装置9とを有する。受信側通信装置7は、送信データを、通信経路を介して受信する。受信側演算処理装置8は、受信側プロセス(受信プロセス)を実行する。受信側記憶装置9は、受信側プロセスにより、送信データから抽出される対象データを、記憶する受信側記憶領域を有する。
送信データはさらに、制御情報の他に、ペイロード情報(通信データ)を有する。ペイロード情報は空データである。もしくは、ペイロード情報は実データである。
制御情報はさらに、宛先情報の他に、送信側情報処理装置2と受信側情報処理装置3との間の通信方式を示す通信方式情報(通信種別情報)を有する。また、送信側通信装置6と受信側通信装置7は、通信方式情報に応じた通信方式により、通信を行う。
送信側プロセスは、対象データを分割して制御情報に埋め込むことにより、送信データを生成する。
以下、送信側情報処理装置2と受信側情報処理装置3の処理について具体的に説明する。送信側プロセス(送信プロセス)と受信側プロセス(受信プロセス)は、プロセス間データ通信手順を用いて通信を行う。プロセス間データ通信手順は、送信側プロセスと受信側プロセスとの間で、ペイロード情報(通信データ)と、ペイロード情報の通信を制御するための制御情報(ディスクリプタ)の通信を行うプロセス間通信の手順である。プロセス間データ通信手順において、受信側情報処理装置3では、送信側プロセスから受信したペイロード情報は格納領域(バッファ)に格納され、受信した制御情報は受信順に管理される。
送信側プロセスは、プロセス間データ通信手順を用いて受信側プロセスと通信を行う。送信側プロセスは、プロセス間データ通信手順を用いて、ペイロード情報と、制御情報とを受信側プロセスに送信する。ここでペイロード情報は、ダミー情報である。制御情報は、ダミー情報に対応付けられる。また制御情報は、データの書換えが可能な第1領域(埋め込み領域)と、受信側プロセスの情報が格納される第2領域とを含む。この第1領域は、第2領域とは異なる領域である。制御情報は第1領域に対象データ(送信対象データ)の少なくとも一部を含む。
受信側プロセスは、ダミー情報と制御情報を送信側プロセスから受信し、受信順に管理される制御情報から対象データの少なくとも一部を取り出す。
これにより、複数のプロセス間通信が同時に発生した場合に、受信側情報処理装置3において、対象データが他のプロセス間通信における通信データにより上書きされることを防ぐことができる。このため、例えば第2−2の方法及び第2−3の方法で説明したような、対象データの上書きを防ぐために発生するプロセス間通信を抑制することができる。また、例えば第2−1の方法で説明したような、データの上書きが発生した場合に行われる再転送のための通信を抑制することができる。また、再転送の制御のための処理等を抑制することができ、再転送の制御のためのバックアップやリカバリの発生を防ぐことができる。
また、実施形態において対象データは、プロセス間データ通信手順においてデータを送信する場合におけるデータのサイズ及び格納位置を示す情報を格納する第1領域に書き込まれる。
これにより、効率的に制御情報に対象データを含ませて、対象データを送信側プロセスから受信側プロセスへ送信することができる。
または、実施形態において対象データは、プロセス間データ通信手順において組み込みデータが格納される第1領域に書き込まれる。
これにより、効率的に制御情報に対象データを含ませて、対象データを送信側プロセスから受信側プロセスへ送信することができる。
また制御情報は、第1領域に、対象データの少なくとも一部と、通信方式を示す通信方式情報(通信種別情報)とを含む。受信側プロセスは、受信した制御情報に含まれる通信方式情報が示す通信の方式に応じて、制御情報から対象データの少なくとも一部を取り出す。
これにより、受信側プロセスは受信した制御情報に、対象データが含まれているか否かを識別することができる。
また制御情報は、第2領域に、送信側プロセスの識別情報を含む。送信側プロセスは、対象データを複数の分割データに分割して、1以上の分割データ、及び、通信種別情報を、複数の制御情報の第1領域に格納する。そして送信側プロセスは、複数の制御情報を受信側プロセスに送信する。受信側プロセスは、制御情報を受信した場合、第1領域に含まれる通信種別情報に応じて、第1領域から分割データを取り出し、第2領域に含まれる識別情報に応じて、複数の制御情報から取り出した分割データを結合して対象データを再構成する。
これにより、送信側プロセスは対象データを複数の制御情報に分割して送信することができる。また受信側プロセスは、受信側情報処理装置3において複数の送信側プロセスとのプロセス間通信が同時に発生した場合にも、複数の制御情報から、各送信側プロセスとの通信毎に、対象データを再構築することができる。
また受信側情報処理装置3においてダミー情報が格納される領域は、複数のプロセス間通信によって共有される固定長のバッファである。
これにより、複数のプロセス間通信が発生した場合に、受信側情報処理装置3のバッファの使用量を削減することができる。
図12は、実施形態に係る通信ノードの構成の一例を示す。図12において、通信ノード18は、記憶部10、送信制御部11、設定部12、送信部13、受信制御部14、受信部15、及び、抽出部16を含む。記憶部10、送信制御部11、設定部12、及び送信部13は、データの送信に関する。記憶部10、受信制御部14、受信部15、及び抽出部16は、データの受信に関する。
通信ノード18は、送信側情報処理装置2、及び受信側情報処理装置3の一例である。送信制御部11、設定部12、及び送信部13の機能の一部は、送信側演算処理装置4が実行する送信側プロセスの一例である。また送信部13の機能の一部は、送信側通信装置6の一例である。受信制御部14、及び抽出部16は、受信側演算処理装置8が実行する受信側プロセスの一例である。記憶部10は、送信側情報処理装置2においては、送信側記憶装置5の一例である。また記憶部10は、受信側情報処理装置3においては、受信側記憶装置9の一例である。受信部15は、受信側通信装置7の一例である。
記憶部10には、MPI領域、アプリケーション領域、キューが確保される。キューは、例えば、通信ノード18のOperating System(OS)が確保するカーネル等の領域に確保される。MPI領域には、受信した通信データが格納されるバッファの領域が確保される。
先ず、データの送信処理に関するものについて説明する。
送信制御部11は、送信対象データのサイズに応じて、プロセス間通信において使用する通信プロトコルを選択する。具体的には例えば、送信制御部11は先ず、送信対象データのサイズが所定の閾値よりも大きいか否かを判定する。送信対象データのサイズが所定の閾値よりも小さい場合には、送信制御部11は、送信対象データを通信する際に使用するプロトコルとして、Eagerプロトコルを選択する。一方、送信対象データのサイズが所定の閾値以上の場合には、送信制御部11は、送信対象データを通信する際に使用するプロトコルとして、Rendezvous-RDMA readプロトコル、または、Rendezvous-RDMA writeプロトコルを選択する。所定の閾値は予め記憶部10に記憶される。尚、送信対象データの通信で使用される通信プロトコルは、ユーザ端末により指定されてもよい。また送信制御部11は、選択した通信プロトコルに応じて種々の処理を行う。
また送信制御部11は、通信データと、通信データに対応するディスクリプタを生成する。ただし実施形態においては、通信データはダミーデータとする。送信制御部11は、ディスクリプタに通信データ(ダミーデータ)の通信を制御するための通信制御情報を設定する。ダミーデータは、中身に意味がないデータである。ダミーデータのサイズは所定のサイズであってもよく、ダミーデータのサイズを小さくすることで、通信量や通信で使用するバッファの量を小さくすることができる。
設定部12は、ディスクリプタの領域(フィールド)のうち、値の変更が可能な領域であって、通信データをダミーデータとすることで値の書換えが可能となる領域(以下、埋め込み領域と記す場合がある)に、プロセス間で本来通信したい送信対象データを埋め込む。埋め込み領域は、データの書換えが可能な領域であって、受信プロセスの情報が格納される領域とは異なる領域である。このとき設定部12は、送信対象データのサイズに応じて、送信対象データを複数の分割データに分割して埋め込み領域に埋め込む。送信対象データの分割において設定部12は、各分割データのサイズが、埋め込み領域に格納可能なサイズとなるように分割する。尚、1つのディスクリプタに複数の埋め込み領域が含まれ、各ディスクリプタのサイズはそれぞれ異なる場合もあるが、この場合、設定部12は、各埋め込み領域に分割データが格納されるように、各分割データのサイズを調整して分割する。また設定部12は、ディスクリプタに送信対象データが含まれているか否かを示す情報である通信種別情報を埋め込み領域に格納してもよい。ディスクリプタに通信データを格納する処理の詳細については、後ほど説明する。
送信部13は、通信データ(ダミーデータ)と、送信対象データ(分割データ)が埋め込まれたディスクリプタとを、受信ノードに対して送信する。
次に、データの受信処理に関するものについて説明する。
受信制御部14は、データの受信に先立って、予め固定長のバッファをMPI領域に確保する。
受信部15は、通信データ(ダミーデータ)とディスクリプタとを送信ノードから受信する。すると受信部15は、通信データを固定長のバッファに格納する。ここで通信データを格納する固定長のバッファは、全てのダミー通信で共通して使用されるバッファである。通信データのバッファへの格納が完了すると、受信部15は、通信データに対応するディスクリプタに基づいて受信完了通知を生成し、キューに格納する。
抽出部16は、定期的にポーリングを行い、受信完了通知がキューに格納されているか否かを判定する。ポーリングによる監視において、キューに受信完了通知が格納さていることを確認すると抽出部16は、その受信完了通知がダミー通信において生成されたものであるか否かを判定する。具体的には例えば、抽出部16は、受信完了通知の埋め込み領域に通信種別情報が含まれているか否かを判定する。受信完了通知に通信種別情報が含まれていることを確認することで抽出部16は、受信完了通知はダミー通信に関するものであると認識することができる。受信完了通知がダミー通信において生成されたものであると判定した場合、抽出部16は、受信完了通知から、その受信完了通知に対応するディスクリプタの埋め込み領域に埋め込まれた分割データを抽出する。そして抽出部16は、抽出した複数の分割データを結合する。
受信完了通知に対応する通信が基本通信かダミー通信かについて、抽出部16は、ディスクリプタに含まれる、通信データが格納されるバッファの位置を示す情報に基づいて判定してもよい。通信データが格納されるバッファの位置を示す情報が、ダミー通信用の固定長のバッファを示している場合には、抽出部16は、受信完了通知に対応する通信はダミー通信であると判定してもよい。
分割データの結合は、予め定められた結合規則に基づいて行われる。この結合規則は、記憶部10の所定の記憶領域に記憶される。尚、結合規則は、送信ノードで送信対象データを分割した分割データをディスクリプタに埋め込む際の規則と対応するものとする。1つの送信対象データに対応する複数の分割データが複数のディスクリプタに跨って送信される場合には、抽出部16は、受信完了通知の受信順に基づいて、複数の分割データを結合してもよい。尚、例えば、送信ノードは送信対象データの最後に、送信対象データの末尾を示す所定の情報を格納し、抽出部16は末尾を示す情報が分割データに含まれているか否かを確認することにより、送信対象データの末尾を認識してもよい。
そして抽出部16は、再構成した通信データを、通信プロトコルに応じて、MPI領域、または、アプリケーション領域にコピーする。すなわち、通信プロトコルがEagerプロトコルの場合には、抽出部16は、送信対象データをアプリケーション領域にコピーする。通信プロトコルがRendezvous-RDMA readまたはRendezvous-RDMA writeの場合には、抽出部16は、送信対象データ(通信制御に関する情報)をMPI領域にコピーする。
また、受信制御部14及び受信部15は、送信対象データのサイズに応じた通信プロトコルの選択や、選択した通信プロトコルに応じて種々の処理を行う。
次に、設定部12によるディスクリプタへの送信対象データの埋め込みについて説明する。図13は、設定部12によるディスクリプタへの送信対象データの埋め込みについて説明するための図である。
図13(A)は、基本通信における、ディスクリプタ及び受信完了通知のデータ構成の一例を示す。図13(B)は、ダミー通信における、ディスクリプタ及び受信完了通知のデータ構成の一例を示す。
図13(A)に示すように、ディスクリプタは、複数の領域(フィールド)を有する。ディスクリプタが有する領域は、データの書換えが不可能な領域(以下、書換え不能領域と記す場合がある)と、データの書換えが可能な領域(以下、書換え可能領域と記す場合がある)に分けられる。また、ディスクリプタが有するいくつかの領域は、通信相手に関する情報が格納される。
ダミー通信では、図13(B)に示すように、ディスクリプタの領域のうち、次の3つの条件を満たす埋め込み領域の一部に送信対象データが格納される。
(1)データの書換えが可能な領域である
(2)受信完了通知に含まれる情報が格納される領域である
(3)通信相手に関する情報が格納される領域とは異なる領域である
埋め込み領域は、ディスクリプタの仕様に応じて、予め定められる領域である。尚、埋め込み領域の一部に送信対象データが格納されるとしたが、通信に影響が生じないのであれば、埋め込み領域の全部の領域に送信対象データが格納されてもよい。
ダミー通信において、ディスクリプタの埋め込み領域に送信対象データの埋め込みが可能な理由は、通信データがダミーデータであるために、埋め込み領域に本来格納される情報が使用されない情報となるからである。それらの情報は、例えば、通信データのサイズを示す情報や通信データのバッファの位置を示す情報等である。これらの情報は、通信データがダミーデータである場合には、変更されても通信への影響が生じない。
図13(B)に示すように、埋め込み領域は、ディスクリプタに複数含まれる場合がある。送信対象データは、各埋め込み領域に格納可能なサイズに分割されて、各埋め込み領域に埋め込まれる。
送信対象データが埋め込まれる領域は、受信完了通知に含まれる情報が格納される領域のうちの何れかの領域である。そのためディスクリプタに埋め込まれた送信対象データは、受信完了通知にも含まれることとなる。受信完了通知に含まれる送信対象データは、抽出部16によって抽出されて結合される。
図13(B)においては、送信対象データは「F1」、「F2」、「F3」に分割されて、ディスクリプタの埋め込み領域に埋め込まれて転送される。そして、受信ノードにおいて、分割されて埋め込まれた「F1」、「F2」、「F3」は、受信完了通知から抽出されて結合される。
送信対象データのサイズは、1つのディスクリプタの埋め込み領域のサイズの合計よりも大きい場合がある。その場合、送信プロセスは、送信対象データを複数のディスクリプタに分割して格納し、受信ノードに送信する。
図14は、送信対象データが複数のディスクリプタに分割して埋め込まれて、転送される様子を説明するための図である。図14において、送信対象データのサイズは、1つのディスクリプタの埋め込み領域のサイズの合計よりも大きい。図14の場合、送信プロセスは、送信対象データを分割して、「F11」〜「F13」のデータを1つのディスクリプタに埋め込んで、受信ノードに送信している。同様に、送信プロセスは「Fx1」〜「Fx3」(2≦x≦n)(nは整数)のデータをそれぞれ1つのディスクリプタに埋め込んで、受信ノードに送信している。
また図14において抽出部16は、受信した複数のディスクリプタに対応する各受信完了通知の埋め込み領域から、送信対象データを抽出して結合している。そして抽出部16は、各受信完了通知の埋め込み領域から抽出して結合した送信対象データを、さらに結合して、元の送信対象データを再構成している。
ここで、抽出部16は、受信完了通知に含まれる通信相手に関する情報を参照して、受信完了通知に対応する通信相手を識別することができる。よって、複数のプロセス間通信が同時に発生している場合でも、送信プロセス毎に受信完了通知からデータを抽出して結合することができる。
次に、ディスクリプタの構成の詳細について説明する。ディスクリプタは、対応する通信データのプロセス間の通信を制御するために使用される情報である。ディスクリプタは、通信の方法、通信データが格納される通信相手のメモリ上の位置、通信データのサイズ、及び通信相手の位置情報などを含む。
図15は、ディスクリプタのデータ構造の一例を示す。図15において、領域51は、通信の手法に関する情報が格納される。具体的には、領域51には、パケットの送出間隔やパケットのサイズ等の情報が格納される。「ABC1」、「Remote node address」、「RI」の領域には、通信データの転送先のノード座標情報が格納される。「Embedded data」の領域には、組み込みデータが格納される。組み込みデータはユーザにより自由に書換えが可能なデータである。「Message length」領域には、通信データのサイズが格納される。「Remote steering tag」、「local steering tag」、「Remote steering offset」、「Local steering offset」領域には、通信データの送受信を行うアドレス空間の座標を示す情報が格納される。具体的には、「Remote steering tag」領域には通信相手のノードにおいて、通信データが格納されるバッファの先頭アドレスを示す情報が格納される。また「local steering tag」には、自ノードにおいて、通信データが格納されるバッファの先頭アドレスを示す情報が格納される。「Remote offset」には、通信相手のノードにおいて、通信データが格納されるアドレスを示す情報であって、「Remote steering tag」のアドレスからのオフセット位置により示される情報が格納される。「Local offset」領域には、通信データが格納されるアドレスを示す情報であって、「Local steering tag」のアドレスからのオフセット位置により示される情報が格納される。
受信完了通知は、受信ノードにおいて、受信部15(通信モジュール)によりディスクリプタに基づいて生成される情報である。受信完了通知は、対応する通信データのバッファへの格納が完了した場合に、受信部15によりキューに格納される。抽出部16は、定期的にキューに受信完了通知が格納されているか否かを確認し(ポーリングを行い)、キューに受信完了通知が格納されていることを確認する。その結果、抽出部16は、通信データがバッファに格納されたことを認識し、バッファにおける通信データの格納位置を把握することができる。
具体的には受信完了通知は、通信相手のノードの座標情報を含む。これは、図15の「ABC1」、「Remote node address」、「RI」の領域に格納される情報に相当する情報である。また受信完了通知は、組み込みデータの情報を含む。これは、図15の「Embedded data」領域に格納される情報に相当する情報である。また受信完了通知は、通信データのサイズを示す情報を含む。これは、図15の「Message length」領域に格納される情報に相当する情報である。さらに受信完了通知は、自プロセス上のデータが到着したアドレス情報を含む。これは、図15の「Remote steering tag」又は「Remote offset」の領域に格納される情報に相当する情報である。
図16は、ディスクリプタの埋め込み領域の一例を示す。図16のディスクリプタの各フィールドは、書換え不能領域、通信相手の情報が格納される領域、埋め込み領域に分けられる。
埋め込み領域は、「Embedded data」、「Message length」、及び「Remote Offset」の領域である。埋め込み領域は、上述した3つの埋め込み領域としての条件を満たしている。尚、各埋め込み領域に埋め込み可能な送信対象データのサイズは、ダミー通信で使用する固定長の受信バッファのサイズ等を調整することにより変化させることもできる。尚、通信相手の情報が格納される領域は、「ABC1」、「Remote node address」、及び「RI」であり、通信相手のノードの座標情報を含む。尚、受信完了通知が格納されるキューが複数使用可能な場合は、どのキューから受信完了通知を受け取ったかということと、送信対象データのビットを関連付けることにより、送信対象データの情報をディスクリプタに含めることもできる。
抽出部16がキューに格納された受信完了通知を確認した際に、その受信完了通知が基本通信において生成されたものか、ダミー通信において生成されたものかを識別するための通信種別情報は、埋め込み領域に格納されてもよい。具体的には通信種別情報は、例えば、「Embedded data」領域に格納されてもよい。通信種別情報は、基本通信かダミー通信かを示す1ビットの情報であってもよい。また通信種別情報は、さらに、受信完了通知に対応する通信で使用されるプロトコルの種別を示すプロトコル種別情報を含んでもよい。プロトコル種別情報は、Eagerプロトコル、Rendezvous-RDMA readプロトコル、Rendezvous-RDMA writeプロトコルのいずれかの通信であることを示す2ビットの情報であってもよい。
受信完了通知に対応する通信が基本通信かダミー通信かについて、抽出部16は、「steering tag」の値に基づいて識別してもよい。すなわち抽出部16は、「steering tag」が示す位置が、ダミー通信用の固定長のバッファを示している場合には、受信完了通知に対応する通信はダミー通信であると判定してもよい。この手法は、通信種別情報を埋め込み領域に埋め込む手法に比べて、埋め込み領域に格納可能な送信対象データのサイズを増やすことができる。これは、ダミー通信においては、予め通信で使用するバッファを所定のアドレスに固定することができるために実現可能な手法である。
ダミー通信においては、1つのノードで複数のプロセス間通信が発生した場合でも、送信対象データが、他のデータに上書きされることにより消失する可能性はない。図7において説明したように、上書きが発生するのは同時に2つ以上のプロセス間通信において、重複する受信バッファに送信対象データが格納される場合である。ダミー通信においては、受信バッファに格納されるのはダミーデータであり、送信対象データは受信バッファではなく、ディスクリプタに埋め込まれた状態でキューに格納される。そのため図7のような通信データの上書きは発生しない。
図17は、ダミー通信において、2つの送信プロセスが同時に、1つの受信プロセスに対してデータを送信する様子を説明するための図である。図17において、プロセスAとプロセスBは同時に、プロセスXに対して、それぞれ送信対象データN、送信対象データMを送信するためにダミー通信を行っている。
プロセスA(設定部12)は送信対象データNを分割して、複数のディスクリプタ(DN1、DN2)に埋め込んでいる。そしてプロセスA(送信部13)は、ダミー通信を実行している。プロセスA(送信部13)からダミーデータAとディスクリプタDN1が送信され、ダミーデータAは受信ノードXの受信バッファに格納される。そして、ディスクリプタDN1に基づいて生成された受信完了通知DN'1がキューに格納される。
同様にプロセスB(設定部12)は送信対象データMを分割して、複数のディスクリプタ(DM1、DM2)に埋め込んでいる。そしてプロセスB(送信部13)は、ダミー通信を実行している。プロセスB(送信部13)からダミーデータBとディスクリプタDM1が送信され、ダミーデータBは受信ノードXの受信バッファに格納される。ディスクリプタDM1に基づいて生成された受信完了通知DM'1がキューに格納される。ここで、プロセスBから送信されたダミーデータBが格納される受信バッファは、ダミーデータAが格納された受信バッファと同じである。ダミーデータAは、ダミーデータBに上書きされることとなるかもしれないが、ダミーデータは参照されないので、通信に影響はない。
プロセスX(抽出部16)は、キューに格納された受信完了通知DN'1、DM'1のそれぞれから、送信対象データN、Mの分割されたデータを抽出する。さらにプロセスX(抽出部16)は、DN'1、DM'1の後にキューに格納される受信完了通知DN'2、DM'2から送信対象データN、Mの分割されたデータを抽出する。そしてプロセスX(抽出部16)は抽出したデータを、プロセス(プロセスA、プロセスB)毎に結合することで、送信対象データN、Mを取得する。ここで、プロセスX(抽出部16)は、受信完了通知に含まれる通信相手に関する情報を参照して、受信完了通知に対応する通信相手を識別することができる。
受信完了通知は、その受信完了通知に対応するダミーデータがバッファに格納された順に、キューに格納される。このことを利用して抽出部16は、受信完了通知の格納順に基づいて、複数の受信完了通知に含まれる複数の分割データの結合を制御することもできる。具体的には例えば、先ず、設定部12は、送信対象データにおける分割データの位置と、分割データを埋め込むディスクリプタの送信順とが対応するように制御する。そして抽出部16は、受信完了通知の格納順から、受信完了通知に含まれる分割データの、送信対象データにおける位置を特定する。そして抽出部16は、元の送信対象データが得られるように分割データを結合することで、複数の分割データを正しく結合することができる。
例えば図17において、DN1とDN2は、送信対象データNにおいて、DN1が先頭側であり、DN2が末尾側に位置するデータである。このときプロセスA(設定部12)は、DN1とDN2が含まれるディスクリプタの送信順を、送信対象データにおける位置の順(例えば各分割データの先頭のアドレス順)となるように制御する。プロセスX(抽出部16)は、受信完了通知の格納順に対応するように、各受信完了通知に含まれる分割データを結合する。この場合、DN1、DN2の順で受信完了通知がキューに登録されるため、プロセスX(抽出部16)はDN1を先等とし、DN2をDN1の末尾に結合する。このようにしてプロセスX(抽出部16)は、送信対象データNを正しく再構成することができる。
ダミー通信において、ダミー通信が格納されるバッファは、複数のプロセス間通信で共有して使用される固定長のバッファである。図18は、基本通信における第1の方法と、ダミー通信とのバッファの確保のされ方について比較する図である。図18(A)は、第1の方法においてバッファが確保される様子を示している。図18(B)は、ダミー通信においてバッファが確保される様子を示している。
図18(A)では、通信相手のプロセス(図18(A)のプロセスA〜N)毎に対応したバッファが確保される。すなわち、プロセス毎に確保されるバッファのサイズであるNバイト×プロセス数のバッファが確保される。一方、図18(B)では、通信相手のすべてのプロセスが共有するバッファが一つ確保される。すなわち、544バイトのバッファが確保される。
ダミー通信では、バッファに格納されるデータはダミーデータとなる。そのため複数のプロセスにより格納されたダミーデータは上書きされても通信に支障はない。従って、通信相手のプロセス数が増加しても、バッファ使用量を増加させることなく、通信が可能となる。実施形態では、送信対象データの上書きが発生しないので、送信対象データの上書きに関して発生する制御通信を抑制することができる。実施形態では、通信相手のプロセス数に関わらず、一つの固定長のバッファを共有して使用することができるので、第1の方法に比べてバッファの使用量を削減することができる。尚、図18(B)では、固定長のバッファのサイズを544バイトとしているがこれは一例であり、固定長のバッファのサイズは544バイトに限定されず、プロセス数に依存しない固定の値としてもよい。
次に、実施形態に係る送信ノードの処理のフローについて説明する。図19は、実施形態に係る送信ノードのダミー通信における処理の詳細を図解したフローチャートの一例である。
図19において先ず、送信ノードの送信制御部11は、通信プロトコルの選択を行う(S101)。すなわち送信制御部11は、送信対象データのサイズに応じて、通信プロトコルを選択する。通信プロトコルを選択すると送信制御部11は、選択したプロトコルについて受信ノードに通知を行ってもよい。
次に送信制御部11は、選択された通信プロトコルを確認する(S102)。選択された通信プロトコルがEagerプロトコルであると判定された場合(S102でEagerプロトコル)、処理は送信処理Aに遷移する(S103)。送信処理Aの詳細については、後ほど図20を参照して説明する。送信処理Aが完了すると、処理は終了する。
S102において、選択された通信プロトコルがRendezvous-RDMA writeプロトコルであると判定された場合(S102でRendezvous-RDMA writeプロトコル)、処理は送信処理Bに遷移する(S104)。送信処理Bの詳細については、後ほど図21を参照して説明する。送信処理Bが完了すると、処理は終了する。
S102において、選択された通信プロトコルがRendezvous-RDMA readプロトコルであると判定された場合(S102でRendezvous-RDMA readプロトコル)、処理は送信処理Aに遷移する(S105)。送信処理Aの詳細については、後ほど図20を参照して説明する。尚、S105で実行される送信処理Aの送信対象データは通信制御に関する情報となる。送信処理Aが完了すると、処理は終了する。
次に、S103、S105、及び後ほど説明するS301で実行される送信処理Aについて説明する。図20は、送信処理Aの処理の詳細を図解したフローチャートの一例である。
図20において先ず設定部12は、送信対象データのサイズに応じて、送信対象データを複数の分割データに分割する(S201)。尚、送信対象データのサイズが1つの埋め込み領域に収まるサイズである場合には、S201は省略できる。
次に送信制御部11は、通信データとしてのダミーデータと、その通信データに対応するディスクリプタを生成する(S202)。送信制御部11は、S202においては、生成したディスクリプタの各領域に、通信データを受信ノードに送信するときの設定値を設定しておく。
次に設定部12は、S202で生成したディスクリプタの埋め込み領域に分割データを埋め込む(S203)。また設定部12は、ディスクリプタが基本通信におけるものかダミー通信におけるものかを受信ノードにおいて判定することが可能なように、埋め込み領域に通信種別情報を格納してもよい。
そして送信部13は、ダミー通信を発行する(S204)。すなわち送信部13は、S202で生成した通信データ(ダミーデータ)と、S203で分割データ(送信対象データ)を埋め込んだディスクリプタとを、受信ノードに送信する。
次に送信制御部11は、送信対象データの転送が完了したか否かを判定する(S205)。すなわち送信制御部11は、S201で送信対象データを分割して生成した全ての分割データを、ディスクリプタに埋め込んで送信したか否かを判定する。送信対象データの転送が完了していないと判定すると(S205でNo)、送信制御部11は、処理をS202に遷移させ、新たにダミーデータと、ディスクリプタとを生成する。一方、送信対象データの転送が完了したと判定すると(S205でYes)、処理は終了する。
次に、S103で実行される送信処理Bについて説明する。図21は、送信処理Bの処理の詳細を図解したフローチャートの一例である。
図21において先ず設定部12は、送信処理Aを実行する(S301)。S301で実行される送信処理Aの通信データは通信制御に関する情報となる。
S301で通信制御に関する情報の転送が完了すると、送信制御部11は、受信ノードから、RDMA転送のための受信ノードの通信制御に関する情報を受信したか否かを判定する(S302)。受信ノードの通信制御に関する情報を受信していないと判定した場合(S302でNo)、送信制御部11は、S302の処理を繰り返す。
S302において受信ノードの通信制御に関する情報を受信したと判定すると(S302でYes)、送信制御部11は、RDMA-Writeにより送信対象データを転送する(S303)。すなわち送信制御部11は、S302で受信した、受信ノードの通信制御に関する情報に基づいて、送信対象データの格納先となる受信ノードのアプリケーション領域のアドレスを指定して、送信対象データを送信する。その結果、送信制御部11は指定したアプリケーション領域に送信対象データを書き込む。
そして送信制御部11は、RDMA-Writeの通信の完了通知を受信制御部14に対して送信する(S304)。そして処理は終了する。
次に、実施形態に係る受信ノードの処理のフローについて説明する。図22は、実施形態に係る受信ノードのダミー通信における処理の詳細を図解したフローチャートの一例である。
図22において先ず、受信ノードの受信制御部14は、通信プロトコルの選択を行う(S111)。すなわち受信制御部14は、送信対象データのサイズに応じて、通信プロトコルを選択する。通信プロトコルを選択すると受信制御部14は、選択したプロトコルについて送信ノードに通知を行ってもよい。
次に受信制御部14は、選択された通信プロトコルを確認する(S112)。選択された通信プロトコルがEagerプロトコルであると判定された場合(S112でEagerプロトコル)、処理は受信処理Aに遷移する(S113)。受信処理Aの詳細については、後ほど図23を参照して説明する。受信処理Aが完了すると、処理は終了する。
S112において、選択された通信プロトコルがRendezvous-RDMA writeプロトコルであると判定された場合(S112でRendezvous-RDMA writeプロトコル)、処理は受信処理Bに遷移する(S114)。受信処理Bの詳細については、後ほど図24を参照して説明する。受信処理Bが完了すると、処理は終了する。
S112において、選択された通信プロトコルがRendezvous-RDMA readプロトコルであると判定された場合(S112でRendezvous-RDMA readプロトコル)、処理は受信処理Cに遷移する(S115)。受信処理Cの詳細については、後ほど図25を参照して説明する。受信処理Cが完了すると、処理は終了する。
次に、S113で実行される受信処理Aについて説明する。図23は、受信処理Aの処理の詳細を図解したフローチャートの一例である。
図23において先ず、受信制御部14は、固定長のバッファをMPI領域に確保する(S401)。ここで確保する固定長のバッファは、すべてのダミー通信において共有して使用されるものである。
次に抽出部16は、キューに受信完了通知が格納されているか否かを判定する(S402)。キューに受信完了通知が格納されていないと判定した場合(S402でNo)、抽出部16は再度S402を実行する。
一方、キューに受信完了通知が格納されていると判定した場合(S402でYes)、抽出部16は、キューの先頭から受信完了通知を取り出し、受信完了通知がダミー通信において生成されたものであるか否かを判定する(S403)。具体的には抽出部16は、受信完了通知に通信種別情報が含まれているか否かを判定する。または抽出部16は、受信完了通知に含まれる情報であって、通信データが格納されるバッファの先頭アドレスを示す情報が、ダミー通信用の固定長のバッファを示しているか否かを判定する。
受信完了通知がダミー通信において生成されたものであると判定した場合(S403でYes)、抽出部16は、受信完了通知から分割データ(送信対象データ)を抽出する(S404)。
そして抽出部16は、S404で抽出した分割データを結合する(S405)。すなわち抽出部16は、S404で抽出した複数の送信対象データを予め定められた結合規則、及び受信完了通知の受信順に基づいて結合する。尚、抽出部16は、受信完了通知に含まれる通信相手に関する情報を参照して、受信完了通知に対応する送信元プロセスを識別し、通信元プロセス毎に、受信完了通知からデータを抽出して結合する。
次に受信制御部14は、通信データの転送が完了したか否かを判定する(S406)。すなわち受信制御部14は、S404で抽出した分割データに、送信対象データの末尾を示す情報が格納されているか否かを判定する。通信データの転送が完了していないと判定した場合(S406でNo)、受信制御部14は、処理をS401に遷移させる。通信データの転送が完了したと判定した場合(S406でYes)、受信制御部14は、処理をS408に遷移する。
S403において、受信完了通知がダミー通信において生成されたものでないと判定した場合(S403でNo)、受信制御部14は、受信完了通知から通信データが格納されたバッファの位置(アドレス)を特定し、特定した位置にアクセスする(S407)。そして処理は、S408に遷移する。
S408において、受信制御部14は、通信プロトコルに応じて、MPI領域、または、アプリケーション領域に、再構成した送信対象データをコピーする。そして処理は終了する。
次に、S114で実行される受信処理Bについて説明する。図24は、受信処理Bの処理の詳細を図解したフローチャートの一例である。
図24において先ず、受信処理Aが実行される(S501)。S501で実行される受信処理Aにおいては、S408で送信対象データはMPI領域にコピーされる。
次に、受信制御部14は、送信ノードに対して、受信ノードの通信制御に関する情報を送信する(S502)。この後、通信制御に関する情報に基づいて、送信ノードよりRDMA-Writeにより送信対象データが転送される。そして処理は終了する。
次に、S115で実行される受信処理Cについて説明する。図25は、受信処理Cの処理の詳細を図解したフローチャートの一例である。
図25において先ず、受信処理Aが実行される(S601)。S601で実行される受信処理Aにおいては、S408で送信対象データはMPI領域にコピーされる。
次に、受信制御部14は、S408でMPI領域にコピーされた、送信ノードの通信制御に関する情報に基づいて、RDMA-Readにより送信対象データを取得する(S602)。
そして受信制御部14は、RDMA-Readの通信の完了通知を送信制御部11に対して送信する(S603)。そして処理は終了する。
次に、実施形態に係る受信部15のデータの受信処理のフローを説明する。図26は、実施形態に係る受信部15のデータの受信処理の詳細を図解したフローチャートの一例である。
図26において先ず、受信部15は、送信ノードから通信データと、その通信データに対応するディスクリプタを受信する(S701)。次に受信部15は、ディスクリプタに基づいて、対応する通信データをバッファに格納する(S702)。そして受信部15は、ディスクリプタに基づいて受信完了通知を生成し、生成した受信完了通知をキューに格納する(S703)。そして処理は終了する。
次に、実施形態に係る情報処理システムの構成について説明する。図27は、実施形態に係る情報処理システムのハードウェア構成の一例を示す。
図27において、情報処理システム30は、1以上の情報処理装置20(20a、20b、20c)を含む。各情報処理装置20は、1以上とPE21(21a、21b、21c)と、各PE21に接続された通信モジュール22(22a、22b、22c)を含む。PE21は、CPU23(23a、23b、23c)とメモリ24(24a、24b、24c)を含む。CPU23、メモリ24、及び通信モジュール22はそれぞれバス等を介して接続される。各通信モジュール22は、インターコネクトを介して接続される。また通信モジュール22の各々は、情報を記憶するストレージ装置(図示せず)と、インターコネクトまたは通信ネットワーク等を介して接続されてもよい。情報処理システム30は、例えばLAN等のネットワークを介してユーザ端末25に接続される。情報処理システム30は、情報処理システム1の一例である。情報処理装置20は、通信ノード18の一例である。
CPU23は、メモリ24を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、送信制御部11、設定部12、送信部13、受信制御部14、抽出部16の機能の一部または全部を提供する。すなわち、CPU23は、メモリ24を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、送信側情報処理装置2においては、送信側演算処理装置4の機能の一部または全部を提供する。CPU23は、メモリ24を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、受信側情報処理装置3においては、受信側演算処理装置8の機能の一部または全部を提供する。
メモリ24は、例えば半導体メモリであり、Random Access Memory(RAM)領域およびRead Only Memory(ROM)領域を含んで構成される。メモリ24は記憶部10の機能の一部または全部を提供する。すなわち、メモリ24は、送信側情報処理装置2においては、送信側記憶装置5の機能の一部または全部を提供する。またメモリ24は、受信側情報処理装置3においては、受信側記憶装置9の機能の一部または全部を提供する。
通信モジュール22は、CPU23の指示に従って、ネットワークまたはインターコネクトを介して通信をおこなうモジュールである。通信モジュール22は、送信部13、受信部15の機能の一部または全部を提供する。すなわち、通信モジュール22は、送信側情報処理装置2においては、送信側通信装置6の機能の一部または全部を提供する。またメモリ24は、受信側情報処理装置3においては、受信側通信装置7の機能の一部または全部を提供する。
情報処理装置20は、読取装置を含んでもよい。読取装置は、CPU23の指示に従って着脱可能記憶媒体にアクセスする。着脱可能記憶媒体は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。
実施形態のプログラムは、例えば、下記の形態でCPU23に提供される。
(1)メモリ24に予めインストールされている。
(2)着脱可能記憶媒体(図示せず)により提供される。
(3)プログラムサーバ(図示せず)から通信モジュール22を介して提供される。
さらに、情報処理装置20の一部は、ハードウェアで実現してもよい。或いは、情報処理装置20は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
ユーザ端末25は、情報処理システム30に対してプログラムの実行指示を送信し、その応答としてプログラムの実行の結果を受信する。プログラムの実行指示は、情報処理システム30に含まれる1以上のPE21に対して送信される。1つのプログラムの実行においては、複数のプロセスが実行され、プロセス間でデータ通信が行われる。各プロセスは、1以上のPE21において実行される。プロセス間通信ではMPIが使用される。プロセス間通信を行う各プロセスは、例えば、通信データの転送量に応じて、プロセス間通信で使用するプロトコル(Eager、Rendezvous-RDMA)を切り替えてもよい。
尚、実施形態においては、受信完了通知が格納される領域をキューとしたが、受信ノードが通信データを受信した順に、通信データに対応する受信完了通知が順次格納され、受信順番が保証されるように制御される領域であれば、キューに限定されない。また、ダミー通信は、同じ通信ノード18で実行される2つのプロセス間で行われてもよい。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 情報処理システム
2 送信側情報処理装置
3 受信側情報処理装置
4 送信側演算処理装置
5 送信側記憶装置
6 送信側通信装置
7 受信側通信装置
8 受信側演算処理装置
9 受信側記憶装置
10 記憶部
11 送信制御部
12 設定部
13 送信部
14 受信制御部
15 受信部
16 抽出部
18 通信ノード
20 情報処理装置
21 PE
22 通信モジュール
23 CPU
24 メモリ
25 ユーザ端末
30 情報処理システム

Claims (8)

  1. 送信側情報処理装置と、前記送信側情報処理装置に通信経路を介して接続される受信側情報処理装置とを有する情報処理システムにおいて、
    前記送信側情報処理装置は、
    送信側プロセスを実行する送信側演算処理装置と、
    送信対象である対象データを保持する送信側記憶領域を有する送信側記憶装置と、
    前記送信側プロセスにより、前記対象データと前記対象データの宛先を示す宛先情報とを有する制御情報を含んで生成される送信データを、前記通信経路を介して送信する送信側通信装置を有し、
    前記受信側情報処理装置は、
    前記送信データを、前記通信経路を介して受信する受信側通信装置と、
    受信側プロセスを実行する受信側演算処理装置と、
    前記受信側プロセスにより、前記送信データから抽出される対象データを、記憶する受信側記憶領域を有する受信側記憶装置を有することを特徴とする情報処理システム。
  2. 前記送信データはさらに、
    前記制御情報の他に、ペイロード情報を有し、
    前記ペイロード情報は空データであることを特徴とする請求項1記載の情報処理システム。
  3. 前記送信データはさらに、
    前記制御情報の他に、ペイロード情報を有し、
    前記ペイロード情報は実データであることを特徴とする請求項1記載の情報処理システム。
  4. 前記制御情報はさらに、
    前記宛先情報の他に、前記送信側情報処理装置と前記受信側情報処理装置との間の通信方式を示す通信方式情報を有し、
    前記送信側通信装置と前記受信側通信装置は、前記通信方式情報に応じた通信方式により、通信を行うことを特徴とする請求項1〜3のいずれか一項に記載の情報処理システム。
  5. 前記送信側プロセスは、
    前記対象データを分割して前記制御情報に埋め込むことにより、前記送信データを生成することを特徴とする請求項1〜4のいずれか一項に記載の情報処理システム。
  6. 他の情報処理装置に通信経路を介して接続される情報処理装置において、
    前記情報処理装置は、
    プロセスを実行する演算処理装置と、
    送信対象である対象データを保持する記憶領域を有する記憶装置と、
    前記プロセスにより、前記対象データと前記対象データの宛先を示す宛先情報とを有する制御情報を含んで生成される送信データを、前記通信経路を介して送信する通信装置を有することを特徴とする情報処理装置。
  7. 送信側情報処理装置と、前記送信側情報処理装置に通信経路を介して接続される受信側情報処理装置とを有する情報処理システムの制御方法において、
    前記送信側情報処理装置が有する送信側演算処理装置が、送信側プロセスを実行し、
    前記送信側プロセスにより、前記送信側情報処理装置が有する送信側記憶装置の送信側記憶領域に保持された送信対象である対象データと、前記対象データの宛先を示す宛先情報とを含む制御情報を有する送信データを生成し、
    前記送信側情報処理装置が有する送信側通信装置が、前記送信データを、前記通信経路を介して送信し、
    前記受信側情報処理装置が有する受信側通信装置が、前記送信データを、前記通信経路を介して受信し、
    前記受信側情報処理装置が有する受信側演算処理装置が、受信側プロセスを実行し、
    前記受信側プロセスにより、前記送信データから抽出される対象データを、前記受信側情報処理装置が有する受信側記憶装置の受信側記憶領域に記憶することを特徴とする情報処理システムの制御方法。
  8. 他の情報処理装置に通信経路を介して接続される情報処理装置の制御プログラムにおいて、
    前記情報処理装置が有する演算処理装置に、プロセスを実行させ、
    前記プロセスに、前記情報処理装置が有する記憶装置の記憶領域に保持された送信対象である対象データと、前記対象データの宛先を示す宛先情報とを含む制御情報を有する送信データを生成させ、
    前記情報処理装置が有する通信装置に、前記送信データを、前記通信経路を介して送信させることを特徴とする情報処理装置の制御プログラム。
JP2014166741A 2014-08-19 2014-08-19 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム Pending JP2016045510A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014166741A JP2016045510A (ja) 2014-08-19 2014-08-19 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
US14/823,403 US20160057068A1 (en) 2014-08-19 2015-08-11 System and method for transmitting data embedded into control information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014166741A JP2016045510A (ja) 2014-08-19 2014-08-19 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム

Publications (1)

Publication Number Publication Date
JP2016045510A true JP2016045510A (ja) 2016-04-04

Family

ID=55349267

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014166741A Pending JP2016045510A (ja) 2014-08-19 2014-08-19 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム

Country Status (2)

Country Link
US (1) US20160057068A1 (ja)
JP (1) JP2016045510A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159858A (ja) * 2018-03-14 2019-09-19 富士通株式会社 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法
JP7350807B2 (ja) 2021-07-01 2023-09-26 イーソル株式会社 メッセージ送受信方法およびオペレーティングシステム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9954979B2 (en) * 2015-09-21 2018-04-24 International Business Machines Corporation Protocol selection for transmission control protocol/internet protocol (TCP/IP)
US11836549B2 (en) * 2020-10-15 2023-12-05 Advanced Micro Devices, Inc. Fast block-based parallel message passing interface transpose

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781992B1 (en) * 2000-11-30 2004-08-24 Netrake Corporation Queue engine for reassembling and reordering data packets in a network
US7403528B2 (en) * 2002-09-13 2008-07-22 Lucent Technologies Inc. Method of data communication using a control message
US7697529B2 (en) * 2006-02-28 2010-04-13 Cisco Technology, Inc. Fabric channel control apparatus and method
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159858A (ja) * 2018-03-14 2019-09-19 富士通株式会社 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法
JP7144671B2 (ja) 2018-03-14 2022-09-30 富士通株式会社 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法
JP7350807B2 (ja) 2021-07-01 2023-09-26 イーソル株式会社 メッセージ送受信方法およびオペレーティングシステム

Also Published As

Publication number Publication date
US20160057068A1 (en) 2016-02-25

Similar Documents

Publication Publication Date Title
JP6564960B2 (ja) ネットワーキング技術
CN109428831B (zh) 用于对带宽不平衡数据传输进行节流的方法及系统
US7908372B2 (en) Token based flow control for data communication
EP3873062A1 (en) Data transmission method, system, and proxy server
US11023411B2 (en) Programmed input/output mode
US8413153B2 (en) Methods and systems for sharing common job information
US20150288624A1 (en) Low-latency processing in a network node
US20070223483A1 (en) High performance memory based communications interface
EP2755363B1 (en) Data-fast-distribution method and device
WO2011128369A1 (en) Querying performance data on a parallel computer system having compute nodes
CN105247821A (zh) 用于利用自适应路由来控制资源利用的机制
WO2014082562A1 (en) Method, device, and system for information processing based on distributed buses
US10735294B2 (en) Integrating a communication bridge into a data processing system
US10609125B2 (en) Method and system for transmitting communication data
JP2016045510A (ja) 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
US10154079B2 (en) Pre-boot file transfer system
CN113422793A (zh) 数据传输方法、装置、电子设备及计算机存储介质
JP2009218743A (ja) Ipプロトコル処理装置及びその処理方法
JP2016515361A (ja) アプリケーションにより提供される送信メタデータに基づくネットワーク送信調整
JP2015156071A (ja) データ格納方法、ストレージシステム、プログラム及びストレージ装置
US9558149B2 (en) Dual system
JP5754504B2 (ja) 管理装置、情報処理装置、情報処理システム及びデータ転送方法
WO2022057131A1 (zh) 数据拥塞处理方法、装置、计算机设备和存储介质
US11210089B2 (en) Vector send operation for message-based communication
US7962656B1 (en) Command encoding of data to enable high-level functions in computer networks