(57)【特許請求の範囲】
【請求項１】
第１情報処理装置、第２情報処理装置及び第３情報処理装置を有する並列処理装置であって、
前記第１情報処理装置は、
所定データのＲＤＭＡ通信を開始させ、前記ＲＤＭＡ通信の応答を受信するデータ転送制御部と、
前記データ転送制御部による前記所定データの前記ＲＤＭＡ通信の開始を受けて、前記ＲＤＭＡ通信による前記所定データの送信を指示するＲＤＭＡ通信要求を送信する転送指示部とを備え、
前記第２情報処理装置は、
前記所定データが格納された第１メモリと、
前記データ転送制御部から送信された前記ＲＤＭＡ通信要求を受信し、前記第１メモリに格納された前記所定データを前記ＲＤＭＡ通信で前記第３情報処理装置へ送信し、前記応答を前記第３情報処理装置から受信して前記第１情報処理装置へ送信するデータ送信部とを備え、
前記第３情報処理装置は、
第２メモリと、
前記データ送信部により前記ＲＤＭＡ通信で送信された前記所定データを受信し前記第２メモリに格納し、前記ＲＤＭＡ通信の前記応答を作成し送信する受信処理部とを備え、
前記データ送信部は、前記受信処理部から送信された前記応答を取得し、前記転送指示部へ転送し、
前記転送指示部は、前記データ送信部により転送された前記応答を受信し、前記データ転送制御部へ送信し、
前記データ転送制御部は、前記転送指示部から送信された前記応答を受信する
ことを特徴とする並列処理装置。
【請求項２】
前記データ送信部は、前記受信処理部から送信された前記応答を取得し、前記転送指示部へ転送し、
前記転送指示部は、前記データ送信部により転送された前記応答を受信し、前記データ転送制御部へ送信し、
前記データ転送制御部は、前記転送指示部から送信された前記応答を受信する
ことを特徴とする請求項１に記載の並列処理装置。 
【請求項３】
第１情報処理装置、第２情報処理装置及び第３情報処理装置を用いた通信制御方法であって、
前記第１情報処理装置に、所定データのＲＤＭＡ通信を開始させ、前記ＲＤＭＡ通信による前記所定データの送信を指示するＲＤＭＡ通信要求を送信させ、
前記第２情報処理装置に、前記第１情報処理装置から送信された前記ＲＤＭＡ通信要求を受信させ、自装置が有する第１メモリに格納された前記所定データを前記ＲＤＭＡ通信で前記第３情報処理装置へ送信させ、
前記第３情報処理装置に、前記第２情報処理装置から前記ＲＤＭＡ通信で送信された前記所定データを受信させ、受信した前記所定データを自装置が有する第２メモリに格納させ、前記所定データの受信の応答を送信させ、
前記第２情報処理装置に、前記第３情報処理装置から送信された前記応答を受信回路で受信させて転送回路へ転送させ、転送させた前記応答を前記転送回路で前記第１情報処理装置へ送信させ、
前記第１情報処理装置に、前記第２情報処理装置から送信された前記応答を受信させる
ことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置及び通信制御方法に関する。
【背景技術】
【０００２】
近年、科学技術分野では、それぞれがプロセッサとメモリを備え、独立してＯＳ（Operating  System）を実行するノードを、インターコネクトによって多数接続した構成を有する分散メモリ型並列計算機が主流となっている。分散メモリ型並列計算機などを用いた高性能計算を行う技術は、ＨＰＣ（High  Performance  Computing）と呼ばれる。このような分散メモリ型並列計算機では、各ノードでプロセスが起動され、起動されたプロセスは相互に通信してデータを交換しながら並列計算を行う。インターコネクトは、ノード間を接続するネットワークと、ノードがネットワークに接続するためのデバイスを有する。
【０００３】
２つのノード間でデータを確実に転送するには、ノード間を接続するネットワーク及びノードがネットワークに接続するためのデバイスの特性に合わせた手順で通信が制御される。ノード間を接続するネットワーク及びノードがネットワークに接続するためのデバイスの特性に合わせた手順は、プロトコルとも呼ばれる。
【０００４】
インターネットで使用されるＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）プロトコルのプロトコル処理は、一般的にＯＳのプロトコルスタックが行う。各プロセスは、Ｂｅｒｋｅｌｅｙ  Ｓｏｃｋｅｔなどのソフトウェア・インタフェースによって、プロトコルスタックに対するデータ入出力を行う。プロトコルスタックによるプロトコル処理は、ＯＳのシステムプロセスで実行される。すなわち、プロトコル処理を行う場合、割り込みなどでプロセッサが実行する処理がＯＳカーネルに移り、その間プロセッサは、他の計算を行うことが困難である。
【０００５】
プロセッサの演算効率を上げる、すなわち実行性能を理論性能に近づけるには、プロセッサは、プロトコル処理を行わない方がよい。そこで、ＨＰＣ分野では、一般的にＲＤＭＡ（Remote  Direct  Memory  Access）と呼ばれる方式でデータを転送する。ＲＤＭＡは、送信元プロセスが管理するメモリをインターコネクトのデバイスが直接読み出し、ノード間を接続するネットワークでデータを転送し、宛先プロセスが管理するメモリに直接書き込む技術である。
【０００６】
ＲＤＭＡのプロトコルには事実上の標準となった規格はないが、どのＲＤＭＡのプロトコルも一般的にＰｕｔ及びＧｅｔと呼ばれる機能を備える。Ｐｕｔは、送信元プロセスが開始するプロトコルであり、他のノードへの書き込みに相当する。Ｇｅｔは、宛先プロセスが開始するプロトコルであり、他ノードからの読み出しに相当する。
【０００７】
ＲＤＭＡのプロトコル処理を行う場合、インターコネクトにおいても、プロトコルの開始の指示は、Ｐｕｔでは送信元ノードのプロセッサが行い、Ｇｅｔでは宛先ノードのプロセッサが行う。このため、従来のＲＤＭＡのプロトコルを用いた通信は、片側のプロセッサだけが通信制御を行うという位置づけで、片側通信とも呼ばれる。
【０００８】
Ｐｕｔは、プロトコルの開始元プロセスが送信元であるので一見宛先にデータを送るだけでよく、プロトコルの開始元プロセスとは異なる送信元プロセスからデータを送るために往復の通信が行われるＧｅｔよりも単純であるように見える。しかし、実際にはＰｕｔであっても、確実にデータが転送されたことを確認するために、宛先から送信元にデータ到達の通知を送るので、往復の通信となる。プロトコルとしては、ＰｕｔとＧｅｔとは、いずれも送信元プロセスから宛先プロセスへの往復の手続きであり、転送データを伴うのが往路か復路かの点が異なる。
【０００９】
ＲＤＭＡのプロトコルは、インターコネクトのデバイスで処理するため、ハードウェア化し易いシンプルな設計となっていることが好ましい。Ｐｕｔ及びＧｅｔは、送信元プロセスと宛先プロセスとを１往復するシンプルな構成でありこの条件を満たす。
【００１０】
また、ハードウェア化において複雑性が問題になる場合は他にもある。例えば、プロセスが使用するメモリは、ＯＳの仮想化によって断片化されており、実用的にはアドレス変換機構が用いられる。他にも、プロトコルでデータの喪失及び毀損を検出して、データの送達を保証する仕組みがあることが好ましい。そこで、設計ミスなどの障害、経路上のノード故障などによるネットワーク上でのデータ喪失、又は偶発的なデータ化が起こる場合があり、計算の中断やデータの再送信などの対処を行うことになるため、複雑なプロトコルとなる。ＨＰＣ向けインターコネクトでは、この複雑性を回避すべく、ノード間を接続するネットワークやノードがネットワークに接続するためのデバイスの方式レベルで送達保障に役立つ機能を作り込むことが一般的である。この点では、途中経路の品質を前提にすることが困難であり、インターコネクトで使用されるプロトコルは、送達保障だけでなく輻輳制御までプロトコルとして作り込むＴＣＰ／ＩＰとは一線を画すといえる。
【００１１】
ただし、ＲＤＭＡにおけるＰｕｔ及びＧｅｔの通信は、依存関係のある一連の通信においては待ち時間が発生し、プロセッサの演算効率を下げる原因となる。Ｐｕｔ及びＧｅｔの通信によるプロセッサの演算効率の低下は、集団通信と呼ばれる頻出する通信パターンにおいて、効率のよい通信アルゴリズムを採用する際に顕著に表れる。集団通信とは、複数のプロセス間で一斉に同じ目的の通信が行われる通信方法である。集団通信は、並列処理装置においては、例えば、並列計算を行う際に各ノードに初期データを配布する場合や、結果を各ノードに配布する場合に用いられる。
【００１２】
例えば、集団通信として、複数ノードに同じデータを転送する場合、送信元ノードが全てのノードにＰｕｔでデータを送る通信が考えられる。この場合、通信制御に係わるのは送信元プロセスである。しかし、この方法では時間がかかりすぎる。そこで、１回目は送信元ノードが１つのノードにデータを転送し、２回目はデータを有する２つのノードがそれぞれ他の１つのノードにデータを転送し、３回目はデータを有する４つのノードがそれぞれ他の１つのノードにデータを転送する集団通信が考えられる。このように、データの送信元プロセスを倍々に増やすアルゴリズムでデータを転送すれば、データの転送処理における転送回数はプロセス数の２進対数で済む。
【００１３】
また、特定の通信パターンを実行する集団通信においては、通信制御でプロセッサの実行時間を消費しないように、集団通信機能を有するインターコネクトが提案されている。例えば、ノード間を接続するネットワークに集団通信機能を持たせるものや、ノードがネットワークに接続するためのデバイスに集団通信プロトコルを実行するためのコントローラを搭載するものなど、様々な方式が提案されている。ただし、インターコネクトが集団通信機能をもつ場合、機能が固定化されてしまうことや通信バッファの容量が制約されてしまうことが問題となる。
【００１４】
この点、ノードがネットワークに接続するためのデバイスにコントローラを搭載させた場合、機能や通信バッファの容量にある程度の柔軟性を持たせることができる。しかし、コントローラを高機能化して、主記憶装置上に通信バッファを確保し、再利用や共有化などの高度な処理を加えていくと、ＯＳなどの高度な資源管理ソフトウェアを用いることとなる。この場合、コントローラがプロセッサ並みの性能を持つことになる。また、この場合、従来のＲＤＭＡ通信であれば実行時に使用できる主記憶装置に制限は無いにも関わらず、通信バッファの容量の制約は残る。そのため、コントローラにプロセッサの実行環境を用意するのではなく、プロセッサやコア数を増やしてプロセッサで処理することが好ましい。
【００１５】
なお、サーバ間で仮想計算機を移動する場合に、ＲＤＭＡを用いる従来技術がある。また、ノード間でのデータ転送をＲＤＭＡで行う場合に、レコードに識別子をもうけてすれ違いを検出し、プログラムの待ち合わせのオーバヘッドを減らす従来技術がある。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００８−９７２７３号公報
【特許文献２】特開２００２−６３０６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、プロセッサを用いて効率的に集団通信を行うとしても、次のような問題がある。例えば、データの送信元プロセスを倍々に増やすアルゴリズムを用いたデータ転送を行った場合、最終的には、半数のノードがデータ待ち状態となってしまう。このような通信アルゴリズムでは、データ転送処理の効率は向上するが、多数のノードによる複雑な通信制御が行われるため、そのデータ待ちの間に計算を行うプログラミングは実現困難である。そのため、データの待ち時間は利用されず、プロセッサの演算効率が下がってしまう。
【００１８】
このように、集団通信では、通信処理を行う場合に各通信の同期化が要求される場合がある。そして、同期化が期待される集団通信では、待機時間が長くなり、通信効率が低下するおそれがある。
【００１９】
また、仮想計算機の移動にＲＤＭＡを用いる従来技術や、レコードに識別子を設けて擦れ違いを検出する従来技術を用いても、このようなデータの待ち時間を削減することは困難である。
【００２０】
開示の技術は、上記に鑑みてなされたものであって、処理能力を向上させた並列処理装置及び通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本願の開示する並列処理装置及び通信制御方法は、一つの態様において、第１情報処理装置、第２情報処理装置及び第３情報処理装置を有する。前記第１情報処理装置は、所定データのＲＤＭＡ通信を開始させ、前記ＲＤＭＡ通信の応答を受信するデータ転送制御部と、前記データ転送制御部による前記所定データの前記ＲＤＭＡ通信の開始を受けて、前記ＲＤＭＡ通信による前記所定データの送信を指示するＲＤＭＡ通信要求を送信する転送指示部とを備える。前記第２情報処理装置は、前記所定データが格納された第１メモリと、前記データ転送制御部から送信された前記ＲＤＭＡ通信要求を受信し、前記第１メモリに格納された前記所定データを前記ＲＤＭＡ通信で前記第３情報処理装置へ送信し、前記応答を前記第３情報処理装置から受信して前記第１情報処理装置へ送信するデータ送信部とを備える。前記第３情報処理装置は、第２メモリと、前記データ送信部により前記ＲＤＭＡ通信で送信された前記所定データを受信し前記第２メモリに格納し、前記ＲＤＭＡ通信の前記応答を作成し送信する受信処理部とを備える。さらに、前記データ送信部は、前記受信処理部から送信された前記応答を取得し、前記転送指示部へ転送する。前記転送指示部は、前記データ送信部により転送された前記応答を受信し、前記データ転送制御部へ送信する。前記データ転送制御部は、前記転送指示部から送信された前記応答を受信する。
【発明の効果】
【００２２】
本願の開示する並列処理装置及び通信制御方法の一つの態様によれば、処理能力を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】図１は、並列処理装置の構成図である。
【図２】図２は、ＲＤＭＡ通信要求の送信を表す図である。
【図３】図３は、転送データの送信を表す図である。
【図４】図４は、転送データの宛先から転送データの送信元へのＲＤＭＡの受信応答の送信を表す図である。
【図５】図５は、転送データの送信元から制御元へのＲＤＭＡの受信応答の送信を表す図である。
【図６】図６は、制御元のノードのプロセッサによる通信インタフェースに対する通信指示の処理のフローチャートである。
【図７】図７は、制御元のノードの通信インタフェースによるＲＤＭＡ通信要求の送信処理のフローチャートである。
【図８】図８は、転送データの送信元となる通信インタフェースによる転送データの送信処理のフローチャートである。
【図９】図９は、転送データの宛先となる通信インタフェースによるＲＤＭＡの受信応答の送信処理のフローチャートである。
【図１０】図１０は、転送データの送信元となる通信インタフェースによるＲＤＭＡの受信応答の転送処理のフローチャートである。
【図１１】図１１は、実施例１に係る集団通信を用いた転送データの配布の全体的な動作を説明するための図である。
【図１２】図１２は、１プロセスが集団通信のデータ転送全てを実行する場合の手順を表すフローチャートである。
【図１３】図１３は、実施例２に係る並列処理装置によるＲＤＭＡ通信要求、転送データ及びＲＤＭＡの受信応答の送信を表す図である。
【発明を実施するための形態】
【００２４】
以下に、本願の開示する並列処理装置及び通信制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する並列処理装置及び通信制御方法が限定されるものではない。
【実施例１】
【００２５】
図１は、並列処理装置の構成図である。図１に示すように、本実施例に係る並列処理装置１は、ノード１１〜１３を含む複数のノードを有する。ノード１１〜１３を含む各ノードを区別しない場合、「ノード１０」という。ノード１０は、情報処理装置である。また、並列処理装置１は、管理装置２０及びネットワーク３０を有する。
【００２６】
ネットワーク３０は、インターコネクトを形成するネットワークであり、ノード１０間を接続する。
【００２７】
管理装置２０は、各ノード１０に接続される。管理装置２０は、各ノード１０へのプロセスの割り当てや各ノード１０の異常の検出などを行う。
【００２８】
ノード１１は、プロセッサ１１１、メモリ１１２及び通信インタフェース１１３を有する。ノード１２は、プロセッサ１２１、メモリ１２２及び通信インタフェース１２３を有する。ノード１３は、プロセッサ１３１、メモリ１３２及び通信インタフェース１３３を有する。
【００２９】
プロセッサ１１１，１２１及び１３１は、演算処理装置である。プロセッサ１１１，１２１及び１３１は、ＯＳを動作させる。さらに、プロセッサ１１１，１２１及び１３１は、プロセスを実行し、メモリ１１２，１２２及び１３２を用いて演算処理を行う。また、プロセッサ１１１，１２１及び１３１は、それぞれ通信インタフェース１１３，１２３及び１３３を用いて各ノード１０間で通信を行う。また、プロセッサ１１１，１２１及び１３１は、それぞれ通信インタフェース１１３，１２３及び１３３に対してＲＤＭＡによる通信を指示することで、通信インタフェース１１３，１２３及び１３３にＲＤＭＡによる通信を実行させる。
【００３０】
メモリ１１２，１２２及び１３２は、主記憶装置である。メモリ１１２，１２２及び１３２は、例えば、ＲＡＭ（Random  Access  Memory）などである。
【００３１】
通信インタフェース１１３，１２３及び１３３は、インターコネクトにおけるノード１０がネットワーク３０に接続するためのデバイスである。通信インタフェース１１３，１２３及び１３３は、ＲＤＭＡによりデータ送信を行うことができる。通信インタフェース１１３，１２３及び１３３は、プロセッサ１１１，１２１及び１３１から独立して動作する専用回路などで構成される演算処理装置を有する。通信インタフェース１１３，１２３及び１３３によるデータ送信及び受信応答などの制御は、この演算処理装置により実現される。
【００３２】
ここで、本実施例に係る並列処理装置１において、ノード１１のメモリ１１２に格納されたデータを他の全てのノード１０へＲＤＭＡを用いて送信する集団通信の処理について説明する。本実施例に係る並列処理装置１は、非同期集団通信を行う。以下では、全てのノード１０へ配布するメモリ１１２に格納されたデータを「転送データ」という。
【００３３】
ノード１１は、自装置から他のノード１０へＲＤＭＡで転送データを送るとともに、他のノード１０間でのＲＤＭＡでの転送データの送信も制御する。すなわち、ノード１１のプロセッサ１１１は、転送データの全てのノード１０へＲＤＭＡによる配布を管理する。言い換えれば、プロセッサ１１２及び１１３を含む他のノード１０のプロセッサは転送データの送信制御に係わらない。このノード１１が、「第１情報処理装置」の一例にあたる。ノード１１の具体的な動作を以下に説明する。
【００３４】
ノード１１のメモリ１１２は、転送データを保持する。
【００３５】
ノード１１のプロセッサ１１１は、転送データをノード１１から他のノード１０へ送信する場合、以下の処理を行う。ここでは、転送データの送信先がノード１２である場合を例に説明する。プロセッサ１１１は、通信指示用メモリ領域をメモリ１１２の中に確保する。次に、通信指示用メモリ領域に、パケット送信元であるノード１１のアドレス、読み出しメモリアドレス、パケット宛先であるノード１２のアドレス、書き込みメモリアドレス及び転送データサイズを書き込む。そして、プロセッサ１１１は、転送データのＲＤＭＡ通信要求のメモリアドレスを通信インタフェース１１３に通知する。ここで、ＲＤＭＡ通信要求とは、ＲＤＭＡによりノード１３へ転送データを送信することをノード１２へ指示するための信号である。
【００３６】
その後、プロセッサ１１１は、ＲＤＭＡの受信応答を通信インタフェース１１３から受信し、データ送信の完了を確認する。
【００３７】
一方、転送データを他のノード１０間で送受信させる場合、ノード１１のプロセッサ１１１は、以下の処理を行う。他のノード１０間での通信はどのノード１０間でも同様に処理が行われるので、以下では、ノード１２のメモリ１２２に既に転送データが格納されており、ノード１２からノード１３へ転送データがＲＤＭＡで送付される場合を例に説明する。
【００３８】
プロセッサ１１１は、ＲＤＭＡ通信要求をノード１２に送信させる通信指示のための通信指示用メモリ領域をメモリ１１２の中に確保する。そして、通信指示用メモリ領域に、転送データの送信元ノードアドレス、読み出しメモリアドレス、制御元ノードアドレス、転送データの宛先ノードアドレス、書き込みメモリアドレス及び転送データサイズを書き込む。
【００３９】
この場合、ノード１１は、ノード１２に向けて、ノード１２のメモリ１２２に格納された転送データをノード１３へＲＤＭＡで送信するＲＤＭＡ通信要求のパケットを送る。そこで、送信元ノードアドレスは、ノード１１から送信されるパケットの宛先にあたる。この場合、プロセッサ１１１は、送信元ノードアドレスとしてノード１２のアドレスを書き込む。また、制御元ノードアドレスは、パケットの送信元にあたる。この場合、プロセッサ１１１は、制御元ノードアドレスとしてノード１１のアドレスを書き込む。さらに、プロセッサ１１１は、宛先ノードアドレスとしてノード１３のアドレスを書き込む。
【００４０】
そして、プロセッサ１１１は、ＲＤＭＡ通信要求のパケット送信のメモリアドレスを通信インタフェース１１３に通知する。その後、プロセッサ１１１は、ＲＤＭＡの受信応答を通信インタフェース１１３から受信し、データ送信の完了を確認する。このプロセッサ１１１が、「データ転送制御部」の一例にあたる。
【００４１】
ノード１１の通信インタフェース１１３は、転送データをノード１１からノード１２へ送信する場合、転送データのＲＤＭＡ通信要求のメモリアドレスの通知をプロセッサ１１１から受ける。そして、通信インタフェース１１３は、指定されたメモリアドレスから、パケット送信元であるノード１１のアドレス、読み出しメモリアドレス、パケット宛先であるノード１２のアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース１１３は、読み出しメモリアドレス及び転送データサイズを用いて、メモリ１１２から転送データを取得する。次に、通信インタフェース１１３は、パケットのヘッダに、パケット宛先であるノード１２のアドレス、パケット送信元であるノード１１のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース１１３は、パケットのデータ部に転送データを格納してパケットを生成する。そして、通信インタフェース１１３は、生成した転送データを格納したパケットをノード１２の通信インタフェース１２３へ送信する。
【００４２】
その後、通信インタフェース１１３は、ＲＤＭＡの受信応答のパケットをノード１２の通信インタフェース１２３から受信する。そして、通信インタフェース１１３は、ＲＤＭＡの受信応答をプロセッサ１１１へ送信する。
【００４３】
一方、転送データをノード１２からノード１３へ送信させる場合、ノード１１の通信インタフェース１１３は、ＲＤＭＡ通信要求のパケット送信のメモリアドレスの通知をプロセッサ１１１から受ける。そして、通信インタフェース１１３は、指定されたメモリアドレスから、送信元のノード１２のアドレス、読み出しメモリアドレス、制御元であるノード１１のアドレス、宛先のノード１３のアドレス、書き込みメモリアドレス及び転送データサイズを取得する。次に、通信インタフェース１１３は、パケットのヘッダに、パケット宛先であり転送データの送信元となるノード１２のアドレス、パケット送信元であり制御元のノード１１のアドレス、転送データの宛先となるノード１３のアドレスを格納する。さらに、通信インタフェース１１３は、パケットのヘッダに、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納してパケットを生成する。そして、通信インタフェース１１３は、生成したパケットをノード１２の通信インタフェース１２３へ送信する。
【００４４】
その後、通信インタフェース１１３は、ＲＤＭＡの受信応答のパケットをノード１２の通信インタフェース１２３から受信する。そして、通信インタフェース１１３は、ＲＤＭＡの受信応答をプロセッサ１１１へ送信する。この通信インタフェース１１３が、「転送指示部」の一例にあたる。
【００４５】
次にノード１２について説明する。このノード１２が、「第２情報処理装置」の一例にあたる。ノード１１が転送データをノード１２へ送信する場合、ノード１２のメモリ１２２には、転送データは未だ格納されていない。一方、ノード１１によりノード１２からノード１３への転送データの転送が指示される場合、ノード１２のメモリ１２２は、転送データを既に保持する。このメモリ１２２が、「第１メモリ」の一例にあたる。
【００４６】
ノード１２の通信インタフェース１２３は、ノード１１から転送データを受信する場合、ネットワーク３０を介してノード１１の通信インタフェース１１３から転送データを格納したパケットを受信する。次に、通信インタフェース１２３は、受信したパケットのデータ部から転送データを取り出す。さらに、通信インタフェース１２３は、パケットのヘッダから書き込みメールアドレスを取得する。そして、通信インタフェース１２３は、書き込みメールアドレスで指定されたメモリ１２２のアドレスに、転送データを書き込む。
【００４７】
その後、通信インタフェース１２３は、ＲＤＭＡによる転送データの受信完了を通知するためのＲＤＭＡの受信応答のパケットを生成する。そして、通信インタフェース１２３は、生成したＲＤＭＡの受信応答のパケットをネットワーク３０を介してノード１１の通信インタフェース１１３へ送信する。
【００４８】
一方、ノード１１によりノード１２からノード１３への転送データの送信が制御される場合、ノード１２の通信インタフェース１２３は、ネットワーク３０を介してノード１１の通信インタフェース１１３からＲＤＭＡ通信要求のパケットを受信する。次に、通信インタフェース１２３は、パケットのヘッダから、パケットの宛先であるノード１２のアドレスを転送データの送信元のアドレスとして取得する。また、通信インタフェース１２３は、パケットのヘッダから、転送データの宛先であるノード１３のアドレスを取得する。さらに、通信インタフェース１２３は、パケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。
【００４９】
そして、通信インタフェース１２３は、読み出しメモリアドレス及び転送データサイズを用いて、メモリ１２２から転送データを取得する。次に、通信インタフェース１２３は、転送データを転送するためのパケットの生成を行う。具体的には、通信インタフェース１２３は、パケットのヘッダに、転送データの宛先であり且つパケットの宛先でもあるノード１３のアドレス、転送データの送信元であり、パケットの送信元でもあるノード１２のアドレスを格納する。また、通信インタフェース１２３は、パケットのヘッダに、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース１２３は、パケットのデータ部に転送データを格納する。そして、通信インタフェース１２３は、生成した転送データを格納したパケットをノード１３の通信インタフェース１３３へＲＤＭＡによりネットワーク３０を介して送信する。
【００５０】
その後、通信インタフェース１２３は、ＲＤＭＡの受信応答のパケットをノード１３の通信インタフェース１３３から受信する。次に、通信インタフェース１２３は、ＲＤＭＡの受信応答のパケットを生成する。具体的には、通信インタフェース１２３は、受信したパケットのヘッダから、転送データの送信元であり且つ受信応答のパケットの宛先であるノード１２のアドレスを取得する。また、通信インタフェース１２３は、受信したパケットのヘッダから、転送データの宛先であり受信応答のパケットの送信元であるノード１３のアドレスを取得する。また、通信インタフェース１２３は、受信したパケットのヘッダから、制御元のノード１１のアドレス、読み出しメモリアドレス、書き込みメモリアドレス、転送データサイズ及び受信結果を表すエラーコードを取得する。そして、通信インタフェース１２３は、送信するパケットのヘッダに、制御元であり且つ受信応答のパケットの宛先となるノード１１のアドレスを格納する。また、通信インタフェース１２３は、送信するパケットのヘッダに、転送データの送信元であり且つ受信応答のパケットの送信元となるノード１２のアドレスを格納する。また、通信インタフェース１２３は、送信するパケットのヘッダに、転送データの宛先であるノード１３のアドレス、読み出しメモリアドレス、書き込みメモリアドレス、転送データサイズ及び受信結果を表すエラーコードを格納する。そして、通信インタフェース１２３は、生成したＲＤＭＡの受信応答のパケットをネットワーク３０を介してノード１１の通信インタフェース１１３へ送信する。この通信インタフェース１２３が、「データ送信部」の一例にあたる。
【００５１】
次にノード１３について説明する。このノード１３が、「第３情報処理装置」の一例にあたる。ノード１１によりノード１２からノード１３への転送データの転送が指示される場合、ノード１３のメモリ１３２は、転送データが未だ格納されていない。このメモリ１３２が、「第２メモリ」の一例にあたる。
【００５２】
ノード１３の通信インタフェース１３３は、ノード１１によりノード１２からノード１３への転送データの送信が制御される場合、ネットワーク３０を介してノード１２の通信インタフェース１２３から転送データを格納したパケットを受信する。次に、通信インタフェース１３３は、受信したパケットのデータ部から転送データを取り出す。さらに、通信インタフェース１３３は、パケットのヘッダから書き込みメールアドレスを取得する。そして、通信インタフェース１３３は、書き込みメールアドレスで指定されたメモリ１３２のアドレスに、転送データを書き込む。
【００５３】
その後、通信インタフェース１３３は、ＲＤＭＡによる転送データの受信完了を通知するためのＲＤＭＡの受信応答のパケットを生成する。具体的には、通信インタフェース１３３は、受信したパケットのヘッダから、転送データの送信元のノード１２のアドレス、転送データの宛先のノード１３のアドレス及び制御元のノード１１のアドレスを取得する。さらに、通信インタフェース１３３は、受信したパケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース１３３は、送信するパケットのヘッダに、転送データの送信元であり且つ受信応答のパケットの宛先であるノード１２のアドレスを格納する。また、通信インタフェース１３３は、送信するパケットのヘッダに、転送データの宛先であり受信応答のパケットの送信元であるノード１３のアドレスを格納する。また、通信インタフェース１３３は、送信するパケットのヘッダに、制御元のノード１１のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース１３３は、受信結果を表すエラーコードを送信するパケットのヘッダに格納する。そして、通信インタフェース１３３は、生成したＲＤＭＡの受信応答のパケットをネットワーク３０を介してノード１２の通信インタフェース１２３へ送信する。この通信インタフェース１３３が、「受信処理部」の一例にあたる。
【００５４】
ここで、図２〜５を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の、ＲＤＭＡの通信要求、転送データ及びＲＤＭＡの受信応答の送信についてまとめて説明する。図２は、ＲＤＭＡ通信要求の送信を表す図である。図３は、転送データの送信を表す図である。図４は、転送データの宛先から転送データの送信元へのＲＤＭＡの受信応答の送信を表す図である。図５は、転送データの送信元から制御元へのＲＤＭＡの受信応答の送信を表す図である。
【００５５】
ノード１１の通信インタフェース１１３は、プロセッサ１１１からの通信指示を受けて、ノード１２の通信インタフェース１２３に対するＲＤＭＡ通信要求のパケットを生成する。そして、図２の処理Ｐ１で示すように、ノード１１の通信インタフェース１１３は、ＲＤＭＡ通信要求のパケットをノード１２の通信インタフェース１２３へ送信する。
【００５６】
ノード１２の通信インタフェース１２３は、ノード１１の通信インタフェース１１３から送信されたＲＤＭＡ通信要求のパケットを受信する。次に、ノード１２の通信インタフェース１２３は、ＲＤＭＡ通信要求のパケットから、送信する転送データの情報及び宛先の情報などを取得する。次に、ノード１２の通信インタフェース１２３は、メモリ１２２から転送データを取得する。次に、ノード１２の通信インタフェース１２３は、転送データを送信するためのパケットを生成する。そして、ノード１２の通信インタフェース１２３は、図３の処理Ｐ２で示すように、生成したパケットを送信することで、転送データをノード１３の通信インタフェース１３３へ送信する。
【００５７】
ノード１３の通信インタフェース１３３は、ノード１２の通信インタフェース１２３から送信された転送データを送信するためのパケットを受信する。次に、ノード１３の通信インタフェース１３３は、受信したパケットから転送データを取得し、メモリ１３２に格納する。次に、ノード１３の通信インタフェース１３３は、受信したパケットから、パケットの宛先となる送信元のノード１２のアドレスなどを取得する。次に、ノード１３の通信インタフェース１３３は、ＲＤＭＡの受信応答のパケットを生成する。そして、ノード１３の通信インタフェース１３３は、図４の処理Ｐ３で示すように、ＲＤＭＡの受信応答のパケットをノード１２の通信インタフェース１２３へ送信する。
【００５８】
ノード１２の通信インタフェース１２３は、ノード１３の通信インタフェース１３３から送信されたＲＤＭＡの受信応答のパケットを受信する。次に、ノード１２の通信インタフェース１２３は、受信したパケットから、パケットの宛先となる制御元のノード１１のアドレスなどを取得する。次に、ノード１２の通信インタフェース１２３は、ＲＤＭＡの受信応答のパケットを生成する。そして、ノード１２の通信インタフェース１２３は、図５の処理Ｐ４で示すように、ＲＤＭＡの受信応答のパケットをノード１１の通信インタフェース１１３へ送信する。ノード１１の通信インタフェース１１３は、ノード１２の通信インタフェース１２３からＲＤＭＡの受信応答のパケットを受信する。そして、ノード１１の通信インタフェース１１３は、ノード１１のプロセッサ１１１にＲＤＭＡの受信応答を送信する。ノード１１のプロセッサ１１１は、ＲＤＭＡの受信応答を受信し、ＲＤＭＡによる転送データの送信処理の完了を確認する。
【００５９】
このように、並列処理装置１は、ノード１２のプロセッサ１２１及びノード１３のプロセッサ１３１を使用せずに、ノード１１のプロセッサ１１１の制御により、ノード１２からノード１３へ転送データを送信させることができる。
【００６０】
次に、図６を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の制御元のノード１１のプロセッサ１１１による通信インタフェース１１３に対する通信指示の処理の流れについて説明する。図６は、制御元のノードのプロセッサによる通信インタフェースに対する通信指示の処理のフローチャートである。
【００６１】
プロセッサ１１１は、ＲＤＭＡ通信要求をノード１２に送信させるための通信指示用メモリ領域をメモリ１１２上に確保する（ステップＳ１）。
【００６２】
次に、プロセッサ１１１は、転送データのＲＤＭＡによる送信の制御元でありパケットの送信元であるノード１１のアドレスを通信指示用メモリ領域に書き込む（ステップＳ２）。
【００６３】
次に、プロセッサ１１１は、転送データの送信元でありパケットの宛先であるノード１２のアドレスを通信指示用メモリ領域に書き込む（ステップＳ３）。
【００６４】
次に、プロセッサ１１１は、ノード１２のメモリ１２２上の転送データの読み出しメモリアドレスを通信指示用メモリ領域に書き込む（ステップＳ４）。
【００６５】
次に、プロセッサ１１１は、転送データの宛先であるノード１３のアドレスを通信指示用メモリ領域に書き込む（ステップＳ５）。
【００６６】
次に、プロセッサ１１１は、ノード１３のメモリ１３２上の転送データの書き込みメモリアドレスを通信指示用メモリ領域に書き込む（ステップＳ６）。
【００６７】
次に、プロセッサ１１１は、転送データのデータサイズを通信指示用メモリ領域に書き込む（ステップＳ７）。
【００６８】
その後、プロセッサ１１１は、通信指示のメモリアドレスを通信インタフェース１２３に通知する（ステップＳ８）。
【００６９】
次に、図７を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の通信インタフェース１１３のＲＤＭＡ通信要求の送信処理の流れについて説明する。図７は、制御元のノードの通信インタフェースによるＲＤＭＡ通信要求の送信処理のフローチャートである。
【００７０】
通信インタフェース１１３は、プロセッサ１１１から送信された通信指示を読み出す（ステップＳ１１）。
【００７１】
次に、通信インタフェース１１３は、通信指示で指定された通信指示用メモリ領域に書き込まれた情報を用いて、ＲＤＭＡ通信要求のパケットを生成する（ステップＳ１２）。
【００７２】
次に、通信インタフェース１１３は、ＲＤＭＡ通信要求のパケットをノード１２の通信インタフェース１２３へ送信する（ステップＳ１３）。
【００７３】
次に、図８を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の転送データの送信元となる通信インタフェース１２３による転送データの送信処理の流れについて説明する。図８は、転送データの送信元となる通信インタフェースによる転送データの送信処理のフローチャートである。
【００７４】
通信インタフェース１２３は、通信インタフェース１１３から送信されたＲＤＭＡ通信要求を受信する（ステップＳ２１）。
【００７５】
次に、通信インタフェース１２３は、ＲＤＭＡ通信要求で指定された転送データをメモリ１２２から取得する（ステップＳ２２）。
【００７６】
次に、通信インタフェース１２３は、ＲＤＭＡ通信要求で指定された転送データの送信元をパケットの送信元とし、転送データの宛先をパケットの宛先として転送データ送信用のパケットを生成する（ステップＳ２３）。
【００７７】
次に、通信インタフェース１２３は、転送データ送信用のパケットをＲＤＭＡによりノード１３の通信インタフェース１３３へ送信する（ステップＳ２４）。
【００７８】
次に、図９を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の転送データの宛先となる通信インタフェース１３３によるＲＤＭＡの受信応答の送信処理の流れについて説明する。図９は、転送データの宛先となる通信インタフェースによるＲＤＭＡの受信応答の送信処理のフローチャートである。
【００７９】
通信インタフェース１３３は、ＲＤＭＡにより通信インタフェース１２３から送信された転送データ送信用のパケットを受信する（ステップＳ３１）。
【００８０】
次に、通信インタフェース１３３は、パケットに格納された転送データをメモリ１３２上の指定された場所に格納する（ステップＳ３２）。
【００８１】
次に、通信インタフェース１３３は、転送データ送信用のパケットで指定された転送データの送信元をパケットの宛先とし、転送データの宛先をパケットの送信元としてＲＤＭＡの受信応答のパケットを生成する（ステップＳ３３）。
【００８２】
次に、通信インタフェース１３３は、ＲＤＭＡの受信応答のパケットをノード１２の通信インタフェース１２３へ送信する（ステップＳ３４）。
【００８３】
次に、図１０を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の転送データの送信元となる通信インタフェース１２３によるＲＤＭＡの受信応答の転送処理の流れについて説明する。図１０は、転送データの送信元となる通信インタフェースによるＲＤＭＡの受信応答の転送処理のフローチャートである。
【００８４】
通信インタフェース１２３は、通信インタフェース１３３から送信されたＲＤＭＡの受信応答のパケットを受信する（ステップＳ４１）。
【００８５】
次に、通信インタフェース１２３は、受信したパケットで指定された制御元をパケットの宛先とし、転送データの送信元をパケットの送信元としてＲＤＭＡの受信応答のパケットを生成する（ステップＳ４２）。
【００８６】
次に、通信インタフェース１２３は、ＲＤＭＡの受信応答のパケットをノード１１の通信インタフェース１１３へ送信する（ステップＳ４３）。
【００８７】
次に、本実施例に係る集団通信を用いた転送データの配布の並列処理装置１に格納されたノード１０の全体的な動作について説明する。図１１は、実施例１に係る集団通信を用いた転送データの配布の全体的な動作を説明するための図である。図１１では、ノード１１〜１８までのノードを記載した。そして、この場合もノード１１が制御元の場合で説明する。また、図１１では、実線で転送データの送信を表し、破線で制御信号の送信を表す。
【００８８】
ノード１１は、最初にノード１２に転送データを送信する（ステップＳ１０１）。これにより、ノード１２は、転送データを保持するようになり、転送データの転送元になれる。
【００８９】
そこで、ノード１１は、ＲＤＭＡ通信要求をノード１２へ送信する（ステップＳ１０２）。ノード１２は、ＲＤＭＡ通信要求を受けて、ノード１４へ転送データを送信する（ステップＳ１０３）。これにより、ノード１４は、転送データを保持するようになり、転送データの転送元になれる。また、ノード１１は、ノード１３へ転送データを送信する（ステップＳ１０４）。これにより、ノード１３は、転送データを保持するようになり、転送データの転送元になれる。
【００９０】
ノード１１は、ノード１２のデータ転送が完了していれば、ＲＤＭＡ通信要求をノード１２へ再度送信する（ステップＳ１０５）。ノード１２は、ＲＤＭＡ通信要求を受けて、ノード１７へ転送データを送信する（ステップＳ１０６）。これにより、ノード１７は、転送データを保持するようになり、転送データの転送元になれる。また、ノード１１は、ＲＤＭＡ通信要求をノード１３へ送信する（ステップＳ１０７）。ノード１３は、ＲＤＭＡ通信要求を受けて、ノード１５へ転送データを送信する（ステップＳ１０８）。これにより、ノード１５は、転送データを保持するようになり、転送データの転送元になれる。また、ノード１１は、ＲＤＭＡ通信要求をノード１４へ送信する（ステップＳ１０９）。ノード１４は、ＲＤＭＡ通信要求を受けて、ノード１８へ転送データを送信する（ステップＳ１１０）。これにより、ノード１８は、転送データを保持するようになり、転送データの転送元になれる。また、ノード１１は、ノード１６へ転送データを送信する（ステップＳ１１１）。これにより、ノード１６は、転送データを保持するようになり、転送データの転送元になれる。
【００９１】
このようにノード１１は、転送データを有するノード１０に対して、そのノード１０が転送処理を行っていなければＲＤＭＡ通信要求を送信し、ＲＤＭＡによる転送データの送信を行わせる。そのため、本実施例に係る並列処理装置１では、他のノード１０による転送データの送信の完了を待たずに、即時処理可能なノード１０に転送データの送信を行わせることができる。
【００９２】
これに対して、転送データの送信元プロセスを倍々に増やすアルゴリズムを用いた場合以下のような処理となる。すなわち、ノード１１は、まず、ノード１２に転送データを送信する。次に、ノード１１は、ノード１３に転送データを送信する。また、ノード１２は、ノード１４に転送データを送信する。次に、ノード１１は、ノード１６に転送データを送信する。ノード１２は、ノード１７に転送データを送信する。ノード１３は、ノード１５に転送データを送信する。ノード１４は、ノード１８に転送データを送信する。
【００９３】
この場合、各ノード１０において、転送データを送信する際に、転送元のプロセッサが送信処理の制御を行うため、データ転送の間、他の処理を行えなくなり、待ち状態になってしまう。これに対して、本実施例に係る集団通信の方法であれば、各ノード１０のプロセッサは、データ転送に関わらないため、データ転送の状況に関わらず他の処理を実行することができる。
【００９４】
さらに、ノード１１が全てのノード１０に対して転送データを送信する方法を用いた場合は図１２に示す処理となる。図１２は、１プロセスが集団通信のデータ転送全てを実行する場合の手順を表すフローチャートである。ここでは、プロセッサによって実行される転送データの送信を行うプロセスを、「データ転送プロセス」と呼ぶ。
【００９５】
次に、データ転送プロセスは、ステップを１に初期化する。すなわち、＃Ｓ回目のステップをステップ＃Ｓと表した場合、データ転送プロセスは、＃Ｓ＝１とする(ステップＳ２０１)。
【００９６】
次に、データ転送プロセスは、ステップ＃Ｓにおける全ての転送データの送信を通信インタフェース１１３に指示する  (ステップＳ２０２)。ここで、全ての転送データの送信とは、各ステップにおいて予め決められた数の宛先のノード１０に対して転送データを送信することである。
【００９７】
そして、データ転送プロセスは、転送データの送信が全て完了したか否かを判定する（ステップＳ２０３）。転送データの送信が残っている場合（ステップＳ２０３：否定）、データ転送プロセスは、転送データの送信が全て完了するまで待機する。
【００９８】
これに対して、転送データの送信が全て完了した場合（ステップＳ２０３：肯定）、データ転送プロセスは、ステップを１つインクリメントする（ステップＳ２０４）。すなわち、データ転送プロセスは、＃Ｓ＝＃Ｓ＋１とする。
【００９９】
次に、データ転送プロセスは、全てのステップが完了したか否かを判定する（ステップＳ２０５）。完了していないステップが残っている場合(ステップＳ２０５：否定)、データ転送プロセスは、ステップＳ２０２へ戻る。
【０１００】
これに対して、全てのステップが完了した場合（ステップＳ２０５：肯定）、データ転送プロセスは、集団通信による転送データの送信処理を終了する。
【０１０１】
このように、１つのプロセスが全ての転送データの送信を行う場合、各ステップで転送データの送信が完了するまで、そのプロセスは待機することとなる。これに対して、本実施例に係る並列処理装置１では、集団通信全体を制御するプロセスは、他のノード１０間での転送データの送信の完了を待たずに、転送データの送信が完了したノード１０へ転送データの送信を指示することができる。したがって、１つのプロセスが全ての転送データの送信を行う場合に比べて、本実施例に係る並列処理装置１は、待機時間を短縮することができる。
【０１０２】
さらに、本実施例に係る各ノード１０におけるハードウェア構成について具体的に説明する。本実施例に係るインターコネクトのネットワーク３０は、４つの仮想チャネルを備える。また、本実施例に係るインターコネクトでは、ＲＤＭＡのＰｕｔ及びＧｅｔプロトコルに加え、ＲＤＭＡのＣｏｐｙプロトコルが実装される。Ｃｏｐｙプロトコルとは、制御元からの指示をうけて他のノード１０に転送データの送信を行うためのプロトコルである。
【０１０３】
Ｃｏｐｙ開始指示であるＲＤＭＡ通信要求は、第１の仮想チャネルで転送される。また、転送データを伴うＣｏｐｙ要求は、第２の仮想チャネルで転送される。また、結果を通知するＣｏｐｙ応答であるＲＤＭＡの受信応答は、第３の仮想チャネルで転送される。また、結果を転送するＣｏｐｙ完了通知は、第４の仮想チャネルで転送される。これに対して、本実施例に係る並列処理装置１においてＲＤＭＡのＧｅｔプロトコルを用いる場合、Ｇｅｔ要求は第１の仮想チャネルで転送される。転送データを伴うＧｅｔ応答は第２の仮想チャネルで転送される。さらに、結果を通知するＲＤＭＡの受信応答は第３の仮想チャネルで転送される。また、Ｐｕｔプロトコルを用いる場合、データを伴うＰｕｔ要求は第２の仮想チャネルで転送される。また、Ｐｕｔ応答は第３の仮想チャネルで転送される。
【０１０４】
また、高いスループットで送達保障制御を行う場合、仮想チャネルが大容量の通信バッファを持つことが好ましい。この点、本実施例に係る並列処理装置１では、データを伴う第２の仮想チャネルに大容量のバッファを配置することで送達保障制御を実現することができる。さらに、ネットワーク上の物理的な経路としては、第１の仮想チャネルと第４の仮想チャネル、第２の仮想チャネルと第３の仮想チャネルのように、転送元と転送先とが逆転する場合にはパケットは同じ経路を逆に転送されるように制御される。これにより、Ｃｏｐｙの４回の転送について、故障ノードを回避する通信経路の探索回数を２回に削減することができる。
【０１０５】
以上に説明したように、本実施例に係る並列処理装置は、データの送信元のノードを増やしつつＲＤＭＡのデータ転送の制御は１つのノードが実行する。そのため、並列処理装置に含まれる各ノードにおける通信制御の待ち時間が削減され、各ノードで計算を実行する時間が増加する。したがって、並列処理装置の処理能力を向上させることができる。
【０１０６】
また、本実施例に係る並列処理装置では、集団通信を行う際のデータを伴うパケットは、転送データの送信元から転送データの宛先に向けた場合のパケットであり、仮想チャネルに搭載させる通信バッファの容量を少なくすることができる。
【０１０７】
また、通信バッファの使用状態によりデッドロックが発生することが考えられる。このデッドロックを回避する手段としては、詰まったパケットを破棄して再送信する方法がある。しかし、この方法はプロトコルが複雑になる上に、スケーラビリティの阻害要因になるため、実現が困難である。また、プロトコルのステップ毎に仮想チャネルを分ける方法、例えば、ＰｕｔとＧｅｔとで往路と復路の仮想チャネルを分ける方法も考えられる。しかし、プロトコルが複雑になると用いる仮想チャネルの数が多くなってしまい、実現が困難である。これに対して、本実施例に係る並列処理装置では、例えば、４つの仮想チャネルを用いる場合、１つの仮想チャネルに大容量の通信バッファを配置すればよく、容易にデッドロックを回避することができる。
【０１０８】
さらに、ＲＤＭＡにおける送達保障としては、リンクレベルで再送信を行うロスレスのネットワークにおいて、ノード故障のない経路を事前に発見して使用する方式が適している。しかし、プロトコルが使用する経路が増加するほど、事前に発見すべき経路が増えるため、処理負荷が大きくなってしまう。この点、本実施例に係る並列処理装置における集団通信では、制御元からの制御により他のノードがそれ以外のノードへパケットを送信する場合に、パケットの送信で用いられる経路は２本である。そのため、故障ノードを回避するための経路の探索を２回で済ますことができ、ネットワークの経路制御を簡略化することができる。
【実施例２】
【０１０９】
次に、実施例２について説明する。本実施例に係る並列処理装置は、ＲＤＭＡの受信応答を転送データの送信元のノードを中継させずに、転送データの宛先のノードが、制御元のノードへ直接送信することが実施例１と異なる。本実施例に係る並列処理装置も図１のブロック図で表される。以下の説明では、実施例１と同様の各部の機能については説明を省略する。
【０１１０】
ノード１１の通信インタフェース１１３は、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合、実施例１と同様にＲＤＭＡ通信要求をノード１２の通信インタフェース１２３へ送信する。
【０１１１】
その後、通信インタフェース１１３は、ＲＤＭＡの受信応答のパケットをネットワーク３０を介してノード１３の通信インタフェース１３３から受信する。そして、通信インタフェース１１３は、ＲＤＭＡの受信応答をプロセッサ１１１へ送信する。
【０１１２】
ノード１２の通信インタフェース１２３は、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合、実施例１と同様にＲＤＭＡにより転送データをノード１３の通信インタフェース１３３へ送信する。この場合、ノード１２は、ＲＤＭＡの受信応答のパケットの転送は行わない。
【０１１３】
ノード１３の通信インタフェース１３３は、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合、実施例１と同様にＲＤＭＡにより転送データをネットワーク３０を介してノード１２の通信インタフェース１２３から受信する。
【０１１４】
次に、通信インタフェース１３３は、ＲＤＭＡの受信応答のパケットを生成する。具体的には、通信インタフェース１３３は、受信したパケットのヘッダから、転送データの送信元のノード１２のアドレス、転送データの宛先のノード１３のアドレス及び制御元のノード１１のアドレスを取得する。さらに、通信インタフェース１３３は、受信したパケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース１３３は、送信するパケットのヘッダに、制御元であり且つ受信応答のパケットの宛先であるノード１１のアドレスを格納する。また、通信インタフェース１３３は、送信するパケットのヘッダに、転送データの宛先であり受信応答のパケットの送信元であるノード１３のアドレスを格納する。また、通信インタフェース１３３は、送信するパケットのヘッダに、転送データの送信元のノード１２のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース１３３は、受信結果を表すエラーコードを送信するパケットのヘッダに格納する。そして、通信インタフェース１３３は、生成したＲＤＭＡの受信応答のパケットをネットワーク３０を介してノード１１の通信インタフェース１１３へ送信する。
【０１１５】
次に、図１３を参照して、ノード１１によりノード１２からノード１３へのＲＤＭＡによる転送データの送信が制御される場合の、本実施例に係るＲＤＭＡの通信要求、転送データ及びＲＤＭＡの受信応答の送信についてまとめて説明する。図１３は、実施例２に係る並列処理装置によるＲＤＭＡ通信要求、転送データ及びＲＤＭＡの受信応答の送信を表す図である。
【０１１６】
ノード１１の通信インタフェース１１３は、図２の処理Ｐ１で示した処理と同様に、処理Ｑ１で示すように、ＲＤＭＡ通信要求のパケットをノード１２の通信インタフェース１２３へ送信する。
【０１１７】
ノード１２の通信インタフェース１２３は、図３の処理Ｐ２で示した処理と同様に、処理Ｑ２で示すように、生成したパケットを送信することで、転送データをノード１３の通信インタフェース１３３へ送信する。
【０１１８】
ノード１３の通信インタフェース１３３は、ノード１２の通信インタフェース１２３から送信された転送データを送信するためのパケットを受信する。次に、ノード１３の通信インタフェース１３３は、受信したパケットから転送データを取得し、メモリ１３２に格納する。次に、ノード１３の通信インタフェース１３３は、受信したパケットから、パケットの宛先となる制御元のノード１１のアドレスなどを取得する。次に、ノード１３の通信インタフェース１３３は、ＲＤＭＡの受信応答のパケットを生成する。そして、ノード１３の通信インタフェース１３３は、処理Ｑ３で示すように、ノード１２を中継させずに、ネットワーク３０を介して直接ノード１１の通信インタフェース１１３へ、ＲＤＭＡの受信応答を送信する。
【０１１９】
ノード１１の通信インタフェース１１３は、ネットワーク３０を介してノード１３の通信インタフェース１３３からノード１２を中継させずに直接ＲＤＭＡの受信応答のパケットを受信する。そして、ノード１１の通信インタフェース１１３は、ノード１１のプロセッサ１１１にＲＤＭＡの受信応答を送信する。ノード１１のプロセッサ１１１は、ＲＤＭＡの受信応答を受信し、ＲＤＭＡによる転送データの送信処理の完了を確認する。
【０１２０】
このように、本実施例に係るノード１３の通信インタフェース１３３は、ノード１２を中継させずに直接ノード１１の通信インタフェース１１３へＲＤＭＡの受信応答を送信することができる。
【０１２１】
以上に説明したように、本実施例に係る並列処理装置は、転送データの宛先のノードから他のノードを介さずに、直接制御元のノードへＲＤＭＡの受信応答が送られる。すなわち、ＲＤＭＡ通信要求及び転送データの送信に用いられた経路を用いずに、他の経路を用いてＲＤＭＡの受信応答を送信することができる。このように、本実施例に係る並列処理装置は、各パケットの通信経路として他の経路を用いることができ、経路選択の自由度を高めることができる。
【符号の説明】
【０１２２】
１  並列処理装置
１１〜１８  ノード
２０  管理装置
３０  ネットワーク
１１１，１２１，１３１  プロセッサ
１１２，１２２，１３２  メモリ
１１３，１２３，１３３  通信インタフェース
【図１】
0006740683.tif 000002
【図２】
0006740683.tif 000003
【図３】
0006740683.tif 000004
【図４】
0006740683.tif 000005
【図５】
0006740683.tif 000006
【図６】
0006740683.tif 000007
【図７】
0006740683.tif 000008
【図８】
0006740683.tif 000009
【図９】
0006740683.tif 000010
【図１０】
0006740683.tif 000011
【図１１】
0006740683.tif 000012
【図１２】
0006740683.tif 000013
【図１３】
0006740683.tif 000014