(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムであって、
前記プロセッサは、
該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対して降順又は昇順でフェーズ番号を夫々付与し、
前記部分通信フェーズに対応したフェーズ番号を持つパケットのみを一斉に送信開始させ、
前記ネットワークスイッチ装置は、
前記パケットの送信が早期に終了した前記プロセッサがあるときでも、前記降順の場合は大きいフェーズ番号のパケットを、前記昇順の場合は小さいフェーズ番号のパケットを、次の部分通信フェーズまで待機させる制御を行う、ことを特徴とする並列計算システム。
【請求項２】
請求項１記載の並列計算システムであって、
前記プロセッサは、前記各プロセッサ通信に対して前記フェーズ番号を昇順で夫々付与し、
前記ネットワークスイッチ装置は、前記フェーズ番号が小さいプロセッサ通信を優先的に処理するように制御を行う、ことを特徴とする並列計算システム。
【請求項３】
複数のプロセッサを相互に接続するネットワークの通信経路を制御するためのネットワークスイッチ装置であって、
前記プロセッサは、該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対して降順又は昇順でフェーズ番号を夫々付与し、前記部分通信フェーズに対応したフェーズ番号を持つパケットのみを一斉に送信開始させており、
前記パケットの送信が早期に終了した前記プロセッサがあるときでも、前記降順の場合は大きいフェーズ番号のパケットを、前記昇順の場合は小さいフェーズ番号のパケットを、次の部分通信フェーズまで待機させる制御を行う、ことを特徴とするネットワークスイッチ装置。
【請求項４】
請求項３記載の並列計算システムであって、
前記プロセッサは、前記プロセッサ通信に対して前記フェーズ番号を昇順で付与しており、
前記フェーズ番号が小さいプロセッサ通信を優先的に処理するように制御を行う、ことを特徴とするネットワークスイッチ装置。
【請求項５】
複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムの通信方法であって、
前記プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対して降順又は昇順でフェーズ番号を夫々付与し、前記部分通信フェーズに対応したフェーズ番号を持つパケットのみを一斉に送信開始させ、
前記パケットの送信が早期に終了した前記プロセッサがあるときでも、前記降順の場合は大きいフェーズ番号のパケットを、前記昇順の場合は小さいフェーズ番号のパケットを、次の部分通信フェーズまで待機させる制御を行う、ことを特徴とする並列計算システムの通信方法。
【請求項６】
複数のプロセッサを相互に接続するネットワークの通信経路を制御するためのネットワークスイッチ装置のプログラムであって、
前記プロセッサ間におけるプロセッサ通信は複数の部分通信フェーズに分割されており、該分割された部分通信フェーズに対応する各プロセッサ通信に対して降順又は昇順でフェーズ番号を夫々付与され、前記部分通信フェーズに対応したフェーズ番号を持つパケットのみを一斉に送信開始させており、
前記パケットの送信が早期に終了した前記プロセッサがあるときでも、前記降順の場合は大きいフェーズ番号のパケットを、前記昇順の場合は小さいフェーズ番号のパケットを、次の部分通信フェーズまで待たせる制御を行う、処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサと他の複数のプロセッサとがネットワークを介して同時に通信処理を夫々実行する並列計算システム、プロセッサ、ネットワークスイッチ装置、及び通信方法に関し、通信処理の時間を低減できる並列計算システム、プロセッサ、ネットワークスイッチ装置、及び通信方法に関するものである。
【背景技術】
【０００２】
複数のプロセッサがネットワーク介して相互に接続された並列コンピュータにおいて、並列処理が実行された場合、各プロセッサは計算結果を相互に送受信する必要が生じる。この送受信において、各プロセッサが他の各プロセッサに対してデータ転送処理を同時に実行する全対全通信などの集団通信処理が頻繁に実行されており、各プロセッサは他の各プロセッサに対して通信処理を順次実行する。すなわち、各プロセッサは、特定の宛先に対して通信を行うフェーズ（部分通信フェーズと称す）を複数回、処理することになる。
【０００３】
例えば、全プロセッサがその他の全プロセッサに対して通信処理を夫々行う、いわゆる全対全通信を、複数の部分通信フェーズに分割して行う並列計算システムが知られている（特許文献１参照）。なお、当該並列計算システムにおいて、ｎ次元トーラスを対象としている。また、予めトーラスネットワーク構造とプロセッサ台数とに応じて適切な通信フェーズと転送パターンとが決定され、各プロセッサがフェーズ管理手段の指示に従って１対１転送を順次実行する。そして、各部分通信フェーズにおいて、フェーズ間の競合を極力回避できるように通信の宛先を決定して、最適な全対全通信が実現できるように構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２６０１５９１号
【特許文献２】特開２００１−３２５２３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のように各部分通信フェーズにおいて、競合や衝突が回避されるように通信の宛先を決定したとしても、各プロセッサが夫々独自のタイミングで部分通信フェーズの通信処理を実行した場合、同一時刻に異なる部分通信フェーズの通信処理が実行されてしまうため、部分通信フェーズ間の競合や衝突が生じてしまう可能性がある。
【０００６】
例えば、各プロセッサ間において物理的な接続距離の差がある場合、各プロセッサの部分通信フェーズにおける通信処理の時間にも差が生じる。この場合、早く処理が終わったプロセッサは、次の部分通信フェーズにより早く移行することとなる。したがって、同時刻に、各プロセッサは異なる部分通信フェーズの通信処理を実行することになり、フェーズ間の競合や衝突が生じる可能性がある。
【０００７】
一方、通信処理の遅れたプロセッサは、他のプロセッサとの通信処理の競合や衝突を繰り返して、さらに通信処理の遅れを増加させることになる。この通信処理の遅れは次第に拡大し、結果として全体の通信フェーズの実行時間（全プロセッサが全通信処理を完了するまでの時間）を増大させてしまう。
【０００８】
図７は、従来の並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。なお、図７において、説明の簡略化のために一部のスイッチのみについて、各プロセッサ通信がそのスイッチ内で処理される時間をバーの長さで表現している。
【０００９】
部分通信フェーズ１において、プロセッサ１が入力ポートを介してプロセッサ通信８０１を入力し、プロセッサ２が入力ポートを介してプロセッサ通信８０３を入力している。また、部分通信フェーズ２において、プロセッサ１が入力ポートを介してプロセッサ通信８０２を、プロセッサ２が入力ポートを介してプロセッサ通信８０４を入力している。
【００１０】
ここで、同一の部分通信フェーズにおけるプロセッサ通信同士、すなわち、プロセッサ通信８０１と８０３及びプロセッサ通信８０２と８０４には、フェーズ間の競合及び衝突が生じていない。しかしながら、各転送データサイズや各プロセッサ間の物理的距離に差がある場合には、プロセッサ通信８０１〜８０４の処理に要する時間が夫々異なるため、フェーズ間の競合や衝突が発生する可能性がある。
【００１１】
例えば、図８に示す如く、プロセッサ通信９０１の処理時間が、プロセッサ通信９０３の処理時間よりも長い場合を想定する。この場合、プロセッサ２は、プロセッサ１のプロセッサ通信９０１よりも先に、プロセッサ通信９０３を終了させる。その後、プロセッサ２は、部分通信フェーズ２の処理に移行し、プロセッサ通信９０４の処理を開始するため、フェーズ間の競合が発生する可能性がある。このフェーズ間の競合によって、例えば、時刻ｔ１から時刻ｔ２までの間において、プロセッサ１によるプロセッサ通信９０１と、プロセッサ２によるプロセッサ通信９０４との双方に遅延が生じる可能性がある。
【００１２】
例えば、プロセッサ通信９０１は、上記フェーズ間の競合がない場合、時刻ｔ１で処理が終了している筈であるが、フェーズ間の競合によって処理の終了時刻がｔ２まで遅延している。ここで、一方のプロセッサ通信９０１又は９０３が終了すると、フェーズ間の競合は解消される。この場合、プロセッサ通信９０１の処理が終了した時刻ｔ２で、フェーズ間の競合状態が解消されている。上述のように、フェーズ間の競合によって全体の処理時間が増大してしまう問題が生じている。
【００１３】
一方、上記特許文献１に示す並列計算システムは、上述したようなフェーズ間の競合を回避するために、各部分通信フェーズ毎に全プロセッサによる同期処理を行い、全プロセッサの部分通信フェーズを同期させている。しかしながら、このような同期処理は一般に全プロセッサ間の通信を伴うために、コスト増加に繋がる虞がある。
【００１４】
ここで、図９に示す如く、部分通信フェーズ１の終了後、プロセッサ１とプロセッサ２とのバリア同期処理を行うことが想定される。バリア同期処理が完了するまで部分通信フェーズ２の通信処理は実行できないが、フェーズ間の競合による遅延が生じないため、全体の通信時間は短くすることができる。
【００１５】
例えば、図９に示す如く、各部分通信フェーズ間にバリア同期処理を挿入すると、Ｎ回の部分通信フェーズで処理される集団通信処理であれば、通信処理中に（Ｎ−１）回のバリア同期処理が行われることとなる。さらに、プロセッサ数が増加するに従って、バリア同期処理にかかる時間も増加し、これが通信フェーズ全体の処理時間を増大させることになる。なお、バリア同期処理の時間を含めても全体の通信処理時間を低減できる可能性はあるが、その効果はあまり期待できず、従って、本来不要なバリア同期処理の時間は極力削除されることが望ましい。
【００１６】
また、各部分通信フェーズ間にバリア同期処理を挿入する代わりに、通信時間を夫々計算してその時間だけウェイト（Wait）する方法も考えられるが、この場合も本来不要な待ち時間が生じる点では上記同様なことが言える。
【００１７】
本発明は、このような問題点を解決するためになされたものであり、通信処理の時間を低減できる並列計算システム、プロセッサ、ネットワークスイッチ装置、及び通信方法を提供することを主たる目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するための本発明の一態様は、複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムであって、前記プロセッサは、該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与し、前記ネットワークスイッチ装置は、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とする並列計算システムである。
【００１９】
また、上記目的を達成するための本発明の一態様は、他のプロセッサとネットワークを介して接続され、相互に通信処理を行うプロセッサであって、前記プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対して通信処理の順序を決めるためのフェーズ番号を夫々付与する、ことを特徴とするプロセッサであってもよい。
【００２０】
さらに、上記目的を達成するための本発明の一態様は、複数のプロセッサを相互に接続するネットワークの通信経路を制御するためのネットワークスイッチ装置であって、前記プロセッサは、該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与しており、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とするネットワークスイッチ装置であってもよい。
【００２１】
なお、上記目的を達成するための本発明の一態様は、複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムの通信方法であって、前記プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与し、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とする並列計算システムの通信方法であってもよい。
【発明の効果】
【００２２】
本発明によれば、通信処理の時間を低減できる並列計算システム、プロセッサ、ネットワークスイッチ装置、及び通信方法を提供できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施の形態に係る並列計算システムの概略的なシステム構成を示すブロック図である。
【図２】本発明の一実施の形態に係る並列計算システムにおける各プロセッサの概略的なシステム構成を示すブロック図である。
【図３】本発明の一実施の形態に係るプロセッサ間ネットワークのネットワークスイッチ装置の概略的なシステム構成例を示すブロック図である。
【図４】本発明の一実施の形態に係る並列計算システムの通信処理フローの一例を示すフローチャートである。
【図５】通信プロセッサにより生成されるデータパケットの構成例を示す図である。
【図６】本発明の一実施の形態に係る並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。
【図７】従来の並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。
【図８】従来の並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。
【図９】従来の並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明の実施の形態について説明する。図１は、本発明の一実施の形態に係る並列計算システムの概略的なシステム構成を示すブロック図である。本実施の形態に係る並列計算システム１は、複数のプロセッサ１０と、各プロセッサ１０を相互に接続するプロセッサ間ネットワーク２０と、ネットワーク内の通信経路を制御するためのネットワークスイッチ装置２１と、を備えている。複数のプロセッサ１０は、プロセッサ間ネットワーク２０を介して、他の複数のプロセッサ１０に対して同時にデータ通信処理を夫々実行する、全対全通信などの集団通信処理を実行している。
【００２５】
図２は、本実施の形態に係る並列計算システムにおける各プロセッサの概略的なシステム構成を示すブロック図である。各プロセッサ１０は、処理装置１１と、主記憶装置１２と、通信プロセッサ１３と、送信ポート１４と、受信ポート１５と、を有している。
【００２６】
処理装置１１は、主記憶装置１２及び通信プロセッサ１３に夫々接続されており、主記憶装置１２に記憶されたデータあるいは通信プロセッサ１３からのデータに対する演算処理や制御処理などの各種の処理を実行する、例えば、ＣＰＵ（Central Processing Unit）などにより構成されている。
【００２７】
主記憶装置１２は、処理装置１１や通信プロセッサ１３からのデータなどを記憶できる、例えば、ＲＯＭ（Read Only Memory）やＲＡＭ(Random Access Memory)などにより構成されている。
【００２８】
通信プロセッサ１３は、プロセッサ１０の通信制御を行っており、送信ポート１４を介して他のプロセッサ１０に対してデータを送信し、受信ポート１５を介して他のプロセッサ１０からデータを受信する。一方、通信プロセッサ１３は、受信ポート１５を介して受信したデータを、処理装置１１あるいは主記憶装置１２に対して出力する。
【００２９】
また、通信プロセッサ１３は、処理装置１１あるいは主記憶装置１２からのデータを、送信ポート１４を介して他のプロセッサ１０に対して送信する。また、通信プロセッサ１３は、送信ポート１４と受信ポート１５とを同時に使用して、データの送受信を同時に実行することが可能である。さらに、通信プロセッサ１３は、処理装置１１を経由せずに直接的に主記憶装置１２にアクセス可能である。送信ポート１４及び受信ポート１５は、通信プロセッサ１３と外部とを通信接続するポートとして機能する。
【００３０】
プロセッサ間ネットワーク（ネットワーク）２０には、通信ネットワーク内の通信経路の切り替えを制御するためのネットワークスイッチ装置２１が設けられている。また、このネットワークスイッチ装置２１は、並列計算システム１を構成するプロセッサ１０の数に応じて１つ又は複数設けられている。一方のプロセッサ１０から出力されたデータは、プロセッサ間ネットワーク２０の各ネットワークスイッチ装置２１を経由して、他方のプロセッサ１０に対して送信される。
【００３１】
図３は、本実施の形態に係るプロセッサ間ネットワークのネットワークスイッチ装置の概略的なシステム構成例を示すブロック図である。ネットワークスイッチ装置２１は、水平線と垂直線との各交点で動作する複数のスイッチを含むクロスバスイッチ２２と、クロスバスイッチ２２に夫々接続され外部からデータが入力される複数の入力部２３と、クロスバスイッチ２２に夫々接続され外部へデータが出力される複数の出力部２４と、各入力部２３及びクロスバスイッチ２２に接続され、クロスバスイッチ２２内の各スイッチを制御するスイッチ制御部２５と、を有している。
【００３２】
スイッチ制御部２５は、複数の調停部２６と、複数の調停部２６に夫々対応して接続された複数のフェーズ選択部２７と、を有している。各調停部２６は、クロスバスイッチ２２を介して各出力部２４に夫々対応している。各調停部２６は、各入力部２３から夫々入力される入力信号がどの出力部２４から出力するかを選択するためのセレクト信号を、クロスバスイッチ２２の各スイッチに対して出力する。各フェーズ選択部２７は、各調停部２６及び各出力部２４に夫々対応して設けられている。
【００３３】
次に、本実施の形態に係る並列計算システムの通信処理フローについて、詳細に説明する。図４は、本実施の形態に係る並列計算システムの通信処理フローの一例を示すフローチャートである。まず、各プロセッサ１０は、所定の演算処理を実行し（ステップＳ４０１）、その演算処理が完了したことを確認し、プロセッサ１０間における演算処理の同期を行うためのプロセッサ間同期処理を実行する（ステップＳ４０２）。
【００３４】
各プロセッサ１０は、プロセッサ間同期処理の完了を確認した後、部分通信フェーズ１〜Ｎの通信処理を順次実行することで、集団通信処理を実行する（ステップＳ４０３）。ここで、各プロセッサ１０は、各部分通信フェーズ１〜Ｎ（Ｎは任意の自然数）において、例えば、夫々指定された宛先のプロセッサ１０に対してデータを送信するための通信処理を実行する。
【００３５】
各プロセッサ１０は、図４の（ステップＳ４０３）に示す如く、部分通信フェーズ１、２、３・・・、Ｎの順番で各通信処理を実行する。以下、各部分通信フェーズ１〜Ｎの番号をフェーズ番号と称す。
【００３６】
なお、各プロセッサ１０は、各部分通信フェーズ１〜Ｎ間において、プロセッサ間同期処理は実行する必要がない。すなわち、本実施の形態において、同期処理は、集団通信処理の開始前の（ステップＳ４０２）と完了後の（ステップＳ４０４）の２回のみで、部分通信フェーズ毎に同期処理を実行する必要がないため、処理時間を短縮することができる。また、各プロセッサ１０は、部分通信フェーズのフェーズ番号を昇順で付与しているが、これに限らず、例えば、降順で付与してもよい。
【００３７】
各プロセッサ１０は、全ての部分通信フェーズ１〜Ｎの通信処理を完了させると、その集団通信処理の完了を確認するためのプロセッサ間同期処理を実行する（ステップＳ４０４）。そして、各プロセッサ１０は、このプロセッサ間同期処理の完了を確認した後、後続の演算処理を実行する（ステップＳ４０５）。
【００３８】
次に、上述の部分通信フェーズ１〜Ｎの処理について、詳細に説明する。上述の部分通信フェーズ１〜Ｎにおいて、各プロセッサ１０は、夫々指定された宛先のプロセッサ１０に対して、データ転送処理を実行する。ここで、各プロセッサ１０は、このデータ転送処理において、ライト転送及びリード転送のうちいずれの処理を実行してもよい。以下、各プロセッサ１０が、例えば、ライト転送処理を実行する場合について説明する。
【００３９】
各プロセッサ１０の処理装置１１は、通信プロセッサ１３に対して、ライト転送処理の指示信号を送信する。なお、このライト転送処理の指示信号は、転送データが格納される主記憶装置１２上の格納位置、転送データのサイズ、宛先ノード、宛先ノード上における転送データの格納位置、部分通信フェーズの番号、などの転送パラメータ情報を含む。これらの転送パラメータ情報は、処理装置１１上で動作するソフトウェアプログラムによって指定される。また、処理装置１１は、転送パラメータを通信プロセッサ１３に対して直接的に送信しているが、これに限らず、通信プロセッサ１３が、主記憶装置１２に予め記録された転送パラメータを適宜読み込むようにしても良い。
【００４０】
通信プロセッサ１３は、処理装置１１からのライト転送処理の指示信号に従って、主記憶装置１２からデータを読み出す。そして、通信プロセッサ１３は、読み出したデータに基づいてデータパケットを生成し、生成したデータパケットを、送信ポート１４を介してプロセッサ間ネットワーク２０に対して送出する。
【００４１】
ここで、通信プロセッサ１３は、例えば、転送データを固定長のデータに分割し、分割した固定長のデータに夫々ヘッダ情報を付加してデータパケットを生成する、いわゆるパケット交換方式を適用している。図５は、通信プロセッサ１３により生成されるデータパケットの構成例を示す図である。
【００４２】
データパケット６００は、制御情報を構成するパケットヘッダ６０１と、転送データを構成するボディ６０２と、を含む。このパケットヘッダ６０１は、種別情報（コマンド部）６０３、ルーティング情報６０４、および部分通信フェーズ番号（フェーズ番号）６０５、を含む。この中で、部分通信フェーズ番号６０５は、処理装置１１によって指定された転送パラメータの一つである。また、パケットヘッダ６０１は、主記憶装置１２から読み出されたデータを含んでおり、さらに、エラー訂正コード、エラー検出コード、リンク制御に用いられる情報、等を含んでいてもよい。
【００４３】
各プロセッサ１０から送出されたデータパケット６００は、プロセッサ間ネットワーク２０内のネットワークスイッチ装置２１を一つまたは複数経由して、そのデータパケット６００のルーティング情報６０４によって指定された宛先のプロセッサ１０に対して送信される。一方、その宛先のプロセッサ１０の受信ポート１５は、プロセッサ間ネットワーク２０を介して送信されたデータパケット６００を受信し、通信プロセッサ１３は、その受信されたデータパケット６００のボディ６０２に含まれるデータを、主記憶装置１２に書き込むことで、データ転送処理を終了させる。
【００４４】
なお、通信プロセッサ１３は、送信元プロセッサ１０に対して、データの受信完了を通知するためのリプライ信号を返信してもよい。また、上述の如く、各プロセッサ１０がライト転送処理を実行する場合について説明したが、リード転送処理の実行についてもライト転送処理と同様であるため、詳細な説明は省略する。
【００４５】
次に、プロセッサ間ネットワーク２０内のネットワークスイッチ装置２１におけるデータパケット処理について、詳細に説明する。ネットワークスイッチ装置２１の入力部２３は、順次入力されるデータパケット６００を、その先頭から保持しつつ、保持したデータパケット６００のパケットヘッダ６０１をスイッチ制御部２５に対して送出する。
【００４６】
スイッチ制御部２５は、入力部２３からのパケットヘッダ６０１のルーティング情報６０４を参照して出力部２４を選択し、選択した出力部２４に対応するフェーズ選択部２７に対して、パケットヘッダ６０１の到着を通知する。
【００４７】
フェーズ選択部２７は、到着したパケットヘッダ６０１のうち、部分通信フェーズ番号６０５が最も小さいパケットヘッダ６０１を選択して、選択したパケットヘッダ６０１の情報を、調停部２６に対して通知する。なお、部分通信フェーズ番号６０５が最も小さいパケットヘッダ６０１が複数ある場合には、フェーズ選択部２７は、その複数あるパケットヘッダ６０１の情報を、全て調停部２６に対して通知する。
【００４８】
調停部２６は、次のフェーズ間の競合調停を行う際に、フェーズ選択部２７から通知されたパケットヘッダ６０１のみでフェーズ間の競合調停を行い、その中から１つのパケットヘッダ６０１を選択し、クロスバスイッチ２２に対して通知する。
【００４９】
クロスバスイッチ２２は、スイッチ制御部２５からのセレクト信号（制御信号）に従って入力部２３を選択し、スイッチ制御部２５により選択された入力部２３のデータパケット６００を、対応する出力部２４に対して出力する。なお、出力部２４が同一となるデータパケット６００が、入力部２３に複数存在する場合、フェーズ選択部２７は、部分通信フェーズ番号６０５が最も小さいデータパケット６００だけを選択的に調停部２６に入力させる。
【００５０】
また、部分通信フェーズ番号６０５が大きいパケットヘッダ６０１が、先に調停部２６に到着していた場合、調停部２６は、そのパケットヘッダ６０１を処理するが、以後のパケットヘッダ６０１については部分通信フェーズ番号６０５が小さいパケットヘッダ６０１を優先的に処理する。
【００５１】
図６は、本実施の形態に係る並列計算システムにおいて、各プロセッサ通信の処理状態を説明するための図である。なお、図６において、説明の簡略化のために一部のネットワークスイッチ装置２１のみについて、各プロセッサ通信がそのネットワークスイッチ装置２１内で処理される時間をバーの長さで表現している。
【００５２】
図６に示す如く、上記データパケットに対応するプロセッサ通信７０１及びプロセッサ通信７０３には、フェーズ間の競合が生じないため、時刻ｔ０までに通信処理が完了している。プロセッサ２は、プロセッサ通信７０３の通信処理を完了させた後、プロセッサ通信７０４の処理を開始する。
【００５３】
ここで、プロセッサ通信７０１の部分通信フェーズ番号は１であり、プロセッサ通信７０４の部分通信フェーズ番号は２であるため、スイッチ制御部２５のフェーズ選択部２７は、部分通信フェーズ番号が小さいプロセッサ通信７０１に対応するパケットヘッダのみを選択して調停部２６に対して出力する。これにより、ネットワークスイッチ装置２１内において、調停部２６はプロセッサ通信７０１だけを優先的に出力させ、その間、プロセッサ通信７０４を入力部２３で待機させる。
【００５４】
このように、部分通信フェーズ番号が小さいプロセッサ通信７０１の処理が優先的に処理されるため、遅延することなく時刻ｔ１で終了する。その後、フェーズ選択部２７は、プロセッサ通信７０４のパケットヘッダを調停部２６に対して出力するため、プロセッサ通信７０４は時刻ｔ１以降にプロセッサ通信７０２と同時に処理される。
【００５５】
すなわち、図６に示す如く、スイッチ制御部２５により、プロセッサ通信７０４の処理の開始を遅延させ、プロセッサ通信７０１を優先的に処理させることで、プロセッサ通信７０１の処理が遅延することはなく、図８に示す従来の処理結果と比較して短時間で通信処理を完了させることができる。さらに、部分通信フェーズ間において明示的なバリア同期処理を実行する必要もないため、図９に示す従来の処理結果と比較しても全体の処理時間を短縮することができる。
【００５６】
以上、本実施の形態に係る並列計算システム１によれば、部分通信フェーズ番号がより小さいプロセッサ通信を優先的に処理させ、フェーズ間の競合が連鎖的に起こることを回避することができるため、結果として集団通信処理の時間を効率的に低減できる。
【００５７】
また、この集団通信処理の時間の低減に際し、部分通信フェーズ間でプロセッサ間同期処理を実行する必要がないため、従来技術と比較して集団通信の処理時間はより短くすることができる。さらに、このように集団通信処理の時間を低減することで、並列計算システム１の効率的な利用が可能となる。
【００５８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５９】
また、上述の処理装置１１上で動作するソフトウェアプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６０】
（付記１）
複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムであって、前記プロセッサは、該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与し、前記ネットワークスイッチ装置は、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とする並列計算システム。
【００６１】
（付記２）
（付記１）記載の並列計算システムであって、前記プロセッサは、前記各プロセッサ通信に対して前記フェーズ番号を昇順で夫々付与し、前記ネットワークスイッチ装置は、前記フェーズ番号が小さいプロセッサ通信を優先的に処理するように制御を行う、ことを特徴とする並列計算システム。
【００６２】
（付記３）
他のプロセッサとネットワークを介して接続され、相互に通信処理を行うプロセッサであって、前記プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対して、通信処理の順序を決めるためのフェーズ番号を夫々付与する、ことを特徴とするプロセッサ。
【００６３】
（付記４）
（付記３）記載の並列計算システムであって、前記プロセッサ通信に対して、前記フェーズ番号を昇順又は降順で付与する、ことを特徴とするプロセッサ。
【００６４】
（付記５）
複数のプロセッサを相互に接続するネットワークの通信経路を制御するためのネットワークスイッチ装置であって、前記プロセッサは、該プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与しており、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とするネットワークスイッチ装置。
【００６５】
（付記６）
（付記５）記載の並列計算システムであって、前記プロセッサは、前記プロセッサ通信に対して前記フェーズ番号を昇順で付与しており、前記フェーズ番号が小さいプロセッサ通信を優先的に処理するように制御を行う、ことを特徴とするネットワークスイッチ装置。
【００６６】
（付記７）
複数のプロセッサと、該複数のプロセッサを相互に接続するネットワークと、該ネットワークの通信経路を制御するための少なくとも１つのネットワークスイッチ装置と、を備え、複数の前記プロセッサが他の複数の前記プロセッサに対して同時に通信処理を夫々実行する並列計算システムの通信方法であって、前記プロセッサ間におけるプロセッサ通信を複数の部分通信フェーズに分割し、該分割された部分通信フェーズに対応する各プロセッサ通信に対してフェーズ番号を夫々付与し、前記プロセッサにより付与された前記フェーズ番号に基づいて、前記プロセッサ通信の処理順序を制御する、ことを特徴とする並列計算システムの通信方法。
【００６７】
（付記８）
他のプロセッサとネットワークを介して接続され、相互に通信処理を行うプロセッサのプログラムであって、前記プロセッサ間におけるプロセッサ通信は複数の部分通信フェーズに分割されており、該分割された部分通信フェーズに対応する各プロセッサ通信に対して、通信処理の順序を決めるためのフェーズ番号を夫々付与する処理をコンピュータに実行させることを特徴とするプログラム。
【符号の説明】
【００６８】
１    並列計算システム
１０    プロセッサ
１１    処理装置
１２    主記憶装置
１３    通信プロセッサ
１４    送信ポート
１５    受信ポート
２０    プロセッサ間ネットワーク
２１    ネットワークスイッチ装置
２２    クロスバスイッチ
２３    入力部
２４    出力部
２５    スイッチ制御部
【図１】
0005556377.tif 000002
【図２】
0005556377.tif 000003
【図３】
0005556377.tif 000004
【図４】
0005556377.tif 000005
【図５】
0005556377.tif 000006
【図６】
0005556377.tif 000007
【図７】
0005556377.tif 000008
【図８】
0005556377.tif 000009
【図９】
0005556377.tif 000010