(57)【特許請求の範囲】
【請求項１】
複数のプロセッサノードがＸ及びＹ軸のクロスバネットワークで接続された並列計算機におけるバリア同期制御方法であって、
各プロセッサノードは、自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合をＸ，Ｙ軸毎に記憶する第１記憶手段と、自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合のバリア同期状態をＸ，Ｙ軸毎に記憶する第２記憶手段と、バリア同期に参加するノード集合形状が矩形であるか否かを記憶する第３記憶手段とを具備し、
バリア同期に参加する各プロセッサノードは、
（１）前記第１記憶手段に自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合をＸ，Ｙ軸毎に設定し、前記第３記憶手段にバリア同期に参加するノード集合形状が矩形である否か設定し、
バリア同期が起動されると、
（２）バリア同期パケットを、Ｘ（又はＹ）軸クロスバスイッチからＸ（又はＹ）軸方向のバリア同期に参加するノード集合に送信するとともに、該Ｘ（又はＹ）軸クロスバスイッチからバリア同期パケットを受信し、該受信したバリア同期パケットを前記第２記憶手段に記憶し、該第２記憶手段のＸ（又はＹ）軸の記憶値と前記第１記憶手段のＸ（又はＹ）軸の設定値とを比較して、Ｘ（又はＹ）軸方向のバリア同期が成立したか判定し、
（３）前記Ｘ（又はＹ）軸方向のバリア同期が成立したなら、次に、バリア同期パケットを、Ｙ（又はＸ）軸クロスバスイッチからＹ（又はＸ）軸方向のバリア同期に参加するノード集合に送信するとともに、該Ｙ（又はＸ）軸クロスバスイッチからバリア同期パケットを受信し、該受信したバリア同期パケットを前記第２記憶手段に記憶し、該第２記憶手段のＹ（又はＸ）軸の記憶値と前記第１記憶手段のＹ（又はＸ）軸の設定値とを比較して、Ｙ（又はＸ）軸方向のバリア同期が成立したか判定し、
（４）前記Ｙ（又はＸ）軸方向のバリア同期が成立したなら、前記第３記憶手段を参照し、バリア同期に参加するノード集合形状が矩形の場合には、バリア同期に参加している全プロセッサノードが同期点に到達したとし、
（５）前記ノード集合形状が矩形でない場合には、再度、前記（２）、（３）のＸ（又はＹ）軸方向、Ｙ（又はＸ）軸方向のバリア同期処理を実施し、Ｙ（又はＸ）軸方向のバリア同期が成立した時点で、バリア同期に参加している全プロセッサノードが同期点に到達したとする、
ことを特徴とする並列計算機のバリア同期制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のノードがクロスバネットワーク結合方式で接続され、通信ネットワークによってバリア同期処理を実行する機能を有する並列計算機に関し、特に任意のノードの組み合わせでバリア同期の実施を可能とするバリア同期制御方法に関するものである。
【０００２】
【従来の技術】
並列計算機では、複数のノードに割り振られた並列プログラムに対して、それぞれのノードが平行して演算処理を実行し、各ノードは、他のノードで実行されている演算処理がある点まで実行されたことを条件として次の演算処理に進むように、同期処理が行われる。このような同期をとる手法として、バリア同期が一般に用いられる。クロスバネットワークによるバリア同期では、並列プログラムを実行しているそれぞれのノードは、演算処理がプログラム上に定められた同期点に到達すると、バリア同期パケットによって他ノードに同期点への到達を通知する。すべてのノードが同期点への到達を通知することでバリア同期が成立する。
【０００３】
従来、並列計算機ネットワーク結合方式としては、例えば特開昭６３―１２４１６２号公報「並列計算機の相互結合方式」に記載されているハイパークロスバ方式がある。この方式は、多次元直交座標格子点上に配置されたプロセッサノードを、各座標軸方向に完全クロスバスイッチにより結合したものであり、任意のプロセッサノード間が効率良く通信される。
【０００４】
【発明が解決しようとする課題】
複数ノードがハイパークロスバネットワーク結合方式等で接続された並列計算機において、並列プログラムが全プロセッサノード群で同一の処理を実施するのではなく、分割して処理を実施し、分割したノード群の単位でバリア同期を実施する場合がある。しかしながら、従来方式では、バリア同期機構の制約により、全プロセッサノードもしくは矩形のノード群単位でバリア同期を実施する必要があり、任意に分割したノード群の単位で同時にバリア同期処理を実施することができなかった。
【０００５】
本発明の目的は、複数のプロラッサノードがクロスバネットワークで接続された並列計算機において、並列プログラムを分割したノード群において実施する場合に、ノード群の形状を矩形以外にも適用可能なバリア同期制御方法を提供することにある。
【０００６】
本発明は、並列計算機を構成する各プロセッサノードが、自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合をＸ，Ｙ軸毎に記憶する第１記憶手段と、自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合のバリア同期状態をＸ，Ｙ軸毎に記憶する第２記憶手段と、バリア同期に参加するノード集合形状が矩形であるか否かを記憶する第３記憶手段とを備える。
バリア同期に参加する各プロセッサノードは、あらかじめ、前記第１記憶手段に自ノードと同一クロスバに接続されるノード内のバリア同期に参加するノード集合をＸ，Ｙ軸毎に設定し、前記第３記憶手段にバリア同期に参加するノード集合形状が矩形である否か設定する。そして、バリア同期が起動されると、バリア同期パケットを、Ｘ（又はＹ）軸クロスバスイッチからＸ（又はＹ）軸方向のバリア同期に参加するノード集合に送信するとともに、該Ｘ（又はＹ）軸クロスバスイッチからバリア同期パケットを受信し、該受信したバリア同期パケットを前記第２記憶手段に記憶し、該第２記憶手段のＸ（又はＹ）軸の記憶値と前記第１記憶手段のＸ（又はＹ）軸の設定値とを比較して、Ｘ（又はＹ）軸方向のバリア同期が成立したか判定する。前記Ｘ（又はＹ）軸方向のバリア同期が成立したなら、次に、バリア同期パケットを、Ｙ（又はＸ）軸クロスバスイッチからＹ（又はＸ）軸方向のバリア同期に参加するノード集合に送信するとともに、該Ｙ（又はＸ）軸クロスバスイッチからバリア同期パケットを受信し、該受信したバリア同期パケットを前記第２記憶手段に記憶し、該第２記憶手段のＹ（又はＸ）軸の記憶値と前記第１記憶手段のＹ（又はＸ）軸の設定値とを比較して、Ｙ（又はＸ）軸方向のバリア同期が成立したか判定する。Ｙ（又はＸ）軸方向のバリア同期が成立したなら、前記第３記憶手段を参照し、バリア同期に参加するノード集合形状が矩形の場合には、バリア同期に参加している全プロセッサノードが同期点に到達したとする。一方、ノード集合形状が矩形でない場合には、再度、Ｘ（又はＹ）軸方向、Ｙ（又はＸ）軸方向のバリア同期処理を実施し、Ｙ（又はＸ）軸方向のバリア同期が成立した時点で、バリア同期に参加している全プロセッサノードが同期点に到達したとする。
【０００７】
【発明の実施の形態】
以下、本発明の一実施例を図面を用いて具体的に説明する。
図２は、ハイパークロスバ方式で結合されたネットワークの概念図である。システム全体は、Ｘ軸クロスバスイッチ１−１〜１−３、Ｙ軸クロスバスイッチ２−１〜２−３、プロセッサノード３の集合として構成される。図２では、各々、Ｘ軸方向に３プロセッサノード、Ｙ軸方向に３プロセッサノードを配置し、これらのノードをＸ軸クロスバスイッチ１−１〜１−３とＹ軸クロスバスイッチ２−１〜２−３によってハイパークロスバ方式で結合したネットワークが構成されている。各ノード3には座標が割り当てられていて、図２の例では、ノード（１，１）の座標からノード（３，３）の座標までが識別されている。
【０００８】
プロセッサノード（１，１）、（２，１）、（３，１）は、Ｘ軸クロスバスイッチ１−１に接続され、プロセッサノード（１，２）、（２，２）、（３，２）は、Ｘ軸クロスバスイッチ１−２に接続され、プロセッサノード（１，３）、
（２，３）、（３，３）は、Ｘ軸クロスバスイッチ１−３に接続されている。また、プロセッサノード（１，１）、（１，２）、（１，３）は、Ｙ軸クロスバスイッチ２−１に接続され、プロセッサノード（２，１）、（２，２）、（２，３）は、Ｙ軸クロスバスイッチ２−２に接続され、プロセッサノード（３，１）、（３，２）、（３，３）は、Ｙ軸クロスバスイッチ２−３に接続されている。
【０００９】
図１は、本発明による並列計算機の一実施例のブロック図であり、特に一つのＸ軸クロスバスイッチ１と一つのＹ軸クロスバスイッチ２に接続される一つのプロセッサノード３の構成例を示す。図１中、プロセッサノード３は、命令プロセサ１１０と、メモリ１１１と、メモリ制御ユニット１１２と、さらに通信ユニット１１３を具備している。ここで、通信ユニット１１３は、Ｘ軸あるいはＹ軸に向けて送付されるバリア同期パケットデータを生成するバリア同期パケット生成回路１３０と、Ｘ軸クロスバスイッチ１、Ｙ軸クロスバスイッチ２とデータ授受を行うための入出力ポート１４０と、バリア同期の設定の保持及び状態の制御を行なうバリア同期管理回路１５０からなる。バリア同期管理回路１５０は、バリア同期参加形状設定記憶手段（第１記憶手段）４と、矩形分割モード設定記憶手段（第３記憶手段）５と、バリア同期状態記憶手段（第２記憶手段）６を有する。
【００１０】
バリア同期参加形状設定記憶手段４には、自ノードと同一クロスバスイッチ１，２に接続されるノード内の各接続軸毎のバリア同期に参加するノードの集合が設定記憶される。矩形分割モード設定記憶手段５には、バリア同期に参加するノードの集合形状が矩形であるか否かを示すフラグ（ビット）が設定記憶される。バリア同期状態記憶手段６は、ノード３と同一クロスバスイッチ１，２に接続されるノードのバリア同期状態を各接続軸毎に記憶する。これら記憶手段４，５，６については後述する。
【００１１】
本実施例の各プロセッサノード３内のプロセッサ１１０の動作は、メモリ１１１上のプログラムを読み出し実行する、従来のマイクロプロセッサの動作と同様である。なお、図１ではプロセッサ１１０が１台であるが、複数でも構わない。
【００１２】
バリア同期は、プロセッサ１１０がメモリ制御ユニット１１２を経由してバリア同期管理回路１５０に命令を書き込むことにより起動される。このバリア同期を起動する前に、バリア同期に参加する全てのプロセッサノード３毎に、バリア同期参加形状設定記憶手段４および矩形分割モード設定記憶手段５に、プロセッサ１１０がメモリ制御ユニット１１２を経由して値を設定する。
【００１３】
バリア同期が起動されると、バリア同期パケット生成回路１３０は、バリア同期管理回路１５０からの宛先情報等をもとにバリア同期パケットを生成する。この生成されたバリア同期パケットが、入出力ポート１４０を介し、まず、Ｘ軸クロスバスイッチ１に送付される。同様に他のノードでもバリア同期が起動され、Ｘ軸クロスバスイッチ１に対してバリア同期パケットが送付される。バリア同期パケットを受け取ったＸ軸クロスバスイッチ１は、自クロスバスイッチに接続するノードの内、バリア同期パケットの中に含まれる宛先ノードに対してのみ、そのバリア同期パケットを送付する。各プロセッサノードは、Ｘ軸クロスバスイッチ１から送付されたバリア同期パケットを入出力ポート１４０で受信し、バリア同期管理回路１５０において、バリア同期状態記憶手段６に記憶し、これをバリア同期参加形状設定記憶手段４の設定値と比較することで、自ノードを含めてＸ軸クロスバスイッチ１に接続されるすべてのノードの内、バリア同期参加形状設定記憶手段４に設定された、つまりバリア同期に参加している全てのノードからバリア同期パケットが送付されてくるのを監視する。それらのバリア同期パケットをすべて受信することでＸ軸方向の同期が成立し、バリア同期管理回路１５０は、Ｘ軸同期の成立を検出する。
【００１４】
Ｘ軸同期が検出されると、バリア同期管理回路１５０はバリア同期パケット生成回路１３０に指示し、バリア同期パケット生成回路１３０は、次に入出力ポート１４０を介し、Ｙ軸クロスバスイッチ２に対してバリア同期パケットを送付する。他のノードに関しても同様である。各プロセッサノードは、バリア同期管理回路１５０において、同様にＹ軸方向の同期の成立を監視する。Ｙ軸方向の同期が成立したプロセッサノードは、矩形分割モード設定記憶手段５を参照する。ここで、矩形分割モード設定記憶手段５が、バリア同期に参照するプロセッサ群の形状が矩形で有効と設定されている場合は、既にそのプロセッサノードが接続するＸ軸に関して同期が成立しているため、バリア同期に参加している全ノードが同じ同期点に到達したことを検出する。
【００１５】
バリア同期に参加するプロセッサ群の形状が矩形でなく、矩形分割モード設定記憶手段５が無効と設定されていた場合は、バリア同期管理回路１５０は、バリア同期パケット生成回路１３０に指示して、再度Ｘ軸方向の同期、Ｙ軸方向の同期処理を実施し、Ｙ軸方向の同期が成立した時点でバリア同期に参加している全ノードが同じ同期点に到達したことを検出する。バリア同期成立を検出したバリア同期管理回路１５０は、メモリ制御ユニット１１２を介してプロセッサ（ＣＰＵ）１１０にバリア同期成立を通知する。
【００１６】
次に、図１の構成において、プロセッサノード３におけるバリア同期の起動に関して、図３を用いて更に詳細に説明する。
図３中、図１と同一部分には同一の符号を付している。１３１はバリア同期パケットデータ、１３２はノード座標記憶手段、１３３はセレクタ、１５３，１５５はそれぞれバリア同期参加形状設定記憶手段４を構成するＸ軸バリア同期参加記憶手段とＹ軸バリア同期参加記憶手段、１５６は軸ＩＤ決定回路、１５７はセレクタである。
【００１７】
矩形分割モード設定記憶手段５の値、及び、バリア同期参加形状設定記憶手段４のＸ軸バリア同期参加記憶手段１５３とＹ軸バリア同期参加記憶手段１５５の値はプログラム実行前にプロセッサ１１０によって予め設定される。矩形分割モード設定記憶手段５は、バリア同期に参加するノード群の形状が矩形の場合、値は０、矩形以外は１である。Ｘ軸バリア同期参加記憶手段１５３はｎビット（ｎはＸ軸方向のノード数）で構成され、それぞれのビット位置はノードのＸ座標に対応し、バリア同期に参加しているプロセッサノードのビット位置を１とし、他は０に設定する。Ｙ軸バリア同期参加記憶手段１５５は同様にｎビット（ｎはＹ軸方向のノード数）で構成され、それぞれのビット位置はノードのＹ座標に対応し、バリア同期に参加しているプロセッサノードのビット位置を１とし、他は０に設定する。
【００１８】
プログラムを実行しているプロセッサ１１０は、プログラム上に予め定められた同期点に到達したとき、バリア同期を起動するためにバリア同期管理回路１５０に起動を通知し、バリア同期待ち状態に入る。バリア同期管理回路１５０は、バリア同期の起動を軸ＩＤ決定回路１５６に通知する。軸ＩＤ決定回路１５６では、同期待ちのクロスバがＸ軸かＹ軸か及びその回数を識別するための情報を決定する。本実施例では、同期待ちのクロスバがＸ軸方向でかつ１回目のＸ軸同期であれば軸ＩＤは００、Ｙ軸方向でかつ１回目のＹ軸同期であれば軸ＩＤは０１、Ｘ軸方向でかつ２回目のＸ軸同期であれば軸ＩＤは１０、Ｙ軸方向でかつ２回目のＹ軸同期であれば軸ＩＤは１１とする。したがってバリア同期が起動されたときは軸ＩＤの値は００である。
【００１９】
バリア同期パケット生成回路１３０内のノード座標記憶手段１３２はＸフィールドとＹフィールドを持ち、自ノードの座標を記憶している。ノード座標記憶手段１３２の値はプログラム実行前にプロセッサ１１０によって予め設定される。例えば、図２のノード（１、１）の場合、ノード座標記憶手段１３２のＸフィールドの値は１、Ｙフィールドの値は１である。
【００２０】
バリア同期パケットデータ１３１は軸ＩＤフィールド、宛先フィールド、座標フィールドを持つ。軸ＩＤフィールドには軸ＩＤ決定回路１５６で決定された値が格納される。座標フィールドには、ノード座標記憶手段１３２のＸフィールドの値またはＹフィールドの値が軸ＩＤ決定回路１５６の値によってセレクタ１３３で選択されて格納される。セレクタ１３３は、軸ＩＤ決定回路１５６の値が００または１０の場合はＸフィールドの値、０１または１１の場合はＹフィールドの値を選択する。宛先フィールドには、Ｘ軸バリア同期参加記憶手段１５３の値またはＹ軸バリア同期参加記憶手段１５５の値がセレクタ１５７で選択されて格納される。セレクタ１５７は、軸ＩＤ決定回路１５６の値が００または１０の場合は、Ｘ軸バリア同期参加記憶手段１５３の値、０１または１１の場合は、Ｙ軸バリア同期参加記憶手段１５５の値を選択する。バリア同期パケットデータ１３１の各フィールドに値が格納されると、入出力ポート１４０を介して、バリア同期パケットが、Ｘ軸方向クロスバ１あるいはＹ軸方向クロスバス２に送付される。
【００２１】
次に、図１の構成において、プロセッサノード３におけるバリア同期パケットを受信し、バリア同期成立の検出について、図４を用いて更に詳細に説明する。図４中、図１と同一部分には同一の符号を付している。１５１はバリア同期パケット受信データ、１５２および１５４はそれぞれバリア同期状態記憶手段６を構成するＸ軸バリア同期状態記憶手段とＹ軸バリア状態記憶手段、１５８および１５９は比較回路である。また、１５３および１５５はそれぞれ図３で示したバリア同期参加形状設定記憶手段４を構成するＸ軸バリア同期参加記憶手段とＹ軸バリア同期参加記憶手段、１５６は軸ＩＤ決定回路である。
【００２２】
バリア同期パケット受信データ１５１は軸ＩＤフィールド、宛先座標フィールドを持ち、それぞれのフィールドには、入出力ポート１４０を介してＸ軸方向クロスバ１またはＹ軸方向クロスバ２から受信した送信元バリア同期パケットのそれぞれ対応するフィールドのデータが格納される。図３で説明したように、軸ＩＤフィールドは、本実施例では同期待ちのクロスバがＸ軸方向でかつ１回目のＸ軸同期であれば００、Ｙ軸方向でかつ１回目のＹ軸同期であれば０１、Ｘ軸方向でかつ２回目のＸ軸同期であれば１０、Ｙ軸方向でかつ２回目のＹ軸同期であれば１１である。また、座標フィールドは、バリア同期パケット受信データの送信ノードのＸあるいはＹ座標をあらわす。
【００２３】
Ｘ軸バリア同期状態記憶手段１５２はｎビット（Ｘ軸方向のノード数）で構成され、それぞれのビット位置はノードのＸ座標に対応する。なお、プログラム開始時には、Ｘ軸バリア同期状態記憶手段１５２のビット列の初期値はオール０がセットされている。バリア同期パケット受信データ１５１の軸ＩＤフィールドの値が００または１０の場合、バリア同期パケット受信データ１５１の座標フィールドの値に対応するＸ軸バリア同期状態記憶手段１５２のビット位置の値が１にセットされる。このＸ軸バリア同期状態記憶手段１５２のビット列の値とＸ軸バリア同期参加状態記憶手段１５３の値を比較回路１５８において比較し、一致と判定した時、Ｘ軸に関して同期が成立したことを表している。Ｘ軸バリア同期状態記憶手段１５２はＸ軸に関して同期が成立した時点でオール０に再セットされて、次の同期処理の実施にそなえる。
【００２４】
Ｙ軸バリア同期状態記憶手段１５４も同様にｎビット（Ｙ軸方向のノード数）で構成され、それぞれのビット位置はＹ座標に対応し、ビット列の初期値はオール０である。バリア同期パケット受信データ１５１の軸ＩＤフィールドの値が０１または１１の場合、バリア同期パケット受信データ１５１の座標フィールドの値に対応するＹ軸バリア同期状態記憶手段１５４のビット位置の値が１にセットされる。このＹ軸バリア同期状態記憶手段１５４のビット列の値とＹ軸バリア同期参加状態記憶手段１５５の値を比較回路１５９において比較し、一致と判定した時、Ｙ軸に関して同期が成立したことを表している。Ｙ軸バリア同期状態記憶手段１５４も、同様にＹ軸に関して同期が成立した時点でオール０に再セットされて、次の同期処理の実施にそなえる。
【００２５】
Ｙ軸バリア同期状態記憶手段１５４のビット列の値とＹ軸バリア同期参加状態記憶手段１５５の値が比較回路１５９において一致と判定され、矩形分割モード設定記憶手段５が矩形有効を意味する値０であり、軸ＩＤ決定回路１５６の値が０１である場合、バリア同期に参照したプロセッサノードが全て同期点に致達したことを意味する。矩形分割モード設定記憶手段５が矩形無効を意味する値１の場合は、再度バリア同期パケットを送受信して、Ｘ軸方向の同期、Ｙ軸方向の同期処理を実施する。そして、Ｙ軸バリア同期状態記憶手段１５４のビット列の値とバリア同期参加状態記憶手段１５５の値が比較回路１５９において一致と判定され、軸ＩＤ決定回路１５６の値が１１になった場合、バリア同期に参加したプロセッサノードが全て同期点に到達したことを意味する。
【００２６】
軸ＩＤ決定回路１５６は、軸ＩＤの状態と、矩形分割モード設定記憶手段５の値と、比較回路１５９の出力とにより、バリア同期に参加したプロセッサノードが全て同期点に到達したことを検出すると、メモリ制御ユニット１１２を介してプロセッサ１１０にバリア同期成立を通知する。
【００２７】
次に、図５から図１６を使って具体的な動作例について説明する。なお、簡単のために、以下の説明では並列計算機の構成を図２に示した３×３（ｎ＝３）とし、バリア同期に参加するプロセッサノードを３−１の（１，１）、３−２（２，１）、３−３の（３，１）、３−４の（１，２）とする。また、プロセッサノード３−１、３−２、３−３、３−４の順にバリア同期を実施するものとする。なお、実際にはバリア同期は順不同で実施される。
【００２８】
まず、バリア同期を起動するに先立ち、プロセッサノード３−１、３−２、３−３、３−４において、図５に示すように、Ｘ軸バリア同期参加記憶手段１５３、Ｙ軸バリア同期参加記憶手段１５５、矩形分割モード設定記憶手段５にそれぞれ値を設定する。ここで、矩形分割モード設定記憶手段５の値が１は、バリア同期に参加するプロセッサノード３−１，３−２，３−３，３−４の集合形状が矩形でないことを示している。軸ＩＤ決定回路１５６の軸ＩＤの初期値は００である。なお、Ｘ軸バリア同期状態記憶手段１５２とＹ軸バリア同期状態記憶手段１５４の初期値はオール０である。
【００２９】
プロセッサノード３−１がバリア同期を起動すると、プロセッサノード３−１は、Ｘ軸方向クロスバ１−１へ、プロセッサノード３−１、３−２、３−３宛にバリア同期パケットを送信し、プロセッサノード３−１，３−２，３−３は、図６のバリア同期パケット受信データ１５１（軸ＩＤ＝００、Ｘ座宛先＝１１１、Ｘ座標＝１）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が１であるので、図６に示すように、プロセッサノード３−１、３−２、３−３では、Ｘ軸バリア同期状態記憶手段１５２のビット１の値が１にセットされる。
【００３０】
次に、プロセッサノード３−２がバリア同期を起動すると、プロセッサノード３−２は、Ｘ軸方向クロスバ１−１へ、プロセッサノード３−１、３−２、３−３宛にバリア同期パケットを送信し、プロセッサノード３−１，３−２，３−３は、図７のバリア同期パケット受信データ１５１（軸ＩＤ＝００、Ｘ宛先＝１１１、Ｘ座標＝２）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が２であるので、図７に示すように、プロセッサノード３−１、３−２、３−３では、Ｘ軸バリア同期状態記憶手段１５２のビット２の値が１にセットされる。
【００３１】
次にプロセッサノード３−３がバリア同期を起動すると、プロセッサノード３−３は、Ｘ軸方向クロスバ１−１へ、プロセッサノード３−１、３−２、３−３宛にバリア同期パケットを送信し、プロセッサノード３−１、３−２、３−３は図８のバリア同期パケット受信データ１５１（軸ＩＤ＝００、Ｘ宛先＝１１１、Ｘ座標＝３）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が３であるので、プロセッサノード３−１、３−２、３−３ではＸ軸バリア同期状態記憶手段１５２のビット３の値が１にセットされる。
【００３２】
この時、プロセッサノード３−１、３−２、３−３は、図８に示すようにＸ軸バリア同期状態記憶手段１５２のビット列の値とＸ軸バリア同期参加記憶手段１５３のビット列の値が一致となり、Ｘ軸に関して同期が成立したことを表している。
【００３３】
図８の状態の後、Ｘ軸の同期成立を受けて、プロセッサノード３−１、３−２、３−３では、Ｙ軸に向けて送付されるバリア同期パケットデータが生成される。この時、プロセッサノード３−１，３−２、３−３の軸ＩＤ決定回路１５６では、軸ＩＤの値が０１となり、Ｘ軸バリア同期状態記憶手段１５２はオール０になる。
【００３４】
バリア同期パケットは、Ｙ軸に向けてプロセッサノード３−１からプロセッサノード３−１と３−４宛に、プロセッサノード３−２から自プロセッサノード３−２宛に、プロセッサノード３−３から同じく自プロセッサノード３−３宛に送出される。
【００３５】
プロセッサノード３−１がＹ軸方向クロスバ２−１へ、プロセッサノード３−１、３−４宛にバリア同期パケットを送出すると、プロセッサノード３−１、３−４は、図９のバリア同期パケット受信データ１５１（軸ＩＤ＝０１，Ｙ宛先＝１１０，Ｙ座標＝１）に示すバリア同期パケットを受信する。プロセッサノード３−２がＹ軸方向クロスバ２−２へ、プロセットノード３−２宛にバリア同期パケットを送出すると、プロセッサノード３−２は、図９のバリア同期パケット受信データ１５１（軸ＩＤ＝０１，Ｙ宛先＝１００，Ｙ座標＝１）に示すバリア同期パケットを受信する。同様に、プロセッサノード３−３がＹ軸方向クロスバ２−３へ、プロセットノード３−３宛にバリア同期パケットを送出すると、プロセッサノード３−３は、図９のバリア同期パケット受信データ１５１（軸ＩＤ＝０１，Ｙ宛先＝１００，Ｙ座標＝１）に示すバリア同期パケットを受信する。各バリア同期パケット受信データ１５１の座標フィールド（Ｙ座標）の値が１であるので、図９に示すように、プロセッサノード３−１、３−２、３−３、３−４のＹ軸バリア同期状態記憶手段１５４のビット１の値が１にセットされる。
【００３６】
この時、プロセッサノード３−２、３−３は、図９に示すように、Ｙ軸バリア同期状態記憶手段１５４のビット列の値とＹ軸バリア同期参加記憶手段１５５のビット列の値が一致となり、Ｙ軸に関して同期が成立したことを表している。ただし、矩形モード設定記憶手段５が矩形無効を示す値１であるため、プロセッサノード３−２、３−３では、再びＸ軸に向けて送付されるバリア同期パケットデータを生成し送信する。この時、プロセッサ３−２，３−３の軸ＩＤ決定回路１５６では、軸ＩＤの値が１０となり、Ｙ軸バリア同期状態記憶手段１５４はオール０となる。
【００３７】
バリア同期パケットは、Ｘ軸に向けてプロセッサノード３−２からプロセッサノード３−１、３−２、３−３宛に、プロセッサノード３−３から同じくプロセッサノード３−１、３−２、３−３宛に送信される。ここでは説明の便宜上、プロセッサノード３−２、３−３が送信したパケットの順で到着したとして説明を続ける。
【００３８】
プロセッサノード３−２がＸ軸方向クロスバ１−１へ、プロセッサノード３−１、３−２、３−３宛にバリア同期パケットを送信すると、プロセッサノード３−１、３−２、３−３は、図１０のバリア同期パケット受信データ１５１（軸ＩＤ＝１０、Ｘ宛先＝１１１、Ｘ座標＝２）に示すリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が２であるので、図１０に示すように、プロセッサノード３−１，３−２，３−３では、Ｘ軸バリア同期状態記憶手段１５２のビット２の値が１にセットされる。
【００３９】
プロセッサノード３−３がＸ軸方向クロスバ１−１へ、プロセッサノード３−１、３−２、３−３宛にバリア同期パケットを送信すると、プロセッサノード３−１、３−２、３−３は、図１１のバリア同期パケット受信データ１５１（軸ＩＤ＝１０、Ｘ宛先＝１１１、Ｘ座標＝３）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が３であるので、図１１に示すように、プロセッサノード３−１，３−２，３−３では、Ｘ軸バリア同期状態記憶手段１５２のビット３の値が１にセットされる。
【００４０】
一方、プロセッサノード３−４がバリア同期を起動すると、プロセッサノード３−４はＸ軸クロスバ１−２へ、自プロセッサノード３−４宛にバリア同期パケットを送信し、プロセッサノード３−４は、図１２のバリア同期パケット受信データ１５１（軸ＩＤ＝００、Ｘ宛先＝１００、Ｘ座標＝１）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｘ座標）の値が１であるので、図１２に示すように、プロセッサノード３−４では、Ｘ軸バリア同期状態記憶手段１５２のビット１の値が１にセットされる。
【００４１】
この時、プロセッサノード３−４は、図１２に示すように、Ｘ軸バリア同期状態記憶手段１５２のビット列の値とＸ軸バリア同期参加記憶手段１５３のビット列の値が一致となり、Ｘ軸に関して同期が成立したことを表している。
【００４２】
図１２の状態の後、Ｘ軸の同期成立を受けて、プロセッサノード３−４では、Ｙ軸に向けて送付されるバリア同期パケットデータが生成される。この時、プロセッサノード３−４の軸ＩＤ決定回路１５６では軸ＩＤの値が０１、Ｘ軸バリア同期状態記憶手段１５２はオール０となる。
【００４３】
バリア同期パケットは、プロセッサノード３−４からＹ軸方向クロスバ２−１へ、プロセッサノード３−１と３−４宛に送信され、プロセッサノード３−１、３−４は、図１３のバリア同期パケット受信データ１５１（軸ＩＤ＝０１、Ｙ宛先＝１１０、Ｙ座標＝２）に示すバリア同期パケットを受信する。バリア同期パケット受信データ１５１の座標フィールド（Ｙ座標）の値が２であるので、図１３に示すように、プロセッサノード３−１，３−４のＹ軸バリア同期状態記憶手段１５４のビット２の値が１にセットされる。
【００４４】
この時、プロセッサノード３−１、３−４は、図１３に示すように、Ｙ軸バリア同期状態記憶手段１５４のビット列の値とＹ軸バリア同期参加記憶手段１５５のビット列の値が一致となり、Ｙ軸に関して同期が成立したことを表している。ただし、矩形モード設定記憶手段５が矩形無効を示す値１であり、軸ＩＤ決定回路１５６は軸ＩＤの値が０１であるため、２回目のＸ軸バリア同期が起動され、プロセッサノード３−１、３−４では、Ｘ軸に向けてバリア同期パケットデータが生成される。この時、プロセッサノード３−１，３−４の軸ＩＤ決定回路１５６では軸ＩＤの値が１０、Ｙ軸バリア同期状態記憶手段１５４はオール０となる。
【００４５】
バリア同期パケットは、Ｘ軸に向けてプロセッサノード３−１からプロセッサノード３−１、３−２、３−３宛に、プロセッサノード３−４からプロセッサノード３−４宛に送信される。
【００４６】
プロセッサノード３−１がＸ軸方向クロスバ１−１へ、プロセッサノード３−１，３−２，３−３宛にバリア同期パケットを送信すると、プロセッサノード３−１，３−２，３−３は、図１４のバリア同期パケット受信データ１５１（軸ＩＤ＝１０、Ｘ宛先＝１１１、Ｘ座標＝１）に示すバリア同期パケットを受信する。また、プロセッサノード３−４がＸ軸方向クロスバ１−２へ、プロセッサノード３−４宛にバリア同期パケットを送信すると、プロセッサノード３−４は、図１４のバリア同期パケット受信データ１５１（軸ＩＤ＝１０、Ｘ宛先＝１００、Ｘ座標＝１）に示すバリア同期パケットを受信する。各バリア同期パケット受信データ１５１の座標フィールドの値が１であるので、図１４に示すように、プロセッサノード３−１，３−２，３−３，３−４のＸ軸バリア同期状態記憶手段１５２のビット１の値が１にセットされる。
【００４７】
この時、プロセッサノード３−１，３−２，３−３は、図１４に示すように、Ｘ軸バリア同期状態記憶手段１５２のビット列の値とＸ軸バリア同期参加記憶手段１５３のビット列の値が一致となり、Ｘ軸に関して同期が成立したことを表している。Ｘ軸の同期成立を受けて、プロセッサノード３−１，３−２，３−３ではＹ軸に向けて送付されるバリア同期パケットデータが生成される。この時、プロセッサノード３−１，３−２，３−３の軸ＩＤ決定回路１５６では軸ＩＤの値が１１となり、Ｘ軸バリア同期状態記憶手段１５２はオール０となる。
【００４８】
上記と同時期に、プロセッサノード３−４でも、図１４に示すように、Ｘ軸バリア同期状態記憶手段１５２のビット列の値とＸ軸バリア同期参加記憶手段１５３のビット列の値が一致となり、Ｘ軸に関して同期が成立したことを表している。Ｘ軸の同期成立を受けて、プロセッサノード３−４でも、Ｙ軸に向けて送付されるバリア同期パケットデータが生成される。この時、プロセッサノード３−４の軸ＩＤ決定回路１５６では軸ＩＤの値が１１、Ｘ軸バリア同期状態記憶手段１５２はオール０となる。
【００４９】
バリア同期パケットは、Ｙ軸に向けてプロセッサノード３−１からプロセッサノード３−１と３−４宛に、プロセッサノード３−２から自プロセッサノード３−２宛に、プロセッサノード３−３から自プロセッサノード３−３宛に、またプロセッサノード３−４からプロセッサノード３−１と３−４宛に送信される。
【００５０】
図１５に示すように、プロセッサノード３−１からプロセッサノード３−１と３−４宛てのバリア同期パケットにより、プロセッサノード３−１と３−４のＹ軸バリア同期状態記憶手段１５４のビット１の値が１にセットされ、プロセッサノード３−２から自プロセッサノード３−２宛てのバリア同期パケットにより、プロセッサノード３−２のＹ軸バリア同期状態記憶手段１５４のビット１の値が１にセットされ、プロセッサノード３−３から自プロセッサノード３−３宛てのバリア同期パケットにより、プロセッサノード３−３のＹ軸バリア同期状態記憶手段１５４のビット１の値が１にセットされる。
【００５１】
続いて、図１６に示すように、プロセッサノード３−４からプロセッサノード３−１と３−４宛てのバリア同期パケットにより、プロセッサノード３−１と３−４のＹ軸バリア同期状態記憶手段１５４のビット２の値が１にセットされる。
【００５２】
図１６は、バリア同期に参加したプロセッサノード３−１，３−２，３−３，３−４に関して、Ｙ軸バリア同期状態記憶手段１５４のビット列の値とＹ軸バリア同期参加記憶手段１５５のビット列の値が一致となり、Ｙ軸に関して同期が成立したことを表している。このＹ軸の同期成立を受け、軸ＩＤ決定回路１５６は、軸ＩＤの値が１１であるため、プロセッサに対してバリア同期の成立を通知する。
【００５３】
以上のようにして、バリア同期に参加したプロセッサノード３−１，３−２，３−３，３−４のすべてのノードが同一の同期点に達したことが通知される。なお、例えばバリア同期に参加するプロセッサノードを３−１，３−２，３−３とし、矩形モード設定記憶手段５を矩形有効を示す値の０とすると、図９の時点でバリア同期に参加したプロセッサノード３−１，３−２，３−３がすべて同一の同期点に達したことが通知されることになる。
【００５４】
以上、本発明の実施例について説明したが、本発明はこれに限定されるものでないことは云うまでもない。例えば、実施例では、バリア同期が起動されると、バリア同期パケットを、まずＸ軸に向けて送付するとしたが、Ｙ軸から送付することでもよい。また、並列計算機の構成は３×３である必要はなく、一般にＭ×Ｎ（Ｍ，Ｎは２以上の整数）の構成に適用可能である。
【００５５】
【発明の効果】
以上説明したように、本発明の並列計算機によれば、バリア同期を実施する場合、全ノードをバリア同期に参加させる必要がなくなり、また、矩形に存在するノード以外の形状を選択して実施することが可能になる。
【図面の簡単な説明】
【図１】本発明が適用される並列計算機の一つのプロセッサノードの構成例を示すブロック図である。
【図２】ハイパークロスバ方式で結合したネットワークの概念図である。
【図３】図１の実施例におけるバリア同期パケット送信に関係する構成の詳細ブロック図である。
【図４】図１の実施例におけるバリア同期パケット受信に関係する構成の詳細ブロック図である。
【図５】実施例の具体的動作説明図である。
【図６】実施例の具体的動作説明図である。
【図７】実施例の具体的動作説明図である。
【図８】実施例の具体的動作説明図である。
【図９】実施例の具体的動作説明図である。
【図１０】実施例の具体的動作説明図である。
【図１１】実施例の具体的動作説明図である。
【図１２】実施例の具体的動作説明図である。
【図１３】実施例の具体的動作説明図である。
【図１４】実施例の具体的動作説明図である。
【図１５】実施例の具体的動作説明図である。
【図１６】実施例の具体的動作説明図である。
【符号の説明】
１  Ｘ軸方向クロスバ
２  Ｙ軸方向クロスバ
３  プロセッサノード
４  バリア同期参加形状記憶手段
５  矩形分割モード記憶手段
６  バリア同期状態記憶手段
１１０  プロセッサ
１１１  メモリ
１１２  メモリ制御ユニット
１１３  通信ユニット
１３０  バリアパケット生成回路
１４０  入出力ポート
１５０  バリア同期管理回路
【図１】
0004117721.tif 000002
【図２】
0004117721.tif 000003
【図３】
0004117721.tif 000004
【図４】
0004117721.tif 000005
【図５】
0004117721.tif 000006
【図６】
0004117721.tif 000007
【図７】
0004117721.tif 000008
【図８】
0004117721.tif 000009
【図９】
0004117721.tif 000010
【図１０】
0004117721.tif 000011
【図１１】
0004117721.tif 000012
【図１２】
0004117721.tif 000013
【図１３】
0004117721.tif 000014
【図１４】
0004117721.tif 000015
【図１５】
0004117721.tif 000016
【図１６】
0004117721.tif 000017