(57)【要約】【課題】連続した複数のバリア同期処理を高速化する情報処理装置、同期装置及び情報処理装置の制御方法を提供する。【解決手段】  状態管理部１１４は、次処理段階に同期処理を進める際に、宛先ステータス１２４における後段設定情報管理領域の使用状態を使用中にし、後段設定情報管理領域を有するノード１から解放通知を受信すると宛先ステータス１２４における後段設定情報管理領域の使用状態を未使用にする。同期制御部１１３は、記同期処理が所定処理段階に移行した場合、宛先ステータス１２４における後段設定情報管理領域の使用状態が未使用であれば、制御レジスタ１２０に格納された設定情報を基に所定処理段階における処理を実行して次処理段階に同期処理を進め、制御レジスタ１２０の前記解放通知を出力する。【選択図】図５
2020181249.tif 000002
【特許請求の範囲】
【請求項１】
演算処理装置、記憶装置及び段階的に処理される複数の処理段階を含む同期処理を実行する同期装置を有する情報処理装置であって、
前記演算処理装置は、
前記記憶装置を用いて演算処理を実行する演算実行部と、
前記同期処理の所定処理段階で用いる設定情報を前記同期装置に送信し、且つ、前記演算処理における前記同期処理の実行を前記同期装置に指示する設定処理部とを備え、
前記同期装置は、
前記設定処理部から受信した前記設定情報を管理する設定情報管理領域と、
前記所定処理段階の次処理段階で使用される後段設定情報管理領域の使用状態を記憶する使用状態記憶部と、
前記次処理段階に前記同期処理を進める際に、前記使用状態記憶部における前記後段設定情報管理領域の使用状態を使用中にし、前記後段設定情報管理領域を有する情報処理装置から解放通知を受信すると前記使用状態記憶部における前記後段設定情報管理領域の使用状態を未使用にする状態管理部と、
前記同期処理が前記所定処理段階に移行した場合、前記使用状態記憶部における前記後段設定情報管理領域の使用状態が未使用であれば、前記設定情報管理領域に格納された前記設定情報を基に前記所定処理段階における処理を実行して前記次処理段階に同期処理を進め、前記設定情報管理領域の前記解放通知を出力する同期制御部とを備えた
ことを特徴とする情報処理装置。
【請求項２】
同期の待ち合わせ状態情報を保持する同期状態保持部と、
前記後段設定情報管理領域を有する情報処理装置から同期用信号を受信すると、前記後段設定情報管理領域からの同期用信号の受信情報を前記同期状態保持部に待ち合わせ状態情報に登録する状態管理部とをさらに備え
前記同期制御部は、前記同期状態保持部が保持する前記待ち合わせ状態情報を基に前記次処理段階に同期処理を進めるか否かを判定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記同期制御部は、前記同期処理が完了した場合、前記演算処理装置へ同期処理完了を通知し、
前記演算実行部は、前記演算処理において前記同期処理を用いる場合、前記同期処理の開始を前記設定処理部へ指示し、前記同期処理完了の通知を前記同期制御部から受信することで前記同期制御部による同期処理の完了を確認する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
段階的に処理される複数の処理段階を含む同期処理を実行する同期装置であって、
前記同期処理の所定処理段階で用いる設定情報を管理する設定情報管理領域と、
前記所定処理段階の次処理段階で使用される後段設定情報管理領域の使用状態を記憶する使用状態記憶部と、
前記次処理段階に前記同期処理を進める際に、前記使用状態記憶部における前記後段設定情報管理領域の使用状態を使用中にし、前記後段設定情報管理領域を有する情報処理装置から解放通知を受信すると前記使用状態記憶部における前記後段設定情報管理領域の使用状態を未使用にする状態管理部と、
前記同期処理が前記所定処理段階に移行した場合、前記使用状態記憶部における前記後段設定情報管理領域の使用状態が未使用であれば、前記設定情報管理領域に格納された前記設定情報を基に前記所定処理段階における処理を実行して前記次処理段階に同期処理を進め、前記設定情報管理領域の前記解放通知を出力する同期制御部と
を備えたことを特徴とする同期装置。
【請求項５】
演算処理装置、記憶装置及び段階的に処理される複数の処理段階を含む同期処理を実行する同期装置を有する情報処理装置の制御方法であって、
前記演算処理装置に、
前記記憶装置を用いて演算処理を実行させ、
前記演算処理において同期処理を実行する場合、前記同期処理の所定処理段階で用いる設定情報を前記同期装置へ送信させ、且つ、前記同期処理の実行の指示を前記同期装置へ送信させ、
前記同期装置に、
前記演算処理装置から受信した前記設定情報を設定情報管理領域に格納させ、
前記所定処理段階の次処理段階で使用される後段設定情報管理領域の使用状態を記憶させ、
前記次処理段階に前記同期処理を進める際に、前記後段設定情報管理領域の使用状態を使用中にさせ、前記後段設定情報管理領域を有する情報処理装置から解放通知を受信すると前記後段設定情報管理領域の使用状態を未使用にさせ、
前記同期処理が前記所定処理段階に移行した場合、前記後段設定情報管理領域の使用状態が未使用であれば、前記設定情報管理領域に格納された前記設定情報を基に前記所定処理段階における処理を実行させて前記次処理段階に同期処理を進めさせ、前記解放通知を出力させる
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、同期装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ＨＰＣ（High  Performance  Computing）などの分野では単体のプロセスを計算するだけでなく、複数のプロセスが協調して並列計算を行うことが多い。このような場合、プロセス同士が協調して計算を行うためにプロセス間で通信が行われる。プロセス間の通信では１対１の通信だけでなく１対ＮやＮ対ＮやＮ対１などの集団通信も存在する。
【０００３】
集団通信を行う際にプロセス間の同期を取る方法としてバリア同期が存在する。バリア同期は、各プロセスが実行する処理の進行具合を合わせるために使用する同期手法である。バリア同期では、バリアポイントと呼ばれる各プロセスにおける同期をとるポイントが設定される。バリア同期を行うそれぞれのプロセスにおいて、処理がバリアポイントに到達すると、そのプロセスは同期処理を開始する。そして、通信を行うことで同期をとる全てのプロセスがバリアポイントに到達したことを認識する。これにより、並列処理される複数のプロセス間で同期をとることができる。
【０００４】
バリア同期を高速化させるための専用ハードウェアが存在する。一方で、ソフトウェアでも、バリア同期を含む集団通信におけるノンブロッキング通信がフレームワークとして定義されるなど集団通信の高速化、高機能化に大きな期待が寄せられている。
【０００５】
さらに、バリア同期に関する技術として、バリアポイントに達したプロセスがメッセージを送出し、各プロセスは受信したメッセージの数を基にバリア同期が完了したか否かを判定する従来技術がある。また、スレッドがバリアポイントに達すると同期用領域に通知をセットし、他のスレッドの同期用領域を確認して両方併せて同期が完了したかを確認して同期用領域に通知をセットすることを繰り返して同期の完了を判定する従来技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２８２１８９号公報
【特許文献２】特開２０１０−２８２１９０号公報
【特許文献３】特開２００８−２９５１１５号公報
【特許文献４】特開平７−１５２７１２号公報
【特許文献５】特開２００３−１０８３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のバリア同期装置は、バリア同期処理の開始でレジスタなどの資源のロックを行い、バリア同期処理の完了で資源を開放する仕組みであった。そのため、従来のバリア同期装置は、連続した複数のバリア同期処理を行う場合、１つ１つのバリア同期処理が完了しなければ次のバリア同期処理を行うことが困難であった。
【０００８】
これに対して、近年バリア同期処理を複数のステージに分けることができるようになった。しかし、従来のバリア同期装置では、バリア同期処理の途中で資源を開放することは行われておらず、同じ資源を使用する場合は１つのバリア同期処理を完了させてから次のバリア同期処理を行うことは避けられなかった。そのため、従来のバリア同期装置では、バリア同期処理を高速化させることは困難である。また、ハードウェアやソフトウェアを使用してバリア同期処理を高速化する従来技術であっても、同じ資源を使用するには１つのバリア同期処理を完了させてから次のバリア同期処理を行うため、バリア同期処理を高速化させることは困難である。
【０００９】
さらに、受信したメッセージの数を基にバリア同期の完了を判定する従来技術であっても、同じ資源を使用するには１つのバリア同期処理を完了させてから次のバリア同期処理を行うため、バリア同期処理を高速化させることは困難である。これは、同期用領域を用いてバリア同期処理の完了を判定する従来技術であっても同様である。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、連続した複数のバリア同期処理の場合であっても処理を高速化することが可能な情報処理装置、同期装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する情報処理装置、同期装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、演算処理装置、記憶装置及び段階的に処理される複数の処理段階を含む同期処理を実行する同期装置を有する。前記演算処理装置は、前記記憶装置を用いて演算処理を実行する演算実行部と、前記同期処理の所定処理段階で用いる設定情報を前記同期装置に送信し、且つ、前記演算処理における前記同期処理の実行を前記同期装置に指示する設定処理部とを備える。前記同期装置は、以下の各部を備える。設定情報管理領域は、前記設定処理部から受信した前記設定情報を管理する。使用状態記憶部は、前記所定処理段階の次処理段階で使用される後段設定情報管理領域の使用状態を記憶する。状態管理部は、前記次処理段階に前記同期処理を進める際に、前記使用状態記憶部における前記後段設定情報管理領域の使用状態を使用中にし、前記後段設定情報管理領域を有する情報処理装置から解放通知を受信すると前記使用状態記憶部における前記後段設定情報管理領域の使用状態を未使用にする。同期制御部は、前記同期処理が前記所定処理段階に移行した場合、前記使用状態記憶部における前記後段設定情報管理領域の使用状態が未使用であれば、前記設定状態情報管理領域に格納された前記設定情報を基に前記所定処理段階における処理を実行して前記次処理段階に同期処理を進め、前記設定情報管理領域の前記解放通知を出力する。
【発明の効果】
【００１２】
１つの側面では、本発明は、連続した複数のバリア同期処理を高速化することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】図１は、バリア同期を実行する情報処理システムの一例を表すシステム構成図である。
【図２】図２は、ノードのブロック図である。
【図３】図３は、４つのプロセスがバタフライ演算により同期処理を実行する場合の処理の流れを示す図である。
【図４】図４は、実施例に係るバリア同期装置のブロック図である。
【図５】図５は、同期部の詳細を表すブロック図である。
【図６】図６は、プロセスにより使用される制御レジスタのステージ毎の遷移を表す図である。
【図７】図７は、バリア同期処理の高速化について説明するための図である。
【図８】図８は、実施例に係るバリア同期装置によるバリア同期処理全体のフローチャートである。
【図９】図９は、実施例に係るバリア同期装置による受信側処理のフローチャートである。
【図１０】図１０は、実施例に係るバリア同期装置による送信側処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する情報処理装置、同期装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、同期装置及び情報処理装置の制御方法が限定されるものではない。
【実施例１】
【００１５】
図１は、バリア同期を実行する情報処理システムの一例を表すシステム構成図である。ノード１〜４は、演算を実行する情報処理装置である。ノード１〜４は、ネットワーク５に接続される。ノード１〜４は、ネットワーク５を介してデータを相互に送受信する。ノード１〜４は、いずれもバリア同期に関して同じ機能を有する。以下では、ノード１を例に説明する。
【００１６】
図２は、ノードのブロック図である。ノード１は、バリア同期装置１０、演算処理部であるＣＰＵ１１、記憶装置であるメモリ１２、システム制御部１３、ネットワークインタフェース１４及び入出力装置１５を有する。バリア同期装置１０が、「同期装置」の一例にあたる。
【００１７】
ＣＰＵ１１は、システム制御部１３とバスで接続される。そして、ＣＰＵ１１は、システム制御部１３を介して、バリア同期装置１０、メモリ１２及び入出力装置１５と通信を行う。ＣＰＵ１１は、設定処理部１６及び演算実行部１７を有する。
【００１８】
演算実行部１７は、ノード２〜４のＣＰＵ１１と協調して並列計算を実行する。例えば、演算実行部１７は、演算処理において１つ又は複数のプロセスをメモリ１２上に展開して動作させる。ここで、プロセスとは、演算処理を行わせるプログラムに演算に使用する資源が割り当てられた状態であり、プログラムが実行された状態を表す概念と考えることができる。例えば、並列計算には複数の演算処理を実行させる複数のプログラムが含まれる。そして、各演算処理に対してプロセスが生成される。さらに、１つのプログラムの中には１つ又は複数の命令が含まれる。そして、プロセスの中における命令の実行を表す概念をスレッドと言う場合がある。すなわち、プロセスの中には、１つ又は複数のスレッドが含まれる。また、プログラムにより行われる演算処理をジョブと言う場合もある。
【００１９】
演算実行部１７は、例えば並列計算の実行中に、動作させるプロセスについてバリア同期の実行を決定する。具体的には、演算実行部１７は、各プロセスがそれぞれのバリアポイントに到達すると、バリア同期の処理を開始する。その後、演算実行部１７は、システム制御部１３を介してバリア同期成立通知をバリア同期装置１０から受信する。そして、演算実行部１７は、各プロセスからのバリア同期成立通知が揃うと、バリア同期処理の結果を用いて演算処理を実行する。ここで、同じプロセスが複数回のバリア同期処理を繰り返し行う場合もある。
【００２０】
設定処理部１６は、入出力装置１５を用いて操作者により入力されたバリア同期に用いる設定条件の入力をシステム制御部１３から受ける。ここで、設定条件には、バリア同期に用いる同期信号のバリア同期処理の各処理段階における接続元及び宛先の情報が含まれる。この情報については後で詳細に説明する。さらに、設定条件には、バリア同期処理のアルゴリズム及び実行条件が含まれる。
【００２１】
設定処理部１６は、システム制御部１３を介してバリア同期に用いる設定条件をバリア同期装置１０に送信する。さらに、設定処理部１６は、演算実行部１１からの指示を受けて、システム制御部１３を介してバリアポイント到達通知をバリア同期装置１０に送信する。
【００２２】
システム制御部１３は、ノード１において実行される各種処理の統括制御を行う。例えば、システム制御部１３は、ＣＰＵ１１とバリア同期装置１０、メモリ１２及び入出力装置１５との間のデータの送受信を中継する。
【００２３】
メモリ１２は、演算実行部１７が実行する並列計算のプログラムなどを含む各種プログラムを格納する。また、メモリ１２の上には、演算実行部１７により並列計算におけるプロセスが展開され実行される。さらに、メモリ１２は、並列演算で使用するデータ及び演算結果などの各種データを格納する。
【００２４】
入出力装置１５は、例えば、キーボード、マウス及びディスプレイなどを有する。入出力装置１５は、操作者がキーボードなどを用いて入力されたデータをシステム制御部１３を介してＣＰＵ１１へ送信する。また、入出力装置１５は、ＣＰＵ１１からシステム制御部１３を介して送信されたデータをディスプレイなどに表示させる。
【００２５】
バリア同期装置１０は、システム制御部１３及びネットワークインタフェース１４に接続される。バリア同期装置１０は、ネットワークインタフェース１４を介してネットワーク５に接続する。そして、バリア同期装置１０は、ネットワーク５を介して他のノード２〜４のバリア同期装置１０と通信を行う。
【００２６】
バリア同期装置１０は、ＣＰＵ１１の設定処理部１６から送信されたバリア同期に用いる設定条件をシステム制御部１３を介して受信する。さらに、バリア同期装置１０は、各プロセスのバリアポイント到達通知をシステム制御部１３を介して受信する。そして、バリア同期装置１０は、設定条件にしたがってバリア同期処理を実行する。
【００２７】
バリア同期処理には、ノード１内で動作する複数のプロセス間のバリア同期処理及びネットワーク５を介して他のバリア同期装置１０と通信を行うことでノード２〜４で動作するプロセスとの間でのバリア同期処理の双方もしくはいずれかが１つ又は複数含まれる。自装置内でのバリア同期処理も、ネットワークを介した通信を自装置間の通信と置き換えれば、ネットワーク他のノード２〜４との間のバリア同期処理と同様に考えることができる。以下では、主に他のノード２〜４との間のバリア同期処理について説明するが、自装置内でのバリア同期処理も同様である。
【００２８】
ここで、本実施例に係るバリア同期装置１０は、図３に示すバタフライ演算のアルゴリズムにしたがってバリア同期処理を実行する。図３は、４つのプロセスがバタフライ演算により同期処理を実行する場合の処理の流れを示す図である。ただし、ここで、説明するバタフライ演算は、バリア同期処理のアルゴリズムの一例であり、バリア同期装置１０は、他のアルゴリズムを用いてバリア同期処理を行ってもよい。
【００２９】
例えば、プロセスＰ０は、バリアポイントに達すると、同期処理を開始するステージＴ１における処理を実行する。次に、プロセスＰ０は、プロセスＰ０とＰ１との同期をとるステージＴ２における処理を実行する。例えば同期処理がリダクション演算であれば、プロセスＰ０及びプロセスＰ１は、演算に用いるデータを待ち合わせ、指定された演算を行い、その演算結果を保持する。次に、プロセスＰ０は、プロセスＰ０及びＰ１の同期完了通知とプロセスＰ２及びＰ３の同期完了通知とを待ち合わせるステージＴ３における処理を実行する。例えば同期処理がリダクション演算であれば、プロセスＰ０及びプロセスＰ２は、演算に用いるデータを待ち合わせ、指定された演算を行い、その演算結果を保持する。これにより、プロセスＰ０〜Ｐ３間のバリア同期処理が完了する。ただし、データの受け渡しを行わない同期処理もあり、その場合は、プロセスＰ０〜Ｐ４の間で、通知が行われる。
【００３０】
ここで、本実施例では、プロセスによるバリア同期処理として説明したが、並列計算における演算処理を実行する対象であれば他のものであっても同様である。例えば、ここで説明するバリア同期処理は、ジョブやスレッドによるバリア同期処理として考えることも可能である。
【００３１】
以下に、バリア同期装置１０によるバリア同期処理の詳細について説明する。図４は、実施例に係るバリア同期装置のブロック図である。バリア同期装置１０は、同期部１００、受信部１０１及び送信部１０２を有する。バリア同期装置１０は、例えば、ＬＳＩ（Large  Scale  Integrated  Circuit）により実現される。
【００３２】
受信部１０１は、ネットワーク５に接続される。受信部１０１は、例えば、他のノード２〜４のバリア同期装置１０の送信部１０２から送信された同期信号や解放通知をネットワーク５を介して受信する。受信部１０１は、受信した同期信号や解放通知を同期部１００へ出力する。
【００３３】
送信部１０２は、ネットワーク５に接続される。送信部１０２は、例えば、同期信号や解放通知の入力を同期部１００から受ける。そして、送信部１０２は、取得した同期信号や解放通知をネットワーク５を介して他のノード２〜４のバリア同期装置１０の受信部１０１に向けて送信する。
【００３４】
図５は、同期部の詳細を表すブロック図である。同期部１００は、制御部１１０及び制御レジスタ１２０を有する。制御部１１０の機能は、例えば、プロセッサや組み込み回路などで実現される。また、制御レジスタ１２０の機能は、例えば、フリップフロップやメモリで実現される。
【００３５】
制御レジスタ１２０は、複数存在する。制御レジスタ１２０は、同期信号の接続元及び宛先として使用するために十分な数が存在する。ここで、ある制御レジスタ１２０の接続元とは、バリア同期処理において、その制御レジスタ１２０へ同期信号を送信してくる制御レジスタ１２０である。すなわち、制御レジスタ１２０が処理を行うステージの１つ前のステージで処理を行う制御レジスタ１２０である。また、ある制御レジスタ１２０の宛先とは、その制御レジスタ１２０から同期信号が送信される制御レジスタ１２０である。すなわち、制御レジスタ１２０が処理を行うステージの次のステージで処理を行う制御レジスタ１２０である。
【００３６】
制御レジスタ１２０は、シグナルレジスタ１２１及び宛先情報レジスタ１２２を有する。シグナルレジスタ１２１は、制御レジスタ１２０に対応するバリア同期の待ち合わせ状態を格納する。具体的には、シグナルレジスタ１２１は、接続元の制御レジスタ１２０の数と一致する数のシグナル＃０〜＃ｎの値を保持する。すなわち、制御レジスタ１２０の接続元として、ｎ＋１個の制御レジスタ１２０が存在する。ここでは、シグナル＃ｉの値が０であれば、シグナル＃ｉに対応する制御レジスタ１２０からの同期信号をノード１が受信していないことを表す。逆に、シグナル＃ｉの値が１であれば、シグナル＃ｉに対応する制御レジスタ１２０からの同期信号をノード１が受信したことを表す。
【００３７】
宛先情報レジスタ１２２は、宛先情報１２３、宛先ステータス１２４、接続元情報１２５を有する。宛先情報レジスタ１２２は、設定条件として通知された情報及び自己が格納された制御レジスタ１２０が処理を行うステージの次のステージのビジー状態を表す情報を格納する。次のステージのビジー状態は、宛先となる制御レジスタ１２０が処理を実行中であり使用中であるか否かを表す情報にあたる。
【００３８】
宛先情報１２３は、予め決められたバリア同期処理のアルゴリズムに対応した制御レジスタ１２０が同期信号を送信する宛先のノード２〜４の宛先アドレス及び宛先となる制御レジスタ１２０の番号を含む宛先情報＃Ｄ０〜＃Ｄｍを格納する。宛先情報＃Ｄ０〜＃Ｄｍは、同期信号の宛先となる制御レジスタ１２０の数と同じ数が存在する。すなわち、ここでは、制御レジスタ１２０の同期信号の宛先として、ｍ＋１個の制御レジスタ１２０が存在する。
【００３９】
また、接続元情報１２５は、予め決められたバリア同期処理のアルゴリズムに対応した制御レジスタ１２０が同期信号を受信する接続元のノード２〜４の接続元アドレス及び接続元となる制御レジスタ１２０の番号を含む接続元情報＃Ｓ０〜＃Ｓｎを格納する。接続元情報＃Ｓ０〜＃Ｓｍは、接続元となる制御レジスタ１２０の数と同じ数が存在する。例えば、接続元となる制御レジスタ１２０が２個であり、宛先となる制御レジスタ１２０が２個であれば、ｍ及びｎのいずれも１となる。
【００４０】
宛先ステータス１２４は、自己が格納された制御レジスタ１２０が処理を行うステージの次のステージのビジー状態を格納する。次のステージのビジー状態から、宛先となる制御レジスタ１２０が処理を実行中であるため使用中であるか否かが判断できる。宛先ステータス１２４は、同期信号の宛先となる制御レジスタ１２０の数に一致する数の宛先ステータス＃＃０〜＃＃ｍを有する。宛先ステータス＃＃ｊの値が１であれば、その宛先ステータス＃＃ｊに対応する制御レジスタ１２０が使用中の状態、言い換えれば次のステージがビジー状態である。逆に、宛先ステータス＃＃ｊの値が０であれば、その宛先ステータス＃＃ｊに対応する制御レジスタ１２０が解放された未使用の状態、言い換えれば次のステージがビジーでない解放状態といえる。
【００４１】
制御レジスタ１２０の宛先情報レジスタ１２２における宛先情報１２３及び接続元情報１２５は、ＣＰＵ１１の設定処理部１６から受信した設定条件にしたがって情報設定部１１２により情報が書き込まれる。各制御レジスタ１２０において同期信号の接続元と宛先とが設定されることで、バタフライ演算のアルゴリズムにしたがった接続構造で制御レジスタ１２０同士が接続される。ただし、バタフライ演算は同期処理を行うアルゴリズムの一例であり、他のアルゴリズムを用いてもよい。
【００４２】
制御部１１０は、図５に示すように、シグナルレジスタ管理部１１１、情報設定部１１２、同期制御部１１３、状態管理部１１４及び送信制御部１１５を有する。
【００４３】
情報設定部１１２は、ＣＰＵ１１の設定処理部１６からバリア同期に関する設定条件を受信する。そして、情報設定部１１２は、取得した設定条件にしたがって、制御レジスタ１２０の宛先情報レジスタ１２２に制御レジスタ１２０の番号を登録する。また、情報設定部１１２は、取得した設定条件にしたがって、制御レジスタ１２０の宛先情報レジスタ１２２に制御レジスタ１２０の番号を書き込む。ここで、宛先アドレスは、システムにより決定されるノード番号と制御レジスタ番号１２０から決定される。
【００４４】
同期制御部１１３は、ＣＰＵ１１の設定処理部１６から送信された設定条件からバリア同期処理のアルゴリズム及び実行条件を取得する。そして、同期制御部１１３は、バリア同期処理で指示された制御レジスタ１２０が処理を行うステージが開始ステージ、中継ステージ又は最終ステージのいずれであるかを、バリア同期処理のアルゴリズムを用いて判定する。以下では、バリア同期処理で指示された制御レジスタ１２０を「制御対象の制御レジスタ１２０」という。また、制御対象の制御レジスタ１２０が処理を行うステージを「自ステージ」という。
【００４５】
自ステージが中継ステージ又は最終ステージの場合、同期制御部１１３は、バリア同期処理のアルゴリズムを取得した際に、制御対象の制御レジスタ１２０の初期化の指示をシグナルレジスタ管理部１１１へ出力する。自ステージが開始ステージであれば、同期制御部１１３は、シグナルレジスタ１２１の初期化を行わなくてよい。
【００４６】
次に、同期制御部１１３は、バリアポイント到達を通知するバリア同期開始信号をＣＰＵ１１の演算実行部１７から受信する。そして、同期制御部１１３は、実行条件にしたがって、バリア同期開始信号を受信するとバリア同期処理を開始する。
【００４７】
同期制御部１１３は、同期信号及び接続元情報の入力を受信部１０１から受ける。ただし、この同期信号及び接続元情報の入力は、開始ステージでは行われない。そして、同期制御部１１３は、接続元情報をシグナルレジスタ管理部１１１に通知する。
【００４８】
自ステージが開始ステージの場合、同期制御部１１３は、バリア同期処理で指示された制御レジスタ１２０の宛先情報１２３を読み出す。次に、同期制御部１１３は、宛先情報＃Ｄ０〜＃Ｄｍのそれぞれの宛先ステータス１２４を取得する。そして、同期制御部１１３は、全ての宛先ステータス＃＃〜＃＃ｍの内のいずれかが解放されビジー状態が解除されるまで待機する。
【００４９】
宛先ステータス＃＃０〜＃＃ｍの中に解放を示す値が存在する場合、同期制御部１１３は、解放されビジー状態でなくなった次のステージの制御レジスタ１２０を送信対象とする。自ステージが開始ステージであれば接続元のステージが存在しないので、同期制御部１１３は、接続元のステージへの解放通知の送信は行わなくてよい。
【００５０】
その後、同期制御部１１３は、自ステージが開始ステージであるため接続元ステージからの同期信号の待ち合わせを行わずに、送信対象の制御レジスタ１２０への同期信号の送信要求を送信制御部１１５へ出力する。加えて、同期制御部１１３は、同期信号を送信した宛先情報を状態管理部１１４へ出力して、ステータスの変更を行わせる。これに対して、この場合は自ステージが開始ステージであるので、宛先の制御レジスタ１２０へ全ての同期信号の送信が完了しても、同期制御部１１３は、接続元ステージへの解放通知送信を行わない。
【００５１】
その後、同期信号を未送信の宛先が存在する場合、同期制御部１１３は、宛先ステータス１２４を用いて送信対象の更新を行う。そして、同期制御部１１３は、新たに送信対象とした制御レジスタ１２０への同期信号の送信要求を送信制御部１１５に出力する。これに対して、全ての宛先の制御レジスタ１２０への同期信号の送信が完了した場合、同期制御部１１３は、開始ステージにおける同期処理を完了する。
【００５２】
また、自ステージが中継ステージの場合、同期制御部１１３は、バリア同期処理で指示された制御レジスタ１２０の宛先情報１２３を読み出す。次に、同期制御部１１３は、宛先情報＃Ｄ０〜＃Ｄｍのそれぞれの宛先ステータス１２４を取得する。そして、同期制御部１１３は、全ての宛先ステータス＃＃０〜＃＃ｍの内のいずれかが解放されて宛先の制御レジスタ１２０が未使用の状態になるまで待機する。
【００５３】
宛先ステータス＃＃０〜＃＃ｍのなかに解放されたものが存在する場合、同期制御部１１３は、未使用となった次のステージの制御レジスタ１２０を「送信対象」とする。
【００５４】
次に、同期制御部１１３は、シグナルレジスタ１２１を確認して、全ての接続元からの同期信号の受信が完了したか否かを判定する。シグナル＃０〜＃ｎのいずれかが０であり同期信号の受信が完了していない接続元がある場合、同期制御部１１３は、宛先ステータス１２４の確認を繰り替えして送信対象を更新する。
【００５５】
シグナル＃０〜＃ｎの全てが１であり全ての接続元からの同期信号の受信が完了した場合、同期制御部１１３は、送信対象の制御レジスタ１２０への同期信号の送信要求を送信制御部１１５に出力する。加えて、同期制御部１１３は、同期信号を送信した宛先情報を状態管理部１１４へ出力して、ステータスの変更を行わせる。
【００５６】
その後、同期信号を未送信の宛先が存在する場合、同期制御部１１３は、宛先ステータス１２４を用いて送信対象の更新を行う。そして、同期制御部１１３は、新たに送信対象とした制御レジスタ１２０への同期信号の送信要求の送信制御部１１５への出力及び状態管理部１１４へのステータス変更の指示を実行する。
【００５７】
これに対して、全ての宛先の制御レジスタ１２０への同期信号の送信が完了した場合、同期制御部１１３は、解放通知の送信指示を送信制御部１１５へ出力し、制御対象の制御レジスタ１２０における同期処理を完了する。
【００５８】
また、自ステージが最終ステージの場合、同期制御部１１３は、シグナルレジスタ１２１を確認して、全ての接続元からの同期信号の受信が完了したか否かを判定する。自ステージが最終ステージであれば、同期信号を送信することはない。シグナル＃０〜＃ｎのいずれかが０であり同期信号の受信が完了していない接続元がある場合、同期制御部１１３は、宛先ステータス１２４の確認を繰り替えして送信対象を更新する。
【００５９】
シグナル＃０〜＃ｎの全てが１であり全ての接続元からの同期信号の受信が完了した場合、同期制御部１１３は、バリア同期完了通知をＣＰＵ１１の演算実行部１７へ送信する。これにより、１つのプロセスの同期処理が完了する。その後、同期制御部１１３は、解放通知の送信指示を送信制御部１１５へ出力する。
【００６０】
以降は、開始ステージ、中継ステージ、最終ステージに関わらない各部の動作の説明であり、ここまでの説明における時系列から外れた動作である。同期制御部１１３は、解放通知及び解放通知の送信元の制御レジスタ１２０の情報の入力を受信部１０１から受ける。そして、同期制御部１１３は、解放通知の送信元の制御レジスタ１２０に対応するステータスの解放を状態管理部１１４に指示する。
【００６１】
シグナルレジスタ管理部１１１は、制御レジスタシグナルレジスタ１２１の初期化の指示を同期制御部１１３から受信する。そして、シグナルレジスタ管理部１１１は、制御対象の制御レジスタ１２０に含まれるシグナルレジスタ１２１の各シグナル＃０〜＃ｎの値を０に設定して初期化する。
【００６２】
制御対象の制御レジスタ１２０のリセット指示の入力を同期制御部１１３から受ける。そして、シグナルレジスタ管理部１１１は、制御対象の制御レジスタ１２０のシグナルレジスタ１２１をリセットする。
【００６３】
その後、シグナルレジスタ管理部１１１は、同期信号を送信してきた接続元情報の入力を同期制御部１１３から受ける。そして、シグナルレジスタ管理部１１１は、取得した接続元情報に対応するシグナル＃０〜＃ｎのいずれかの値を１に変更し、その接続元のステージからの同期信号の受信が完了したことを表す状態にする。
【００６４】
状態管理部１１４は、同期信号を送信した宛先の制御レジスタ１２０の情報の入力を同期制御部１１３から受ける。そして、状態管理部１１４は、同期信号の送信先の制御レジスタ１２０に対応する宛先ステータス＃＃０〜＃＃ｍのいずれかの値を１に変更し、その制御レジスタ１２０が処理を行うステージがビジーであることを表す状態にする。
【００６５】
また、状態管理部１１４は、解放通知の送信元の制御レジスタ１２０のステータスの解放指示の入力を同期制御部１１３から受ける。次に、状態管理部１１４は、解放通知の送信元の制御レジスタ１２０に対応する宛先ステータス＃＃０〜＃＃ｍのいずれかの値を０に変更し、その制御レジスタ１２０が処理を行うステージが解放されたことを表す状態にする。
【００６６】
送信制御部１１５は、送信対象とした制御レジスタ１２０への同期信号の送信要求を同期制御部１１３から受ける。そして、送信制御部１１５は、指定された制御レジスタ１２０への同期信号の送信を送信部１０２に行わせる。
【００６７】
また、送信制御部１１５は、全ての宛先の制御レジスタ１２０への同期信号の送信が完了した場合、解放通知の送信指示を同期制御部１１３から受ける。そして、送信制御部１１５は、制御対象の制御レジスタ１２０の接続元の制御レジスタ１２０の情報を接続元情報１２５から取得する。その後、送信制御部１１５は、接続元の制御レジスタ１２０への解放通知の送信を送信部１０２に行わせる。
【００６８】
図６は、プロセスにより使用される制御レジスタのステージ毎の遷移を表す図である。ここでは、プロセスＰ０〜Ｐ３が動作する場合で説明する。各プロセスＰ０〜Ｐ３は、同じノード１で動作してもよいし、動作するノード１が異なってもよい。
【００６９】
プロセスＰ０は、ステージＴ１で制御レジスタＲ０を使用し、ステージＴ２で制御レジスタＲ１０を使用し、ステージＴ３で制御レジスタＲ０を使用する。プロセスＰ１は、ステージＴ１で制御レジスタＲ１を使用し、ステージＴ２で制御レジスタＲ１１を使用し、ステージＴ３で制御レジスタＲ１を使用する。プロセスＰ２は、ステージＴ１で制御レジスタＲ２を使用し、ステージＴ２で制御レジスタＲ１２を使用し、ステージＴ３で制御レジスタＲ２を使用する。プロセスＰ０は、ステージＴ１で制御レジスタＲ３を使用し、ステージＴ２で制御レジスタＲ１３を使用し、ステージＴ３で制御レジスタＲ３を使用する。
【００７０】
ここで、各ステージＴ１〜Ｔ３で使用する制御レジスタ１２０を異ならせることの１つのメリットとして、プロセスＰ０〜Ｐ３のバリア同期処理がどこまで進んでいるかを確認することが容易となり、バリア同期処理の制御を容易にすることがある。
【００７１】
ただし、プロセスＰ０〜Ｐ３は、開始ステージであるステージＴ１では宛先情報１２２レジスタを使用し、シグナルレジスタ１２１は使用しなくてもよい。また、最終ステージであるステージＴ３では、プロセスＰ０〜Ｐ３は、シグナルレジスタ１２１を使用し、宛先情報レジスタ１２２を使用しなくてもよい。そこで、プロセスＰ０〜Ｐ３は、開始ステージであるステージＴ１と最終ステージであるステージＴ３とで同じ制御レジスタ１２０を使用することが可能である。このように、ステージＴ１とステージＴ３とで使用する制御レジスタ１２０を同じにしても、両者を区別することが可能である。なぜなら、バリア同期装置１０は、他の制御レジスタ１２０からの同期信号の入力が無い状態で開始される場合にステージＴ１と判定でき、他の制御レジスタ１２０へ同期信号の出力を行わない場合はステージＴ３と判定できる。これにより、バリア同期処理において使用される資源を減らすことができる。ただし、ステージＴ１とステージＴ３とで使用する制御レジスタ１２０を異ならせてもよい。
【００７２】
次に、図７を参照して、本実施例に係るバリア同期装置によるバリア同期処理の高速化の効果について説明する。図７は、バリア同期処理の高速化について説明するための図である。
【００７３】
同期処理は制御レジスタ１２０の単位で行われるため、１つのバリア同期装置１０に対して複数のバリア同期処理の実行が命令されてもよい。さらに、同じプロセスに対して、複数のバリア同期処理が繰り返し要求される場合もある。ここでは、例えば、バリア同期処理Ｂ０〜Ｂ３が繰り返し１つのプロセスに対して要求された場合で説明する。さらに、ここでは、各バリア同期処理Ｂ０〜Ｂ３が、ステージＴ１〜Ｔ３に段階的に分割される場合で説明する。
【００７４】
従来のバリア同期処理では途中で関数から出ることができず、１つのバリア同期処理Ｂ０のステージＴ３の完了後に、次のバリア同期処理Ｂ１のステージＴ１が開始された。そのため、従来のバリア同期処理では、各バリア同期処理Ｂ０〜Ｂ３のステージＴ１〜Ｔ３でかかる時間を合計した時間がかかっていた。
【００７５】
これに対して、本実施例に係るバリア同期装置１０では、バリア同期処理Ｂ０のステージＴ１を実行する制御レジスタ１２０が同期信号を次のステージＴ２の制御レジスタ１２０に送信して解放されると、次のバリア同期処理Ｂ１のステージＴ１を開始できる。そのため、本実施例に係るバリア同期装置１０は、各ステージＴ１〜Ｔ３で実行される処理を重複させてパイプライン制御で実行することができる。
【００７６】
ここで、例えば各ステージＴ１〜Ｔ３にかかる時間が同じと考える。その場合、本実施例に係るバリア同期装置１０は、バリア同期処理Ｂ０〜Ｂ３のステージＴ１にかかる時間の合計にバリア同期処理Ｂ３のステージＴ２及びＴ３にかかる時間を加算した時間で、バリア同期処理Ｂ０〜Ｂ３を完了することができる。
【００７７】
これを一般化すると、ステージ数がＭ（Ｍ≧１）であり、バリア同期処理が繰り返される回数をＮ（Ｎ≧１）とすると、従来のバリア同期処理では、処理時間はＮ×Ｍであった。これに対して、本実施例に係るバリア同期装置１０では、処理時価はＮ＋Ｍ−１となる。すなわち、従来のバリア同期処理と比べて、本実施例に係るバリア同期装置１０は、バリア同期処理の（Ｎ−１）×（Ｍ−１）の時間分の高速化を実現することができる。ただし、実際には、ステージの解放通知の送受信のレイテンシが存在するため、処理時間の短縮は少し短くなる。
【００７８】
次に、図８を参照して、本実施例に係るバリア同期装置１０によるバリア同期処理の全体的な流れについて説明する。図８は、実施例に係るバリア同期装置によるバリア同期処理全体のフローチャートである。
【００７９】
情報設定部１１２は、設定条件の入力をＣＰＵ１１から受ける。そして、情報設定部１１２は、取得した設定条件にしたがって、制御レジスタ１２０の宛先情報レジスタ１２２に制御情報を設定する（ステップＳ１）。具体的には、情報設定部１１２は、制御レジスタ１２０の宛先情報レジスタ１２２に宛先情報１２３として宛先アドレス及び宛先となる制御レジスタ１２０の番号を書き込む。また、情報設定部１１２は、取得した設定条件にしたがって、制御レジスタ１２０の宛先情報レジスタ１２２に接続元情報１２５として接続元アドレス及び接続元となる制御レジスタ１２０の番号を書き込む。また、同期制御部１１３は、設定条件からバリア同期処理のアルゴリズム及び実行条件を取得する。そして、同期制御部１１３は、バリア同期処理のアルゴリズムから自ステージが中継ステージ又は最終ステージのいずれかを判定する。自ステージが中継ステージ又は最終ステージであれば、同期制御部１１３は、シグナルレジスタ１２１の初期化指示をシグナルレジスタ管理部１１１へ出力する。シグナルレジスタ管理部１１１は、同期制御部１１３からの指示を受信して、シグナルレジスタ１２１の各シグナル＃０〜＃ｎの値を０に設定して初期化する。
【００８０】
その後、同期制御部１１３はバリアポイント到達を通知するバリア同期開始指示をＣＰＵ１１から受信する（ステップＳ２）。そして、同期制御部１１３は、実行条件にしたがって、バリア同期開始信号を受信するとバリア同期処理を開始する。
【００８１】
次に、同期制御部１１３は、バリア同期処理で指示された制御対象の制御レジスタ１２０により実行される同期処理のステージが開始ステージか否かを判定する（ステップＳ３）。
【００８２】
制御対象の制御レジスタ１２０により実行される同期処理のステージが開始ステージの場合（ステップＳ３：肯定）、同期制御部１１３は、バリア同期処理に用いる開始通知をＣＰＵ１１から取得する（ステップＳ４）。
【００８３】
その後、制御部１１０は、送信処理を実行する（ステップＳ５）。そして、送信処理完了後、制御部１１０は、制御対象の制御レジスタ１２０の同期処理を終了する。
【００８４】
これに対して、制御対象の制御レジスタ１２０により実行される同期処理のステージが開始ステージでない場合（ステップＳ３：否定）、同期制御部１１３は、同期処理のステージが中継ステージか否かを判定する（ステップＳ６）。
【００８５】
制御対象の制御レジスタ１２０により実行される同期処理のステージが中継ステージの場合（ステップＳ６：肯定）、制御部１１０は、受信処理を実行する（ステップＳ７）。
【００８６】
その後、制御部１１０は、送信処理を実行する（ステップＳ８）。
【００８７】
これに対して、制御対象の制御レジスタ１２０により実行される同期処理のステージが中継ステージでなく、最終ステージの場合（ステップＳ６：否定）、制御部１１０は、受信処理を実行する（ステップＳ９）。
【００８８】
同期制御部１１３は、バリア同期完了をＣＰＵ１１へ通知する（ステップＳ１０）。
【００８９】
その後、制御部１１０は、接続元の制御レジスタ１２０へ解放通知を送信する（ステップＳ１１）。
【００９０】
次に、図９を参照して、本実施例に係るバリア同期装置１０が他のバリア同期装置１０から同期信号を受信する場合の受信側処理の流れについて説明する。図９は、実施例に係るバリア同期装置による受信側処理のフローチャートである。図９のフローチャートで実行される処理は、図８におけるステップＳ７及びＳ９で実行される処理の一例にあたる。
【００９１】
ここでは、バリア同期装置１０が１つの制御対象の制御レジスタ１２０に対して実行する送信側処理の流れについて説明する。ただし、バリア同期装置１０は、複数の制御対象の制御レジスタ１２０に対して平行して送信側処理を実行することができ、その場合、図９のフローチャートの処理を制御対象の制御レジスタ１２０の数に応じて並行して実行する。
【００９２】
同期制御部１１３は、接続元の制御レジスタ１２０から送信された同期信号及び宛先情報を受信部１０１から受信する（ステップＳ１０１）。ここでは、宛先情報が、ここで制御対象とする制御レジスタ１２０を示す場合で説明する。
【００９３】
次に、同期制御部１１３は、宛先情報で指定された制御レジスタ１２０のシグナルレジスタ１２１における接続元の制御レジスタ１２０に対応したシグナル＃０〜＃ｎのいずれかの値を１に設定する（ステップＳ１０２）。
【００９４】
次に、同期制御部１１３は、宛先情報で指定された制御レジスタ１２０のシグナルレジスタ１２１を読み出す（ステップＳ１０３）。
【００９５】
そして、同期制御部１１３は、全てのシグナル＃０〜＃ｎの値が１か否かを判定する（ステップＳ１０４）。シグナル＃０〜＃ｎの値の中に０が存在する場合（ステップＳ１０４：否定）、同期制御部１１３は、制御対象の制御レジスタ１２０から送信される同期信号を待ち合わせる（ステップＳ１０５）。その後、同期制御部１１３は、ステップＳ１０１へ戻る。
【００９６】
これに対して、全てのシグナル＃０〜＃ｎの値が１の場合（ステップＳ１０４：肯定）、同期制御部１１３は、シグナルレジスタ１２１のリセットをシグナルレジスタ管理部１１１に指示する。シグナルレジスタ管理部１１１は、リセットの指示を受けて、シグナルレジスタ１２１をリセットする（ステップＳ１０６）。その後、制御部１１０は、受信側処理を終了する。
【００９７】
ここで、図９では、ステップＳ１０６においてシグナルレジスタ１２１のリセットを行うように説明したが、シグナルレジスタ１２１のリセットは宛先の制御レジスタ１２０へ信号を送信する前に行えばよい。例えば、シグナルレジスタ１２１のリセットは宛先の制御レジスタ１２０へ信号を送信する際に行うことができる。図９の処理の例では、受信処理が完了したあとに送信処理を行うことになる。
【００９８】
次に、図１０を参照して、本実施例に係るバリア同期装置１０が他のバリア同期装置１０へ同期信号を送信する場合の送信側処理の流れについて説明する。図１０は、実施例に係るバリア同期装置による送信側処理のフローチャートである。図１０のフローチャートで実行される処理は、図８におけるステップＳ５及びＳ８で実行される処理の一例にあたる。
【００９９】
ここでも、バリア同期装置１０が１つの制御対象の制御レジスタ１２０に対して実行する送信側処理の流れについて説明する。ただし、バリア同期装置１０は、複数の制御対象の制御レジスタ１２０に対して平行して送信側処理を実行することができ、その場合、図１０のフローチャートの処理を制御対象の制御レジスタ１２０の数に応じて並行して実行する。
【０１００】
同期制御部１１３は、制御対象の制御レジスタ１２０の宛先情報レジスタ１２２に格納された宛先情報１２３を読み込む（ステップＳ２０１）。
【０１０１】
次に、同期制御部１１３は、宛先ステータス１２４を確認して同期信号を未送信の宛先の制御レジスタ１２０のうち、解放された制御レジスタ１２０があるか否かを判定する（ステップＳ２０２）。
【０１０２】
同期信号を未送信で且つ解放された制御レジスタ１２０が無い場合（ステップＳ２０２：否定）、同期制御部１１３は、同期信号を未送信の宛先の制御レジスタ１２０の何れかが解放されるまで待機する（ステップＳ２０３）。そして、同期制御部１１３は、ステップＳ２０２へ戻る。
【０１０３】
これに対して、同期信号を未送信で且つ解放された制御レジスタ１２０がある場合（ステップＳ２０２：肯定）、同期制御部１１３は、該当する制御レジスタ１２０を送信対象の制御レジスタ１２０として選択する（ステップＳ２０４）。
【０１０４】
次に、同期制御部１１３は、送信対象の制御レジスタ１２０への同期信号の送信を送信制御部１１５に指示する（ステップＳ２０５）。この指示を受けて、送信制御部１１５は、送信対象の制御レジスタ１２０へ向けて同期信号を送信部１０２に送信させる。
【０１０５】
その後、同期制御部１１３は、送信対象の制御レジスタ１２０への同期信号の送信を状態管理部１１４に通知する。状態管理部１１４は、同期制御部１１３から指示された送信対象の制御レジスタ１２０に対応する宛先ステータス１２４における宛先ステータス＃＃０〜＃＃ｍのいずれかの値を１に設定してビジー状態に変更する（ステップＳ２０６）。
【０１０６】
その後、同期制御部１１３は、全ての宛先の制御レジスタ１２０へ同期信号を送信したか否かを判定する（ステップＳ２０７）。同期信号を未送信の宛先の制御レジスタ１２０が存在する場合（ステップＳ２０７：否定）、同期制御部１１３は、ステップＳ２０２へ戻る。
【０１０７】
これに対して、全ての宛先の制御レジスタ１２０の同期信号の送信が完了した場合（ステップＳ２０７：肯定）、同期制御部１１３は、送信側処理を終了する。
【０１０８】
ここで、図８に戻って受信側処理と送信側処理の関係を説明する。図８では、説明の都合上、ステップＳ７の受信処理をステップＳ８の送信処理の前に実行するように図示したが、受信処理は送信処理と並行して実行されてもよい。ただし、その場合も、バリア同期装置１０は、受信処理が完了した後に、同期信号を宛先の制御レジスタ１２０に送信する。
【０１０９】
ここで、本実施例では、バリア同期装置１０が、バタフライ演算のアルゴリズムを用いてバリア同期処理を実行する場合を例に説明したが、バリア同期処理のアルゴリズムはこれに限らない。例えば、バリア同期装置１０は、ディスエミネーション（Dissemination）アルゴリズムやペアワイズエクスチェンジウィズリカーシダブリング（Pairwise  exchange  with  recursive  doubling）アルゴリズムなど他のアルゴリズムを用いることも可能である。また、本実施例に係るバリア同期装置１０が行うバリア同期処理は、Ａｌｌ−Ｒｅｄｕｃｅ処理以外にも、リダクション演算など同期を取りながら実行する集団通信においても適用可能である。
【０１１０】
以上に説明したように、本実施例に係るバリア同期装置は、複数ステージに分割可能なバリア同期処理の実行において、制御レジスタが同期信号を次ステージに送信しバリア同期処理が終了すると、その制御レジスタに次のバリア同期処理を実行させることができる。すなわち、本実施例に係るバリア同期装置は、バリア同期処理をパイプライン制御することができ、各ステージを重畳させて並行して実行するができる。これにより、連続した複数のバリア同期処理を高速化することができる。
【符号の説明】
【０１１１】
１〜４  ノード
５  ネットワーク
１０  バリア同期装置
１１  ＣＰＵ
１２  メモリ
１３  システム制御部
１４  ネットワークインタフェース
１５  入出力装置
１６  設定処理部
１００  同期部
１０１  受信部
１０２  送信部
１１０  制御部
１１１  シグナルレジスタ管理部
１１２  情報設定部
１１３  同期制御部
１１４  状態管理部
１１５  送信制御部
１２０  制御レジスタ
１２１  シグナルレジスタ
１２２  宛先情報レジスタ
１２３  宛先情報
１２４  宛先ステータス
１２５  接続元情報
【図１】
2020181249.tif 000003
【図２】
2020181249.tif 000004
【図３】
2020181249.tif 000005
【図４】
2020181249.tif 000006
【図５】
2020181249.tif 000007
【図６】
2020181249.tif 000008
【図７】
2020181249.tif 000009
【図８】
2020181249.tif 000010
【図９】
2020181249.tif 000011
【図１０】
2020181249.tif 000012