【文献】
田中久陽,外4名,マルチホップセンサーネットワークのタイミング同期(2),電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2005年 3月18日,第104巻,第753号,(NLP2004-115〜124),Pages:7〜10
(58)【調査した分野】(Int.Cl.,DB名)
ネットワークで接続された、第1の装置を含む複数の装置間で同期をとるための、前記第1の装置のコンピュータ読み出し可能な非一時的記録媒体に格納されたコンピュータプログラムであって、前記第1の装置に、
前記第1の装置に関する情報である発行元装置情報を含み、前記第1の装置が同期点に到達したことを他の装置に通知する同期点到達通知を、前記他の装置へ送信するステップと、
前記第1の装置が前記他の装置から同期点到達通知を受信したときに、カウンタを1インクリメントし、前記他の装置から受信した同期点到達通知の発行元装置情報に基づいて待機時間を求め、タイマの値よりも前記待機時間の方が大きい場合には、前記待機時間を用いて前記タイマを更新するステップと、
前記タイマを0になるまで単位時間ごとにデクリメントするステップと、
前記第1の装置が前記同期点到達通知の送信を完了しており、前記カウンタが全装置数より1小さい値であり、前記タイマが0である場合に、同期処理の完了を判断するステップと
を実行させるためのコンピュータプログラム。
【背景技術】
【0002】
並列計算機システムでは、複数の計算機に処理を分散して割り当て、同時に計算や処理を行う。そのため、各計算機には、他の計算機と同期を計るための機能が必要となる。各計算機は、同期機能を備えることによって、他の計算機が一定の処理を終えたことを確認しながら処理を進めることができるようになる。
【0003】
例えば、全ての計算機が特定の処理が完了したことを確認してから、全ての計算機が次の処理を開始するようなバリア同期と呼ばれる手法が知られている(例えば、特許文献1参照。)。また、全計算機間で体系的にデータ通信を行うような広い意味での集団通信のアルゴリズムでは、全計算機が一斉に通信を開始することで所望の通信性能を得ることができる。このため、通信の開始時刻について計算機間で差があると、通信衝突が発生し、通信性能を向上させにくいことがあり得る。そのため、従来技術では、処理が終わったことを確認するだけでなく、次処理の開始タイミングをそろえるための同期処理も必要とされる。
【0004】
図15は、特許文献1に記載の同期方法を示す。特許文献1に記載の並列計算機システムは、ノード間ネットワークに、同期を制御する1つのマスタノードを有しており、該マスタノードは、同期に参加するノード数を保持している。各スレーブノードは、同期点に達すると、マスタノードに対して同期成立通知を送信する。同期成立通知を受信したマスタノードは、同期成立通知を受信するたびに1ずつ値をインクリメントする。同期成立通知を受信し、受信同期成立通知数が同期に参加するノード数と一致した場合、マスタノードは全ノードが同期点に到達したと判断する。そして、マスタノードは各スレーブノードに同期成立通知を送信する。各スレーブノードは同期成立通知を受信することで、同期成立を認識する。
【0005】
このように、従来の並列計算機システムでは、1台のマスタノードに同期処理を管理させる同期方法が一般的である。その場合、マスタノードは全ノードの同期成立を確認すると、全ノードに対して同期が成立したことを通知し、各ノードはマスタノードからの同期成立の通知の受信することで同期成立を確認していた。
【0006】
このような同期方式により、マスタノードから各スレーブノードに対する同期成立通知の通信時間が異なる場合、各計算機は、全計算機が同期点に到達したことを確認することはできる。しかしながら、各計算機が同期成立を確認する時刻は異なってしまう。そのため、各計算機間の処理タイミングを合わせる同期をとることができない。
【0007】
また、並列計算機システムの別の同期方法としては、マスタノードから各スレーブノードに対する通知の通信時間の差に起因する同期時刻のずれを発生させない方法が知られている(例えば、特許文献2参照。)。特許文献2には、ノード間ネットワークに接続された複数の計算機ノードからなる並列計算機システムにおいて、複数の計算機ノードで処理タイミングを合わせるための同期をとる方法が記載されている。
【0008】
図16は、特許文献2に記載の同期方法を示す。特許文献2に記載の同期方法では、マスタノードからスレーブノードに対して同期通知を転送することで同期をとる。マスタノードは、各スレーブノードに対して、同期通知を送信する。このとき、マスタノードは1つのスレーブノードに同期通知が到達するまでの時間だけ待機し、次のスレーブノードに対して同期通知を送信する。そしてマスタノードは最後のスレーブノードに同期通知を送信し、最後のスレーブノードが同期通知を受信するまで待機することで同期を完了して、次処理に移行する。一方、各スレーブノードは、マスタノードからの同期通知を受信後、まだ同期通知を受信していないスレーブノードがマスタノードから同期通知を受信するまでの時間だけ待機する。これにより、各ノードが同期処理を同時に完了し、次処理を同時に開始することができる。
【発明を実施するための形態】
【0020】
以下、実施の形態を説明する。以下の実施形態は発明の範囲を限定するものではない。また、実施形態の中で説明されている特徴及び組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0021】
図1は、一実施形態に係る並列計算機システム100の利用環境の一例を示す。並列計算機システム100は、複数の計算機ノード110a〜d(以下、計算機ノード110と総称する。)を備える。
【0022】
計算機ノード110aは、通信ケーブルを介して計算機ノード110bと電気的に接続されている。また、計算機ノード110bは、通信ケーブルを介して計算機ノード110cと電気的に接続されている。また、計算機ノード110cは、通信ケーブルを介して計算機ノード110dと電気的に接続されている。また、計算機ノード110dは、通信ケーブルを介して計算機ノード110aと電気的に接続されている。このようにして、計算機ノード110a〜dは、リング型ネットワークを構成している。
【0023】
並列計算機システム100では、各計算機ノード110が同期点に達したことを他の計算機ノード110に通知するための、同期点通知パケットをやりとりすることで同期処理を行う。これにより、並列計算機システム100では、同期の完了時刻を全計算機ノード110で統一することができる。
【0024】
次に、計算機ノード110a〜dの構成を説明するが、計算機ノード110a〜dは同一の構成であるため、計算機ノード110aを例に構成を説明する。
図2は、計算機ノード110aの構成を示した図である。計算機ノード110aは、計算をつかさどる「計算ユニット」と、通信をつかさどる「通信ユニット」から構成される。さらに通信ユニットは、計算機ノード110間、及び計算機ノード110内の計算ユニット間の同期機能を有する「同期制御装置10」、計算ユニットや他の計算機ノード110との通信パケットの入出力の機能を有する「入出力装置11」からなる。同期制御装置10は、入出力装置11を介して、他の計算機ノード110と同期点到達通知パケットの送受信が可能である。また、同期制御装置10は、計算ユニットが同期点に達したことを同期制御装置10に通知する「同期点到達信号」や、並列計算機システム100の同期処理が完了したことを計算ユニットに通知する「同期成立信号」を計算ユニットと直接通信することができる。
【0025】
次に、並列計算機システム100で扱う同期点到達通知パケットについて説明する。
図3で示すように、同期点到達通知パケットは、パケットが同期点到達通知パケットであることを示すパケット情報、発行元計算機ノード110を示す発行元ノード情報、パケットの宛先ノードを示す終点ノード情報を情報として持つ。同期点到達通知パケットは、発行元ノード110から、
図1が示すリング網にそって反時計回りに他の全ての計算機ノード110に転送される。例えば、計算機ノード110aが発行した同期点到達通知パケットは、計算機ノード110aから送信され、順に計算機ノード110b、計算機ノード110c、計算機ノード110dに転送される。したがって、計算機ノード110aが発行する同期点到達通知パケットの発行元計算機ノード情報は計算機ノード110aであり、終点ノード情報は計算機ノード110dとなる。
【0026】
また、並列計算機システム100では同期点到達通知パケットのみがやり取りされるわけではなく、他の制御パケットやデータパケットが送受信されてもよい。しかし、同期点到達通知パケットが他のパケットと競合し、同期点到達通知パケットの送受信に遅延がおきることはないものとする。そのため、本実施例では、計算機ノード110間のケーブルは複数チャネルから構成され、同期点到達通知パケットはそのなかの1チャネルを占有するものとする。ただし、上記の複数チャネル構成にするというものは、本発明の範囲を限定するものではない。
【0027】
入出力装置11では、他の計算機ノード110から同期点到達通知パケットを受信すると同期制御装置に対して出力する。また、同期点到達通知パケット以外のパケットを他の計算機ノード110から受信した場合は計算ユニットに対して出力する。一方で、計算ユニットから入力されたパケットは、パケットが情報として持つ宛先に届くように、あらかじめ決められたルーティングにしたがって計算機ノード110外に出力される。同期制御装置から同期点到達通知パケットが入力された場合は、先に記したとおり
図1が示すリング網にそって反時計回りに宛先ノードに届くように計算機ノード110外に出力される。
【0028】
次に、同期制御装置10が有する機能について、
図4に示すブロック図を参照して説明する。同期制御装置10は、他の計算機ノード110からの同期点到達通知パケットを受信する「同期点到達通知パケット受信部101」、自計算機ノード110及び他の計算機ノード110が発行した同期点到達通知パケットを他の計算機ノード110に対して出力する「同期点到達通知パケット送信部102」、直接接続する計算ユニットが同期点に到達したことを管理する「同期点到達通知部103」、受信した同期点到達通知パケットをもとに同期点に到達した計算機ノード110の数をカウントする「同期点到達ノード数カウンタ更新部104」及び「カウンタ105」、受信した同期点到達通知パケットの通知元を判定する「通知元判定部106」、同期処理の完了時刻までの最低待機時間を管理する「タイマ108」、及びタイマ108を更新する「同期処理完了タイマ更新部107」、同期処理が完了したことを判定する「同期処理完了判定部109」を機能として有する。以下、各機能の詳細を説明する。
【0029】
同期点到達通知パケット受信部101は、入出力装置より他計算機ノード110が発行した同期点到達通知パケットを受信する。同期点到達通知パケットを受信すると、同期点到達ノード数カウンタ更新部104に対して「カウンタ更新通知」を送り、通知元判定部106に対して同期点到達通知パケットの発行元ノード情報を通知する。また、同期点到達通知パケットの終点ノード情報を参照し、自計算機ノード110が終点ノードである場合は、受信した同期点到達通知パケットを破棄する。一方、自計算機ノード110が終点ノードでない場合は、受信した同期点到達通知を他の計算機ノード110に転送するために、同期点到達通知パケット送信部102に出力する。
【0030】
同期点到達通知部103では、計算ユニットが同期点に到達したときに計算ユニットが発行する「同期点到達命令」を受けることで「同期点到達通知処理」が実行される。同期点到達通知処理では、同期点到達ノード数カウンタ更新部104に対してカウンタ更新通知を送り、通知元判定部106に対して、自計算機ノード情報を通知する。また、発行元ノード情報を自計算機ノード情報、終点ノード情報を対応する終点ノード情報とする同期点到達通知パケットを生成し、同期点到達通知パケット送信部102に対して出力する。
【0031】
同期点到達通知パケット送信部102は、同期点到達通知パケット受信部101や同期点到達通知部103から同期点到達通知パケットを入出力装置11に出力する。
【0032】
同期点到達ノード数カウンタ更新部104は、同期点到達通知パケット受信部101や同期点到達通知部103からカウンタ更新通知を受けると、カウンタ105の値を1インクリメントする。なお、同期処理開始前のカウンタ値は0に初期化されている。
【0033】
通知元判定部106は、同期点到達通知パケット受信部101や同期点到達通知部103から受けとった発行元ノード情報を元に、同期処理が完了するまでに最低待機する必要のある時間を導出する機能を有する。導出した最低待機時間は、同期処理完了タイマ更新部107に受け渡し、同期処理完了タイマ更新部107は、「同期処理完了タイマ更新処理」によりタイマ108を更新する。通知元判定部106が導出する最低待機時間は、受信、もしくは自計算機ノード110で発行した同期点到達通知パケットが、宛先ノードに到達したことにより、宛先ノードのカウンタ105の値がインクリメントされるまでの時間である。例として
図5に、計算機ノード110aが同期点到達通知パケットを発行した場合のタイムタイムチャートを記す。計算機ノード110aが発行した同期点到達通知パケットは、順に計算機ノード110b、計算機ノード110c、計算機ノード110dに転送される。したがって、各計算機ノード110は、計算機ノード110dのカウンタ更新処理が完了するまでの時間を最低待機時間とする。本実施例では、各計算機ノード110が、発行元計算機ノード110を元に最低待機時間を参照するテーブルを保持することで、最低待機時間の導出を行う。
図6に、テーブルの例を記す。
【0034】
同期処理完了タイマ更新部107は、通知元判定部106より最低待機時間が入力されると、タイマ108の値より入力された最低待機時間の方が大きければ、タイマ108の値を入力された最低待機時間で更新する。
【0035】
タイマ108は、同期処理を完了させるまでに最低待機するべき時間をカウントしておくためのものである。タイマ108は、同期処理完了タイマ更新部107によって更新され、値が正である間は1クロックに1ずつ値をデクリメントする。なお、同期処理開始前のタイマ値は0に初期化されている。
【0036】
同期処理完了判定部109は、同期処理を完了するかどうかを判定する機能を有する。
同期処理完了判定部109は、同期処理を実施している間は常に、1クロック毎に「同期処理完了判定」を行う。同期処理完了判定で、同期処理完了可能と判定されれば、計算ユニットに対して同期成立信号を送り、同期処理を完了する。同期処理完了判定部では、カウンタ105のカウンタ値とタイマ108の最低待機時間を参照し、カウンタ値が全計算機ノード数の4に一致し、なおかつ、タイマの最低待機時間が0である場合に、同期処理完了可能と判定する。それ以外の場合、カウンタ値が全計算機ノード数の4に満たない場合や、タイマの最低待機時間が正数である場合は同期処理完了可能ではないと判定する。
また、同期処理を完了する際には、カウンタ105のカウンタ値を0に初期化する。
【0037】
次に、並列計算機システム100で同期処理を行った場合の動作例を記す。本動作例は、計算機ノード110a〜dがそれぞれ順に、時刻 80、120、20、200に同期点に到達して同期点到達通知パケットを発行した場合を例にとる。
図7に同期点到達通知パケットの送受信時刻を図示したタイムチャートを示す。
図8には、計算機ノード110a〜dが同期点到達通知パケットを送受信したときの、カウンタ105とタイマ108の様子を示すタイムチャートを記す。
【0038】
計算機ノード110aは、時刻80に同期点に到達し、同期点到達通知処理103により、同期点到達通知パケット(通知1)を発行する。このとき、同期点到達ノード数カウンタ更新部104によりカウンタ105は0から1に更新される。また、同期処理完了タイマ更新部107により、通知1が計算機ノード110dに到達するまでの時間300をタイマ108に設定する。時刻220に、計算機ノード110aは、計算機ノード110cが発行した同期点到達通知パケット(通知3)を受信する。これにより、ノード数カウンタ更新部104はカウンタ105の値を1から2に更新する。また、このときカウンタ値は時刻80から140クロック経過しているため160(=300−140)になっている。同期処理完了タイマ更新部107は、通知3が計算機ノード110bに到達するまでの時間100よりタイマ値の方が大きいためタイマ値の更新はしない。時刻300では、計算機ノード110aは、計算機ノード110dが発行した同期点到達通知パケット(通知4)を受信する。これにより、ノード数カウンタ更新部104はカウンタ105の値を2から3に更新する。また、このときカウンタ値は、時刻220から80クロック経過しているために80(=160−80)になっている。同期処理完了タイマ更新部107は、通知4が計算機ノード110cに到達するまでの時間200の方が、タイマ値より大きいためタイマ値を200に更新する。時刻420では、計算機ノード110aは、計算機ノード110bが発行した同期点到達通知パケット(通知2)を受信する。これにより、ノード数カウンタ更新部104はカウンタ105の値を3から4に更新する。また、このときのカウンタ値は、時刻300から120クロック経過しているために80(=200−120)になっている。同期処理完了タイマ更新部107では、計算機ノード110aが通知2の宛先ノードであるため、タイマの値は更新しない。時刻420から80クロック経過した時刻500に、カウンタ値が4かつタイマ値が0になるので、同期処理完了判定部109により同期処理完了可能と判定し、同期処理は完了する。
【0039】
図8でわかるように、計算機ノード110b、計算機ノード110c、計算機ノード110dも同様に時刻500に、カウンタ値が4、タイマ値が0になり同期処理は完了する。このように、並列計算機システム100は、全計算機ノード110で同期処理の完了時刻を同じにすることができる。
【0040】
図9は、別の実施形態に係る並列計算機システム200の利用環境の一例を示す。並列計算機システム200は、複数の計算機ノード210a〜p(以下、計算機ノード210と総称する。)。
【0041】
並列計算機システム200は、計算と通信の機能を備えた16個の計算機ノード210a〜pが2次元トーラス型のネットワークで接続された構成になっている。16台の計算機ノード210がX次元方向に4ノードずつ、Y次元方向に4ノードずつ接続されている。
【0042】
X次元方向の接続は、計算機ノード210a、b、c、dの4台が、a−b−c−d−aというリング接続になっており、同様に計算機ノード210e、f、g、hの4台、計算機ノード210i、j、k、lの4台、計算機ノード210m、n、o、pの4台がリング接続になっている。また、Y次元方向には、計算機ノード210a、e、i、mの4台、計算機ノード210b、f、j、nの4台、計算機ノード210c、g、k、oの4台、計算機ノード210d、h、l、pの4台がリングで接続した構成になっている。X次元方向、Y次元方向ともに、隣接する計算機ノード210間の通信レイテンシは、どの計算機ノード210間も同じである。
【0043】
並列計算機システム200の同期処理は、各計算機ノード210がX次元方向の同期、Y次元方向ノードの同期という2段階の同期を行うものである。並列計算機システム200の同期処理も、並列計算機システム100と同様に、同期点到達通知パケットを計算機ノード210間でやり取りすることで同期処理を行うものであり、同期処理の完了時刻を全計算機ノード210で同じにできるという特徴がある。
【0044】
計算機ノード210a〜計算機ノード210pは、同一の構成である。以下に、計算機ノード210aを例に構成を説明する。
図10は、計算機ノード210aの構成を示した図である。計算機ノード210aは、計算をつかさどる「計算ユニット」と、通信をつかさどる「通信ユニット」から構成される。さらに、通信ユニットは、計算機ノード210間、及び計算機ノード210内の計算ユニット間の同期機能を有する「同期制御装置20」、計算ユニットや他の計算機ノード210との通信パケットの入出力の機能を有する「入出力装置21」からなる。同期制御装置20は、入出力装置21を介して、他の計算機ノード210と同期点到達通知パケットの送受信が可能である。また、同期制御装置20は、計算ユニットが同期点に達したことを同期制御装置20に通知する同期点到達信号や、並列計算機システム200の同期処理が完了したことを計算ユニットに通知する同期成立信号を計算ユニットと直接通信することができる。
【0045】
次に、並列計算機システム200で扱う同期点到達通知パケットについて説明する。
図11で示すように、同期点到達通知パケットは、パケットが同期点到達通知パケットであることを示すパケット情報、X次元とY次元のどちらの段階の同期であるかを示す同期次元情報、パケットの発行元計算機ノードを示す発行元ノード情報、パケットの宛先ノードを示す終点ノード情報を情報として持つ。同期点到達通知パケットは、X次元では
図9の図面上で右側の計算機ノード210に転送される。また、Y次元では、
図9の図面上で下側の計算機ノード210に転送される。例えば、計算機ノード210fがX次元方向の同期のために発行した同期点到達通知パケットは、計算機ノード210fから計算機ノード210g、h、eへと順に転送され、計算機ノード210fがY次元方向の同期のために発行した同期点到達通知パケットは、計算機ノード210fから計算機ノード210j、n、bへと順に転送される。
【0046】
次に、同期制御装置20が有する機能について、
図12に示すブロック図を参照して説明する。同期制御装置20は、
図4で示す並列計算機システム100の同期制御装置10とほぼ同一の構成となっている。したがって、同期制御装置10との差異について説明する。計算機システム200では、X次元方向の同期とY次元方向の同期という2段階の同期を行うことで、システム全体の同期を行う。したがって、同期制御装置20においては、X次元とY次元の2つの同期ができるようになっている。具体的には、カウンタ205やタイマ208は、X次元用とY次元用の2つのカウンタ・タイマを有している。
【0047】
同期点到達通知部203は、計算ユニットからの同期点到達命令や、同期処理完了判定部209からX次元方向の同期完了信号を受け取った場合に、同期点到達通知パケットを発行する。計算ユニットからの同期点到達命令を受けた場合は、X次元方向の同期処理を開始するため、発行する同期点到達パケットの同期次元情報をX次元として発行する。一方、同期処理完了判定部209からX次元方向の同期完了信号を受け取った場合は、Y次元方向の同期処理を開始するため、発行する同期点到達パケットの同期次元情報をY次元として発行する。また、同期点到達ノード数カウンタ更新部204へのカウンタ更新通知や、通知元判定部206への計算機ノード情報を通知するときに、同期次元情報も付与して通知する。
【0048】
また、同期点到達通知パケット受信部201から、同期点到達ノード数カウンタ更新部204へカウンタ更新通知を通知する場合や、通知元判定部106に対して、同期点到達通知パケットの発行元ノード情報を通知する場合にも、同期次元情報を付与して通知する。
【0049】
同期点到達ノード数カウンタ更新部204は、同期点到達通知パケット受信部201や同期点到達通知部203からカウンタ更新通知と同期次元情報を受けると、カウンタ205の同期次元情報が指定する次元側のカウンタ値を1インクリメントする。
【0050】
通知元判定部206は、同期点到達通知パケット受信部201や同期点到達通知パケット203から発行元ノード情報と同期次元情報を受けると、タイマ更新部207に通知するタイマの更新値を導出する。導出するタイマ更新値は、対応する同期点到達通知パケットが終点ノードに到達するまでの時間である。タイマの更新値を導出すると、タイマ更新部207に対して、更新値及び同期次元情報を通知する。タイマ更新部207は、受け取ったタイマ値が同期次元情報の指定する次元のタイマ208の値より大きければ、通知元判定部206から受けたタイマ更新値で更新する。
【0051】
タイマ208は、1クロックに1度、X次元とY次元の2つのタイマ値それぞれを、正数である間1ずつデクリメントする。
【0052】
同期処理完了判定部209は、同期処理を実施している間は、1クロック毎に「同期処理完了判定」を行う。同期処理完了判定で、X次元同期処理完了可能と判定されれば、同期点到達通知処理203に対して、X次元同期処理完了通知を通知し、カウンタ205のX次元のカウンタ値を0に初期化する。また、同期処理完了判定で、Y次元同期処理完了可能と判定されれば、計算ユニットに対して、同期成立信号を送り、カウンタ205のY次元のカウンタ値を0に初期化し、同期処理を完了する。同期処理完了判定では、カウンタ205のカウンタ値とタイマ208のタイマ値を参照する。カウンタ205のX次元のカウンタ値がX次元方向に接続された計算機ノード数の4であり、タイマ208のX次元のタイマ値が0であれば、X次元同期処理完了可能と判定する。カウンタ205のY次元のカウンタ値がY次元方向に接続された計算機ノード数の4であり、タイマ208のY次元のタイマ値が0であれば、Y次元同期処理完了可能と判定する。
【0053】
次に、並列計算機システム200で同期処理を行った場合の動作例を記す。並列計算機システム200は、隣接する各計算機ノード210間での同期点到達通知パケットのレイテンシは一定である。このレイテンシが100クロックであるとする。X次元方向もしくはY次元方向に接続された4つの計算機ノード210間で同期をとると、4つの計算機ノード210のうち最も遅く同期点到達通知パケットを発行した時刻から300クロック後に、4つの計算機ノード210が同時に同期処理を完了することができる。
図13には、本動作例の同期処理において、各計算機ノード210の計算ユニットが同期点に達して同期処理通知部203が同期点到達通知パケットを発行する時刻(同期点到達時刻)、同期処理完了判定部209がX次元方向の同期処理完了を判定する時刻(X次元同期完了時刻)、同期処理完了判定部209がY次元方向の同期処理完了を判定する時刻、つまり並列計算機システム200全体の同期処理の完了を判定する時刻(同期処理完了時刻)の3つの時刻を示した表を示す。各計算機ノード210は、同期点に到達すると、X次元方向の計算機ノード210との同期処理を開始する。このX次元方向の同期処理は、X次元方向に接続された4つの計算機ノード210のうち最も遅く同期点に到達した時刻の300クロック後に、4つの計算機ノード210が同時に同期処理を完了する。X次元方向の同期処理が完了すると、即座にY次元方向の同期処理のために同期点到達通知パケットを発行する。したがって、X次元方向に接続された計算機ノード210は同時にX次元方向の同期処理を完了するので、同時にY次元方向の同期処理のための同期点到達通知パケットを発行できる。X次元方向に接続された4つの計算機ノード210が同時にY次元方向の同期処理を開始するため、4個のY次元方向の同期処理は、同じタイムチャートを描くことになる。例えば、計算機ノード210a、b、c、dがそれぞれ時刻450に同期点到達通知パケットをY次元方向に送信すると、計算機ノード210e、f、g、hがそれぞれ時刻550に同期点到達通知パケットを受信する。このように、4個のY次元方向の同期処理が同タイミングで処理されるため、4個のY次元方向の同期処理は完了時刻が同じになる。また、それぞれの同期処理は、参加する4つの計算機ノード210ともに同時に同期処理を完了できるので、並列計算機システム200の16台の計算機ノード210全てが同時に同期処理を完了することができる。
【0054】
以上のように、上記の同期方法を用いれば、全計算機ノード210間で同期処理を同時に完了することができる。
【0055】
また、上記の同期方法を用いれば、従来技術の同期処理より高速に同期をとることができる。例えば、第1の実施形態の並列計算機システム100における同期処理の動作例1を考えてみる。前提として、従来技術の同期通知と本実施例の同期点到達通知は同じ通信レイテンシであるとする。もし、従来技術の同期方式で同期をとる場合、ノード110aがマスタノードであったとすると、全スレーブノードから同期通知が到達するのは、時刻420である。マスタノードであるノード110aは、時刻420に同期成立通知をスレーブノードに対して送信するが、最も遠くにあるノード110dに到達するには300クロックかかるため、同期処理が完了するのは時刻720となってしまう。このように上記の同期方法を用いた方が早く同期処理を完了できる。
【0056】
また、従来技術のようにマスタ‐スレーブ型の同期処理では、マスタノードに全計算機ノードからの同期点到達通知が集中していたが、上記の同期方法では、各計算機が協調して同期処理を行うため負荷が分散されている。例えば、第2の実施例の並列計算機システム200の同期処理では、各計算機ノード210は、高々6個の同期点到達通知パケットを受信しない。一方で、並列計算機システム200と同様に16台の計算機ノード210が従来技術の同期方法で同期処理を行おうとすると、マスタノードに15個の同期通知が集中する。たとえば、さらに規模を大きくして、3次元トーラス網で接続された4096(=16×16×16)台の計算機ノード210で同期をとる場合、上記の同期方式では、各計算機ノード210それぞれが45(=(16−1)×3)個の同期点到達通知パケットを受信すればよいが、従来技術の同期方式では4095個もの同期通知を処理しなければならない。
【0057】
図14は、計算機ノード110及び計算機ノード210をコンピュータ等の電子情報処理装置でそれぞれ構成した場合のハードウェア構成の一例を示す。計算機ノード210及び計算機ノード210は、CPU(Central Processing Unit)周辺部と、入出力部と、レガシー入出力部とを備える。CPU周辺部は、ホスト・コントローラ901により相互に接続されるCPU902、RAM(Random Access Memory)903、グラフィック・コントローラ904、及び表示装置905を有する。入出力部は、入出力コントローラ906によりホスト・コントローラ901に接続される通信インターフェイス907、ハードディスクドライブ908、及びCD−ROM(Compact Disk Read Only Memory)ドライブ909を有する。レガシー入出力部は、入出力コントローラ906に接続されるROM(Read
Only Memory)910、フレキシブルディスク・ドライブ911、及び入出力チップ912を有する。
【0058】
ホスト・コントローラ901は、RAM903と、高い転送レートでRAM903をアクセスするCPU902、及びグラフィック・コントローラ904とを接続する。CPU902は、ROM910、及びRAM903に格納されたプログラムに基づいて動作して、各部の制御をする。グラフィック・コントローラ904は、CPU902等がRAM903内に設けたフレーム・バッファ上に生成する画像データを取得して、表示装置905上に表示させる。これに代えて、グラフィック・コントローラ904は、CPU902等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【0059】
入出力コントローラ906は、ホスト・コントローラ901と、比較的高速な入出力装置であるハードディスクドライブ908、通信インターフェイス907、CD−ROMドライブ909を接続する。ハードディスクドライブ908は、CPU902が使用するプログラム、及びデータを格納する。通信インターフェイス907は、ネットワーク通信装置991に接続してプログラム又はデータを送受信する。CD−ROMドライブ909は、CD−ROM992からプログラム又はデータを読み取り、RAM903を介してハードディスクドライブ908、及び通信インターフェイス907に提供する。
【0060】
入出力コントローラ906には、ROM910と、フレキシブルディスク・ドライブ911、及び入出力チップ912の比較的低速な入出力装置とが接続される。ROM910は、計算機ノード110及び計算機ノード210が起動時に実行するブート・プログラム、あるいは計算機ノード110及び計算機ノード210のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ911は、フレキシブルディスク993からプログラム又はデータを読み取り、RAM903を介してハードディスクドライブ908、及び通信インターフェイス907に提供する。入出力チップ912は、フレキシブルディスク・ドライブ911、あるいはパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
【0061】
CPU902が実行するプログラムは、フレキシブルディスク993、CD−ROM992、又はIC(Integrated Circuit)カード等の記録媒体に格納されて利用者によって提供される。記録媒体に格納されたプログラムは圧縮されていても非圧縮であってもよい。プログラムは、記録媒体からハードディスクドライブ908にインストールされ、RAM903に読み出されてCPU902により実行される。CPU902により実行されるプログラムは、計算機ノード110を、
図1から
図8に関連して説明した通信ユニット及び計算ユニットとして機能させる。同様に、CPU902により実行されるプログラムは、計算機ノード210を、
図9から
図13に関連して説明した通信ユニット及び計算ユニットとして機能させる。
【0062】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク993、CD−ROM992の他に、DVD(Digital Versatile Disk)又はPD(Phase Disk)等の光学記録媒体、MD(MiniDisk)等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークあるいはインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶媒体を記録媒体として使用して、ネットワークを介したプログラムとして計算機システム100を提供してもよい。
【0063】
以上、各実施の形態を説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能である。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得る。