(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムであって、
各プロセッサは、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する処理手段と、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信手段と、を含み、
前記処理手段は、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とし、
前記同期装置は、
前記各プロセッサから前記通信時間情報と前記同期要求とを受信すると、当該通信時間情報に基づいて前記実行時間情報を作成する作成手段と、
前記作成手段にて作成された実行時間情報と、前記同期完了指示と、を前記複数のプロセッサに配信する配信手段と、を含み、
前記処理手段は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記処理手段は、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記作成手段は、前記各プロセッサから前記回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記配信手段は、前記作成手段にて作成された最大回数情報を、前記複数のプロセッサに配信し、
前記受信手段は、前記最大回数情報を受信し、
前記処理手段は、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する、並列コンピュータシステム。
【請求項２】
請求項１に記載の並列コンピュータシステムにおいて、
前記作成手段は、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情報を、前記実行時間情報として作成し、
前記配信手段は、前記最長時間情報を、前記実行時間情報として、前記同期完了指示と共に前記複数のプロセッサに配信し、
前記受信手段は、前記実行時間情報として配信された最長時間情報と、前記同期完了指示と、を受信し、
前記処理手段は、前記最長時間情報と前記同期完了指示とが受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記最長時間情報にて示された時間以下である場合、当該通信フェーズの期間を当該最長時間情報にて示された時間とする、並列コンピュータシステム。
【請求項３】
請求項１に記載の並列コンピュータシステムにおいて、
前記処理手段は、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間を示す個別通信時間情報を、前記通信時間情報として、前記同期要求と共に前記同期装置に送信し、
前記作成手段は、前記各プロセッサから前記通信時間情報として送信された個別通信時間情報と前記同期要求とを受信すると、前記通信フェーズごとに、前記個別通信時間情報に示された当該通信フェーズでの各プロセッサの通信時間のうち最長の時間を示す個別最長時間情報を、前記実行時間情報として作成し、
前記配信手段は、前記個別最長時間情報を、前記実行時間情報として、前記同期完了指示と共に前記複数のプロセッサに配信し、
前記受信手段は、前記実行時間情報として配信された個別最長時間情報と前記同期完了指示とを受信し、
前記処理手段は、前記個別最長時間情報と前記同期完了指示とが受信されると、前記集団通信を開始し、かつ、前記通信フェーズごとに、当該通信フェーズにおける自プロセッサの通信時間が前記個別最長時間情報にて示された当該通信フェーズの時間以下である場合、当該通信フェーズの期間を、前記個別最長時間情報にて示された当該通信フェーズの時間とする、並列コンピュータシステム。
【請求項４】
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサであって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する処理手段と、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信手段と、を含み、
前記処理手段は、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とし、
前記処理手段は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記処理手段は、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記受信手段は、前記同期装置から、前記複数のプロセッサでのエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を受信し、
前記処理手段は、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する、プロセッサ。
【請求項５】
各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成手段と、
前記作成手段にて作成された実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信手段と、を含み、
前記作成手段は、前記集団通信が終了した後に、前記各プロセッサから、複数の前記通信フェーズで発生したエラー状況の発生回数を示す回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記配信手段は、前記作成手段にて作成された最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサでのエラー状況は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況である、同期装置。
【請求項６】
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムでの通信方法であって、
各プロセッサが、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置が、前記各プロセッサから前記通信時間情報と前記同期要求とを受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記同期装置が、前記実行時間情報と同期完了指示とを前記複数のプロセッサに配信する配信ステップと、
前記各プロセッサが、前記同期装置から、前記実行時間情報と前記同期完了指示とを受信する受信ステップと、
前記各プロセッサが、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含み、
前記各プロセッサが、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記各プロセッサが、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記同期装置が、前記各プロセッサから前記回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記同期装置が、前記最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサが、前記最大回数情報を受信し、
前記各プロセッサが、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する、通信方法。
【請求項７】
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサでの通信方法であって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信ステップと、
前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含み、
前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記複数の通信フェーズで発生したエラー状況の発生回数を記憶手段に記憶し、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記同期装置から、前記複数のプロセッサでのエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を受信し、
新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する、通信方法。
【請求項８】
各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置での通信支援方法であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信ステップと、を含み、
前記集団通信が終了した後に、前記各プロセッサから、前記複数の通信フェーズで発生したエラー状況の発生回数を示す回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサでのエラー状況は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況である、通信支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサがネットワークを介して接続された並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法に関し、特には、複数のプロセッサが集団通信を行う並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法に関する。
【背景技術】
【０００２】
複数のプロセッサがネットワークを介して接続された並列コンピュータにて並列処理が実行されるには、複数のプロセッサが同時に通信を行う集団通信を行う必要がある。
【０００３】
特許文献１には、並列コンピュータ内の全プロセッサが並列コンピュータ内の全プロセッサと通信する全対全通信方法が記載されている。特許文献１の図１１には、この全対全通信方法での処理フローが記載されている。なお、全対全通信は集団通信の一例である。
【０００４】
この処理フローでは、各プロセッサが個別の送信先と通信するフェーズ（以下「部分通信フェーズ」と呼ぶ）が次々と実行される状況で、各部分通信フェーズが実行される前に、全プロセッサの同期が取られ、全プロセッサの部分通信フェーズの切り換えタイミングが合わされている。つまり、この処理フローでは、各プロセッサの同期が取られた後、１つの部分通信フェーズが実行され、その後、各プロセッサの同期が取られ、その後、新たな１つの部分通信フェーズが実行される。
【０００５】
図１２は、特許文献１に記載の全対全通信方法での集団通信のタイムチャートを示した図である。図１２において、集団通信フェーズ１２０１に入る前、および、集団通信フェーズ１２０１内の部分通信フェーズ１２０２の後で、プロセッサ間同期処理１２０３が行われ、部分通信フェーズ１２０２の開始タイミングが合わせられる。
【０００６】
この全対全通信方法では、全プロセッサの部分通信フェーズの開始タイミングが合わされた後で、全プロセッサが、データの送信先を同時に切り替える。これにより、通信経路上でのデータのぶつかりが防止される。
【０００７】
もし、部分通信フェーズが実行される前に全プロセッサの同期が取られない場合には、プロセッサ間で部分通信フェーズの開始タイミングがずれてしまう。プロセッサ間で部分通信フェーズの開始タイミングがずれると、本来は通信経路上でのデータのぶつかりがない通信であるはずなのに、通信経路上でのデータのぶつかりが発生する。
【０００８】
例えば、特許文献１の図９に示されたフェーズ管理テーブルには、フェーズ２でのPE2からPE3へのデータの通信と、フェーズ３でのPE8からPE3へのデータの通信とが、記載されている。この場合、もしも、PE2がフェーズ２でPE3へのデータの通信を行っている状況で、PE8がフェーズ３に入ってしまいPE8がPE3へのデータの通信を行うと、PE3へのデータの通信が２つ発生する。このため、通信経路上でのデータのぶつかりが発生し、並列処理の性能が悪化する。
【０００９】
特許文献１に記載の全対全通信方法では、通信経路上でのデータのぶつかりが起こらないように、フェーズ管理テーブルを作り、かつ、部分通信フェーズと部分通信フェーズの間の時間で全プロセッサの同期をとることで、全プロセッサでの部分通信フェーズの開始タイミングが合わせられる。これによって、全プロセッサから全プロセッサへのデータの通信が、通信経路上でのデータのぶつかりが生じることなく行われる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第２６０１５９１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１に記載の全対全通信方法では、部分通信フェーズと部分通信フェーズの間の時間で、集団通信に参加する全プロセッサ間の同期を取る必要がある。
【００１２】
複数のプロセッサ間の同期を取るためには、プロセッサ間の同期を取るための手段（以下「同期手段」と称する）が、何らかの通信を行う。このため、もしも、複数のプロセッサが、同時にプロセッサ間の同期を取るための命令を実行したとしても、その命令の実行開始時から同期が完了するまでには、何らかの時間がかかる。
【００１３】
したがって、プロセッサ間の同期を取るために要する時間が、本来の通信のオーバヘッドとなり、集団通信に要する時間が長くなり、集団通信の性能が劣化してしまうという課題があった。
【００１４】
また、プロセッサ間の同期を取るために要する時間は、一般にプロセッサ数が多くなれば多くなるほど長くなる。なぜなら、プロセッサ数が多い場合には、物理的にプロセッサ間の距離が大きくなり、よって、同期手段が行う通信の距離が長くなるからである。
【００１５】
したがって、並列コンピュータの規模が大規模になるほど、プロセッサ間の同期に要する時間が長くなる。よって、特許文献１に記載の全対全通信方法では、部分通信フェーズと部分通信フェーズの間の時間に実行されるプロセッサ間の同期処理に関するオーバヘッドが大きくなり、集団通信に要する時間が長くなり、集団通信の性能は劣化する。
【００１６】
本発明の目的は、上述の課題を解決可能な並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法を提供することにある。
【課題を解決するための手段】
【００１７】
本発明の並列コンピュータシステムは、複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムであって、
各プロセッサは、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する処理手段と、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信手段と、を含み、
前記処理手段は、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とし、
前記同期装置は、
前記各プロセッサから前記通信時間情報と前記同期要求とを受信すると、当該通信時間情報に基づいて前記実行時間情報を作成する作成手段と、
前記作成手段にて作成された実行時間情報と、前記同期完了指示と、を前記複数のプロセッサに配信する配信手段と、を含み、
前記処理手段は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記処理手段は、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記作成手段は、前記各プロセッサから前記回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記配信手段は、前記作成手段にて作成された最大回数情報を、前記複数のプロセッサに配信し、
前記受信手段は、前記最大回数情報を受信し、
前記処理手段は、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する。
【００１８】
本発明のプロセッサは、複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサであって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する処理手段と、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信手段と、を含み、
前記処理手段は、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とし、
前記処理手段は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記処理手段は、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記受信手段は、前記同期装置から、前記複数のプロセッサでのエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を受信し、
前記処理手段は、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する。
【００１９】
本発明の同期装置は、各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成手段と、
前記作成手段にて作成された実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信手段と、を含み、
前記作成手段は、前記集団通信が終了した後に、前記各プロセッサから、前記複数の通信フェーズで発生したエラー状況の発生回数を示す回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記配信手段は、前記作成手段にて作成された最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサでのエラー状況は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況である。
【００２０】
本発明の通信方法は、複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムでの通信方法であって、
各プロセッサが、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置が、前記各プロセッサから前記通信時間情報と前記同期要求とを受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記同期装置が、前記実行時間情報と同期完了指示とを前記複数のプロセッサに配信する配信ステップと、
前記各プロセッサが、前記同期装置から、前記実行時間情報と前記同期完了指示とを受信する受信ステップと、
前記各プロセッサが、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含み、
前記各プロセッサが、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記各プロセッサが、前記複数の通信フェーズで発生したエラー状況の発生回数を記憶する記憶手段を含み、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記同期装置が、前記各プロセッサから前記回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記同期装置が、前記最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサが、前記最大回数情報を受信し、
前記各プロセッサが、新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する。
【００２１】
本発明の通信方法は、複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサでの通信方法であって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信ステップと、
前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含み、
前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力し、
前記複数の通信フェーズで発生したエラー状況の発生回数を記憶手段に記憶し、前記集団通信が終了すると、前記記憶手段内のエラー状況の発生回数を示す回数情報を、前記同期装置に送信し、
前記同期装置から、前記複数のプロセッサでのエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を受信し、
新たに前記通信時間情報を送信する状況になると、前記最大回数情報が示す回数が多くなるほど、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間が長くなるように、当該通信時間を補正し、当該補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、前記新たな通信時間情報として、前記同期要求と共に前記同期装置に送信する。
【００２２】
本発明の通信支援方法は、各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置での通信支援方法であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信ステップと、を含み、
前記集団通信が終了した後に、前記各プロセッサから、前記複数の通信フェーズで発生したエラー状況の発生回数を示す回数情報を受信すると、当該回数情報にて示されるエラー状況の発生回数のうち最大の発生回数を示す最大回数情報を作成し、
前記最大回数情報を、前記複数のプロセッサに配信し、
前記各プロセッサでのエラー状況は、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間よりも長いエラー状況である。
【発明の効果】
【００２３】
本発明によれば、複数のプロセッサによる集団通信を高速に行うことが可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施形態の並列コンピュータシステムを示したブロック図である。
【図２】同期装置103として使用可能な同期装置201を示したブロック図である。
【図３】プロセッサ101-(0)〜101-(N-1)のいずれにも使用可能なプロセッサ301を示したブロック図である。
【図４】第１実施形態の動作を説明するためのフローチャートである。
【図５】第１実施形態の並列コンピュータシステムでの集団通信の動作を説明するための図である。
【図６】本発明の第２実施形態の並列コンピュータシステムを示したブロック図である。
【図７】同期装置103Aとして使用可能な同期装置701を示したブロック図である。
【図８】プロセッサ101A-(0)〜101A-(N-1)のいずれにも使用可能なプロセッサ801を示したブロック図である。
【図９】第２実施形態の動作を説明するためのフローチャートである。
【図１０】プロセッサ101B-(0)〜101B-(N-1)のいずれにも使用可能なプロセッサ1001を示したブロック図である。
【図１１】第３実施形態の動作を説明するためのフローチャートである。
【図１２】特許文献１に記載の技術による集団通信フェーズを説明する図である。
【発明を実施するための形態】
【００２５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２６】
（第１実施形態）
図１は、本発明の第１実施形態の並列コンピュータシステムを示したブロック図である。
【００２７】
図１において、並列コンピュータシステムは、複数のプロセッサ101-(0)〜101-(N-1)と、プロセッサ間ネットワーク（以下、単に「ネットワーク」と称する）102と、プロセッサ間同期装置（以下、単に「同期装置」と称する）103と、を含む。なお、Nは、2以上の整数である。
【００２８】
複数のプロセッサ101-(0)〜101-(N-1)は、集団通信を行う。集団通信では、複数のプロセッサ101-(0)〜101-(N-1)は、ネットワーク102を介して同時に通信を行う。
【００２９】
本実施形態では、集団通信は、複数の通信フェーズのそれぞれでプロセッサ間の通信が行われることによって実行される。
【００３０】
各通信フェーズでは、複数のプロセッサ101-(0)〜101-(N-1)のうち２つ以上のプロセッサのそれぞれがネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。以下では、通信フェーズを「部分通信フェーズ」と称する。
【００３１】
本実施形態では、複数のプロセッサ101-(0)〜101-(N-1)は、集団通信として、次のような全対全通信を行う。プロセッサ101-(0)〜101-(N-1)のそれぞれは、各部分通信フェーズで、ネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。
【００３２】
このため、本実施形態で全対全通信が実行される場合、プロセッサ101-(0)〜101-(N-1)の数と同じ数の部分通信フェーズが必要になる。なお、集団通信は、全対全通信に限るものではない。
【００３３】
プロセッサ101-(0)〜101-(N-1)のそれぞれは、プロセッサを同期する旨の命令（以下、単に「同期命令」と称する）を実行すると、部分通信フェーズごとに予測された部分通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を示した同期要求情報104を、同期装置103に送信する。
【００３４】
本実施形態では、各プロセッサから送信される同期要求情報104に示された通信時間情報は、部分通信フェーズごとに予測された、各部分通信フェーズにおける自プロセッサの通信時間のうち、最長の時間（以下「第1最長時間」と称する）のみを示す。
【００３５】
同期装置103は、すべてのプロセッサ101-(0)〜101-(N-1)から同期要求情報104を受信すると、各同期要求情報104に示された通信時間情報に基づいて、実行時間情報を作成する。実行時間情報は、各部分通信フェーズの実行時間を特定するための情報である。
【００３６】
同期装置103は、実行時間情報を作成すると、すべてのプロセッサ101-(0)〜101-(N-1)に、同期完了指示と実行時間情報とを示した同期完了情報105を送信する。
【００３７】
プロセッサ101-(0)〜101-(N-1)のそれぞれは、同期完了情報105を受信すると、集団通信を開始し、かつ、各部分通信フェーズにおける自プロセッサの通信を、同期完了情報105が示す実行時間情報にて特定される各部分通信フェーズの時間をかけて行う。
【００３８】
図２は、同期装置103として使用可能な同期装置201を示したブロック図である。
【００３９】
図２において、同期装置201は、作成部202と、同期完了情報配信部（以下、単に「配信部」と称する）203と、を含む。
【００４０】
作成部202は、一般的に作成手段と呼ぶことができる。
【００４１】
作成部202は、プロセッサ101-(0)〜101-(N-1)のそれぞれから同期要求情報104を受信すると、それら同期要求情報104内の通信時間情報に基づいて、実行時間情報を作成する。
【００４２】
本実施形態では、作成部202は、プロセッサ101-(0)〜101-(N-1)のすべてから同期要求情報104を受信すると、それら同期要求情報104が示す通信時間情報にて示された通信時間（第1最長時間）のうちで最長の時間（以下「第2最長時間」と称する）を特定する。作成部202は、第2最長時間を示す最長時間情報を、実行時間情報として作成する。
【００４３】
配信部203は、一般的に配信手段と呼ぶことができる。
【００４４】
配信部203は、作成部202にて作成された実行時間情報と、同期完了指示と、を示す同期完了情報105を、プロセッサ101-(0)〜101-(N-1)のそれぞれに配信する。本実施形態では、配信部203は、作成部202にて実行時間情報として作成された最長時間情報と、同期完了指示と、を示す同期完了情報105を、プロセッサ101-(0)〜101-(N-1)のそれぞれに一斉に配信する。
【００４５】
作成部202は、カウンタ204と、比較器205と、レジスタ206と、MUX（マルチプレクサ）207と、最大値レジスタ208と、比較器209と、を含む。
【００４６】
カウンタ204には、初期値としてプロセッサ数を表すNが設定される。カウンタ204は、同期装置201がプロセッサ101-(0)〜101-(N-1)のそれぞれから同期要求情報104を受信するごとに、カウント値を1ずつ減算していく。
【００４７】
比較器205は、カウンタ204のカウント値と0（ゼロ）とを比較する。比較器205は、カウンタ204のカウント値がゼロになると、つまり、同期装置201がプロセッサ101-(0)〜101-(N-1)のそれぞれから同期要求情報104を受信すると、配信指示を配信部203に出力する。比較器205は、配信指示を出力すると、初期状態への変更を示す初期状態指示を、カウンタ204とMUX207と最大値レジスタ208とに出力する。
【００４８】
なお、カウンタ204は、比較器205から初期状態指示を受け付けると、カウント値を初期値Nに設定する。
【００４９】
レジスタ206は、同期装置201がプロセッサ101-(0)〜101-(N-1)のそれぞれから同期要求情報104を受信するごとに、その同期要求情報104が示す通信時間情報を格納する。なお、本実施形態では、レジスタ206に格納される通信時間情報は、各プロセッサでの第1最長時間を示す。
【００５０】
MUX207は、初期値である0（ゼロ）と、レジスタ206に格納された通信時間情報と、を受け付ける。MUX207は、比較器205から初期状態指示を受け付けている間は、初期値0を出力し、一方、比較器205から初期状態指示を受け付けていない間は、レジスタ206内の通信時間情報を出力する。
【００５１】
最大値レジスタ208は、比較器205から初期状態指示を受け付けると、MUX207からの出力（この場合、初期値0）を格納する。
【００５２】
比較器209は、レジスタ206内の通信時間情報と、最大値レジスタ208内の情報と、を比較する。比較器209は、レジスタ206内の通信時間情報が示す時間が、最大値レジスタ208内の情報が示す時間よりも長い場合、更新指示を、最大値レジスタ208に出力する。
【００５３】
最大値レジスタ208は、更新指示を受け付けると、MUX207からの出力（この場合、レジスタ206内の通信時間情報）を格納する。
【００５４】
よって、最大値レジスタ208には、プロセッサ101-(0)〜101-(N-1)のそれぞれからの同期要求情報104が示す通信時間情報のうち、最長の時間（第2最長時間）を示す通信時間情報（以下「最大値」とも称する）が格納される。本実施形態では、この最大値が、最長時間情報として用いられる。
【００５５】
配信部203は、比較器205から配信指示を受け付けると、最大値レジスタ208内の通信時間情報（最大値）つまり最長時間情報を読み出し、その最長時間情報と、同期完了指示と、を示す同期完了情報105を、プロセッサ101-(0)〜101-(N-1)のそれぞれに配信する。
【００５６】
図３は、プロセッサ101-(0)〜101-(N-1)のいずれにも使用可能なプロセッサ301を示したブロック図である。
【００５７】
図３において、プロセッサ301は、処理部302と、受信装置303と、を含む。処理部302は、主記憶部304と、CPU305と、送信装置306と、を含む。送信装置306は、送信部307と、最大時間レジスタ308と、タイマ309と、を含む。
【００５８】
処理部302は、一般的に処理手段と呼ぶことができる。
【００５９】
処理部302は、同期要求情報104を同期装置103に送信する。
【００６０】
受信装置303は、一般的に受信手段と呼ぶことができる。
【００６１】
受信装置303は、同期装置103から、同期完了情報105を受信する。また、受信装置303は、プロセッサ101-(0)〜101-(N-1)の各々から自プロセッサ宛に送信されたデータを受信する。
【００６２】
処理部302は、同期完了情報105が受信されると、集団通信を開始し、かつ、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が、同期完了情報105内の実行時間情報にて特定される当該部分通信フェーズの実行時間以下である場合、当該部分通信フェーズの期間を当該部分通信フェーズの実行時間にする。
【００６３】
本実施形態では、処理部302は、同期完了情報105が受信されると、集団通信を開始し、かつ、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が、同期完了情報105内の最長時間情報にて示された第2最長時間以下である場合、その通信フェーズの期間を第2最長時間とする。
【００６４】
主記憶部304は、コンピュータにて読み取り可能な記録媒体である。主記憶部304には、種々のデータ、および、プロセッサ301の動作を規定するプログラムが記録されている。種々のデータは、例えば、集団通信で通信されるデータと、プロセッサ101-(0)〜101-(N-1)の間の距離を示す距離データと、を含む。なお、距離データは、各部分通信フェーズでの自プロセッサの通信時間が予測される際に使用される。
【００６５】
CPU305は、主記憶部304内のプログラムを読み取り実行することによって、プロセッサ301全体を制御する。
【００６６】
送信装置306は、同期要求情報104を同期装置103に送信し、また、集団通信を行う。
【００６７】
送信部307は、例えばCPU305からの指示に従い、パケットを用いて同期要求情報104を同期装置103に送信する。また、送信部307は、例えばCPU305からの指示に従い、部分通信フェーズごとに、ネットワーク102を介して、プロセッサ101-(0)〜101-(N-1)のうちの1つのプロセッサ宛に、パケットでデータを送信する。
【００６８】
最大時間レジスタ308は、各部分通信フェーズでの通信時間のうち最大の時間を示す情報（最長時間情報）を保持する。
【００６９】
タイマ309は、部分通信フェーズの時間（最長時間情報に示された時間）を測る。
【００７０】
同期装置103から送信された同期完了情報105は、受信装置303で受信される。同期完了情報105内の同期完了指示は、受信装置303によって送信部307に送られる。また、同期完了情報105内の最長時間情報は、受信装置303によって最大時間レジスタ308に格納される。
【００７１】
送信部307は、同期完了指示を受け取ると、最初の部分通信フェーズでの通信（送信）を開始し、最大時間レジスタ308内の値（最長時間情報に示された時間）をタイマ309にセットし、タイマ309を動かす。
【００７２】
タイマ309は、最長時間情報に示された時間を示すカウント値を、時間経過に伴ってカウントダウンしていく。タイマ309は、タイマ309のカウント値がゼロになると、カウント値がゼロになった旨の通知を送信部307に伝える。
【００７３】
送信部307は、1つの部分通信フェーズでの通信が終了した際に、タイマ309から、カウント値がゼロになった旨の通知を受けていない場合には、カウント値がゼロになった旨の通知を受け付けるまで、通信が終了した部分通信フェーズを維持し、カウント値がゼロになった旨の通知を受け付けると、次の部分通信フェーズでの通信を開始する。以下、全ての部分通信フェーズでの通信が終了するまで、同様の動作が繰り返される。
【００７４】
図４は、第１実施形態の動作を説明するためのフローチャートである。以下、図４を参照して第１実施形態の動作を説明する。
【００７５】
まず、集団通信フェーズ401に入る前の動作に関して説明を行う。なお、以下では、プロセッサ101-(0)〜101-(N-1)のそれぞれが行う動作を、「プロセッサi」が行う動作として説明する。
【００７６】
プロセッサi（プロセッサi 内のCPU305）は、集団通信フェーズを構成する各部分通信フェーズでの自プロセッサの送信時間（通信時間）の最大値Tiを予測する（ステップ402）。
【００７７】
例えば、CPU305は、部分通信フェーズごとに、その部分通信フェーズでのデータの送信先となるプロセッサまでの距離と、その部分通信フェーズで送信されるデータのサイズと、に基づいて、送信時間を計算して予測し、その最大値Ti（第1最長時間）を求める。
【００７８】
例えば、CPU305は、データの送信先となるプロセッサまでの距離が長いほど、送信時間が長くなり、また、送信されるデータのサイズが大きくなるほど、送信時間が長くなるように、送信時間を計算する。
【００７９】
なお、各部分通信フェーズでの自プロセッサの送信時間が、予めプロセッサi 内の主記憶部304に記憶されていてもよい。この場合、CPU305は、主記憶部304内の送信時間のうちの最大値Tiを特定する。
【００８０】
次に、CPU305は、同期命令を実行して、同期要求と、最大値Tiを示す通信時間情報と、を示した同期要求情報104を、各部分通信フェーズで行われる通信の詳細を示す通信情報と共に、送信部307に出力する。送信部307は、同期要求情報104と通信情報とを受け付けると、同期要求情報104を同期装置103に送信する（ステップ403）。
【００８１】
次に、CPU305は、同期装置103からの同期完了情報105を待つ（ステップ404）。
【００８２】
同期装置103では、作成部202は、プロセッサ101-(0)〜101-(N-1)のすべてから同期要求情報104を受信すると、それら同期要求情報104が示す通信時間情報にて示された通信時間（Ti）のうちの最長の時間（「第2最長時間」＝Tmax）を特定する。作成部202は、Tmaxを示す最長時間情報を、実行時間情報として作成する。
【００８３】
配信部203は、作成部202にて作成された最長時間情報と、同期完了指示と、を示す同期完了情報105を、プロセッサ101-(0)〜101-(N-1)のそれぞれに配信する。
【００８４】
プロセッサiでは、受信装置303が同期完了情報105を受信すると、受信装置303は、同期完了情報105内のTmaxを最大時間レジスタ308に格納し（ステップ405）、同期完了情報105内の同期完了指示を送信部307に出力する。処理部302は、Tmaxが最大時間レジスタ308に格納され、送信部307が同期完了指示を受け付けると、集団通信フェーズ401に入る。
【００８５】
次に、集団通信フェーズ401について説明する。
【００８６】
まず、送信部307は、最大時間レジスタ308内のTmaxをタイマ309にセットする（ステップ406）。
【００８７】
続いて、送信部307は、タイマ309を動かすと共に、CPU305から受け付けた通信情報に基づいて、部分通信フェーズj（j＝0〜M-1）での通信を開始する（ステップ407）。
【００８８】
続いて、部分通信フェーズjでの通信が完了すると、送信部307は、部分通信フェーズjでの通信が完了したとき、タイマ309の値がゼロになっているかどうかを調べる（ステップ408）。
【００８９】
もし、部分通信フェーズjでの通信が完了したときに、タイマ309の値がゼロになっていない場合には、送信部307は、タイマ309の値がゼロになるまで待つ（ステップ409）。
【００９０】
一方、部分通信フェーズjでの通信が完了したときに、タイマ309の値がすでにゼロになっていた場合には、つまり、部分通信フェーズjにおける自プロセッサの通信時間がTmaxよりも長いエラー状況が発生した場合には、送信部307は、エラー情報をCPU305に出力する（ステップ410）。
【００９１】
CPU305は、エラー情報を受け付けると、予測された最大値Tiが短かったためエラーが生じた旨の表示を、不図示の表示部に行わせ、最大値Tiの再設定をユーザに促す。
【００９２】
ステップ409でタイマ309の値がゼロなると、または、ステップ410でエラー情報が出力されると、送信部307は、通信情報を参照して、通信が終了した部分通信フェーズjが最後の部分通信フェーズM-1であるかどうかを調べる（ステップ411）。
【００９３】
もし、部分通信フェーズjが最後でなければ、送信部307は、処理をステップ406に戻して、通信情報に基づいて、次の部分通信フェーズを実行する。
【００９４】
一方、部分通信フェーズjが最後であると、送信部307は、部分通信フェーズが最後である旨の終了通知を、CPU305に出力する。CPU305は、終了通知を受け付けると、同期命令を実行して同期要求を送信部307に出力する。送信部307は、同期要求を受け付けると、同期要求を同期装置103に送信する（ステップ412）。
【００９５】
次に、CPU305は、同期装置103からの同期完了指示を待つ（ステップ413）。
【００９６】
一方、同期装置103では、作成部202は、プロセッサ101-(0)〜101-(N-1)のすべてから同期要求を受信すると、同期完了指示を、プロセッサ101-(0)〜101-(N-1)のそれぞれに配信する。
【００９７】
プロセッサiでは、受信装置303が、同期完了指示を受信すると、集団通信の処理が完了する。
【００９８】
本実施形態によれば、プロセッサ101-(0)〜101-(N-1)のそれぞれでは、処理部302は、部分通信フェーズごとに予測された部分通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間（Ti）を示す通信時間情報と、同期要求と、を同期装置103に送信する。
【００９９】
同期装置103では、作成部202は、プロセッサ101-(0)〜101-(N-1)のそれぞれから通信時間情報と同期要求とを受信すると、それら通信時間情報に基づいて、各部分通信フェーズの実行時間を特定するための実行時間情報を作成する。
【０１００】
同期装置103では、配信部203は、作成部202にて作成された実行時間情報と、同期完了指示と、をプロセッサ101-(0)〜101-(N-1)に配信する。
【０１０１】
プロセッサ101-(0)〜101-(N-1)では、処理部302は、受信装置303が実行時間情報と同期完了指示とを受信すると、集団通信を開始し、かつ、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする。
【０１０２】
したがって、本実施形態では、集団通信を開始するときにプロセッサ間の同期を取る処理（以下「プロセッサ間同期処理」と称する）が1回行われるが、2回目以降の部分通信フェーズの前では、部分通信フェーズの開始時刻を合わせるためのプロセッサ間同期処理が行われず、各部分通信フェーズでの予測通信時間に基づいて作成された実行時間に応じて、部分通信フェーズを切り換えることが可能になる。
【０１０３】
このため、部分通信フェーズごとにプロセッサ間同期処理を実行する必要がなくなる。
【０１０４】
その結果、各部分通信フェーズを開始する時刻を集団通信に参加している全プロセッサで合わせるために行われオーバヘッドとなっていたプロセッサ間同期処理の動作回数を少なくすることが可能になり、集団通信を高速に行うことが可能になる。
【０１０５】
図５は、第１実施形態の並列コンピュータシステムでの集団通信の動作を説明するための図である。図５に示すように、部分通信フェーズ501間で行われていたプロセッサ間同期処理502がなくなり、集団通信を高速化することが可能になる。
【０１０６】
また、本実施形態では、実行時間情報として、最長時間情報が用いられる。この場合、各プロセッサで予測された部分通信フェーズ単位での通信時間のうち最長の通信時間が、各部分通信フェーズの実行時間として用いられる可能性が高くなる。
【０１０７】
この場合、１つの実行時間（第2最長時間）で、すべての部分通信フェーズの時間を規定することが可能になる。
【０１０８】
また、本実施形態では、処理部302は、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が実行時間情報にて特定される当該部分通信フェーズの実行時間よりも長いエラー状況が発生すると、エラー情報を出力する。
【０１０９】
エラー状況は、例えば、最大値Tiの見積もりが適切でないときに生じる。このため、エラー情報の出力は、最大値Tiの見積もりが適切でないことを意味する。よって、処理部302がエラー情報を出力することによって、ユーザは、最大値Tiの見積もりの手法、さらに言えば、各部分通信フェーズでの自プロセッサの通信時間の予測の手法を見直し、最大値Tiの見積もりを適切にすることが可能になる。
【０１１０】
（第２実施形態）
図６は、本発明の第２実施形態の並列コンピュータシステムを示したブロック図である。図６において、図１に示したものと同一構成のものには同一符号を付してある。
【０１１１】
図６において、並列コンピュータシステムは、複数のプロセッサ101A-(0)〜101A-(N-1)と、ネットワーク102と、プロセッサ間同期装置（以下、単に「同期装置」と称する）103Aと、を含む。なお、Nは、2以上の整数である。
【０１１２】
複数のプロセッサ101A-(0)〜101A-(N-1)は、集団通信を行う。集団通信では、複数のプロセッサ101A-(0)〜101A-(N-1)は、ネットワーク102を介して同時に通信を行う。
【０１１３】
本実施形態では、集団通信は、複数の通信フェーズのそれぞれでプロセッサ間の通信が行われることによって実行される。本実施形態では、通信フェーズの数をM（Mは2以上の整数）とする。
【０１１４】
各通信フェーズでは、複数のプロセッサ101A-(0)〜101A-(N-1)のうち２つ以上のプロセッサのそれぞれがネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。以下では、通信フェーズを「部分通信フェーズ」と称する。
【０１１５】
本実施形態では、複数のプロセッサ101A-(0)〜101A-(N-1)は、集団通信として、次のような全対全通信を行う。プロセッサ101A-(0)〜101A-(N-1)のそれぞれは、各部分通信フェーズで、ネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。
【０１１６】
このため、本実施形態で全対全通信が実行される場合、プロセッサ101A-(0)〜101A-(N-1)の数と同じ数の部分通信フェーズが必要になる。なお、集団通信は、全対全通信に限るものではない。
【０１１７】
プロセッサ101A-(0)〜101A-(N-1)のそれぞれは、同期命令を実行すると、部分通信フェーズごとに予測された部分通信フェーズにおける自プロセッサの通信時間のそれぞれを示す個別通信時間情報（通信時間情報）と、同期要求と、を示した同期要求情報104Aを、同期装置103Aに送信する。ここで、個別通信時間情報は、各部分通信フェーズにおける自プロセッサの予測通信時間のそれぞれを示すため、複数の予測通信時間を示すことになる。なお、個別通信時間情報は、部分通信フェーズが実行される順番に、各部分通信フェーズでの予測通信時間を示す。
【０１１８】
同期装置103Aは、すべてのプロセッサ101A-(0)〜101A-(N-1)から同期要求情報104Aを受信すると、各同期要求情報104Aに示された個別通信時間情報に基づいて、部分通信フェーズごとに、部分通信フェーズでの各プロセッサの通信時間のうち最長の時間を示す個別最長時間情報を、実行時間情報として作成する。
【０１１９】
同期装置103Aは、個別最長時間情報（実行時間情報）を作成すると、すべてのプロセッサ101A-(0)〜101A-(N-1)に、同期完了指示と個別最長時間情報（実行時間情報）とを示した同期完了情報105Aを送信する。
【０１２０】
プロセッサ101A-(0)〜101A-(N-1)のそれぞれは、同期完了情報105Aを受信すると、集団通信を開始し、かつ、各部分通信フェーズにおける自プロセッサの通信を、同期完了情報105Aが示す個別最長時間情報（実行時間情報）にて特定される各部分通信フェーズの時間をかけて行う。
【０１２１】
図７は、同期装置103Aとして使用可能な同期装置701を示したブロック図である。図７において、図２に示したものと同一構成のものには同一符号を付してある。
【０１２２】
図２において、同期装置701は、作成部702と、同期完了情報配信部（以下、単に「配信部」と称する）703と、を含む。
【０１２３】
作成部702は、一般的に作成手段と呼ぶことができる。
【０１２４】
作成部702は、プロセッサ101A-(0)〜101A-(N-1)のそれぞれから同期要求情報104Aを受信すると、それら同期要求情報104A内の個別通信時間情報に基づいて、個別最長時間情報を、実行時間情報として作成する。
【０１２５】
配信部703は、一般的に配信手段と呼ぶことができる。
【０１２６】
配信部703は、作成部702にて作成された個別最長時間情報（実行時間情報）と、同期完了指示と、を示す同期完了情報105Aを、プロセッサ101A-(0)〜101A-(N-1)のそれぞれに配信する。本実施形態では、配信部703は、作成部702にて作成された個別最長時間情報と、同期完了指示と、を示す同期完了情報105Aを、プロセッサ101A-(0)〜101A-(N-1)のそれぞれに一斉に配信する。
【０１２７】
作成部702は、カウンタ204と、比較器205と、レジスタ206Aと、MUX207と、最大値レジスタファイル208Aと、比較器209Aと、を含む。
【０１２８】
カウンタ204には、初期値としてプロセッサ数を表すNが設定される。カウンタ204は、同期装置701がプロセッサ101A-(0)〜101A-(N-1)のそれぞれから同期要求情報104Aを受信するごとに、カウント値を1ずつ減算していく。
【０１２９】
比較器205は、カウンタ204のカウント値と0（ゼロ）とを比較する。比較器205は、カウンタ204のカウント値がゼロになると、つまり、同期装置701がプロセッサ101A-(0)〜101A-(N-1)のそれぞれから同期要求情報104Aを受信すると、配信指示を配信部703に出力する。比較器205は、配信指示を出力すると、初期状態指示を、カウンタ204とMUX207と最大値レジスタファイル208Aとに出力する。
【０１３０】
なお、カウンタ204は、比較器205から初期状態指示を受け付けると、カウント値を初期値Nに設定する。
【０１３１】
レジスタ206Aは、同期装置701がプロセッサ101A-(0)〜101A-(N-1)のそれぞれから同期要求情報104Aを受信するごとに、その同期要求情報104Aが示す個別通信時間情報を格納する。個別通信時間情報は、M個の部分通信フェーズでの予測通信時間を、部分通信フェーズが実行される順番に示す。
【０１３２】
MUX207は、初期値である0（ゼロ）と、レジスタ206Aに格納された通信時間情報と、を受け付ける。MUX207は、比較器205から初期状態指示を受け付けている間は、初期値0を出力し、一方、比較器205から初期状態指示を受け付けていない間は、レジスタ206A内の通信時間情報を出力する。
【０１３３】
最大値レジスタファイル208Aは、部分通信フェーズごとに情報を格納できる記憶部である。最大値レジスタファイル208Aは、比較器205から初期状態指示を受け付けると、MUX207からの出力（この場合、初期値0）を格納する。
【０１３４】
比較器209Aは、レジスタ206A内の個別通信時間情報に示された部分通信フェーズごとの予測通信時間と、最大値レジスタファイル208A内の部分通信フェーズごとの情報とを、部分通信フェーズ単位で比較する。
【０１３５】
比較器209Aは、レジスタ206A内の予測通信時間が最大値レジスタファイル208A内の情報よりも大きい部分通信フェーズがあると、その部分通信フェーズの情報を更新する旨の部分更新指示を、最大値レジスタファイル208Aに出力する。
【０１３６】
最大値レジスタファイル208Aは、部分更新指示を受け付けると、最大値レジスタファイル208A内の情報のうち、部分更新指示が示す部分通信フェーズの情報を、MUX207からの出力（この場合、レジスタ206A内の予測通信時間のうち、部分更新指示が示す部分通信フェーズの予測通信時間を示す情報）に更新する。なお、最大値レジスタファイル208A内の情報は、個別最長時間情報と呼ぶことができる。作成部702は、個別最長時間情報を、実行時間情報として作成する。
【０１３７】
配信部703は、比較器205から配信指示を受け付けると、最大値レジスタファイル208A内の個別最長時間情報を読み出し、その個別最長時間情報を、実行時間情報として、同期完了指示と共に示す同期完了情報105Aを、プロセッサ101A-(0)〜101A-(N-1)のそれぞれに配信する。
【０１３８】
図８は、プロセッサ101A-(0)〜101A-(N-1)のいずれにも使用可能なプロセッサ801を示したブロック図である。なお、図８において、図３に示したものと同一構成のものには同一符号を付してある。
【０１３９】
図８において、プロセッサ801は、処理部802と、受信装置803と、を含む。処理部802は、主記憶部304と、CPU305Aと、送信装置306Aと、を含む。送信装置306Aは、送信部307Aと、最大時間レジスタファイル308Aと、タイマ309Aと、を含む。
【０１４０】
処理部802は、一般的に処理手段と呼ぶことができる。
【０１４１】
処理部802は、同期要求情報104Aを同期装置103Aに送信する。
【０１４２】
受信装置803は、一般的に受信手段と呼ぶことができる。
【０１４３】
受信装置803は、同期装置103Aから、同期完了情報105Aを受信する。また、受信装置803は、プロセッサ101A-(0)〜101A-(N-1)の各々から自プロセッサ宛に送信されたデータを受信する。
【０１４４】
主記憶部304は、コンピュータにて読み取り可能な記録媒体である。主記憶部304には、種々のデータ、および、プロセッサ801の動作を規定するプログラムが記録されている。種々のデータは、例えば、集団通信で通信されるデータと、プロセッサ101A-(0)〜101A-(N-1)の間の距離を示す距離データと、を含む。なお、距離データは、各部分通信フェーズでの自プロセッサの通信時間が予測される際に使用される。
【０１４５】
CPU305Aは、主記憶部304内のプログラムを読み取り実行することによって、プロセッサ801全体を制御する。
【０１４６】
送信装置306Aは、同期要求情報104Aを同期装置103Aに送信し、また、集団通信を行う。
【０１４７】
送信部307Aは、例えばCPU305Aからの指示に従い、パケットを用いて同期要求情報104Aを同期装置103Aに送信する。また、送信部307Aは、例えばCPU305Aからの指示に従い、部分通信フェーズごとに、ネットワーク102を介して、プロセッサ101A-(0)〜101A-(N-1)のうちの1つのプロセッサ宛に、パケットでデータを送信する。
【０１４８】
最大時間レジスタファイル308Aは、集団通信での部分通信フェーズごとに、部分通信フェーズにかかる最大の時間を示す情報（最長時間情報）を保持する。
【０１４９】
タイマ309Aは、部分通信フェーズごとに、部分通信フェーズの時間（最長時間情報に示された時間）を測る。
【０１５０】
同期装置103Aから送信された同期完了情報105Aは、受信装置803で受信される。同期完了情報105A内の同期完了指示は、受信装置803によって送信部307Aに送られる。また、同期完了情報105A内の個別最長時間情報は、受信装置803によって最大時間レジスタファイル308Aに格納される。
【０１５１】
送信部307Aは、同期完了指示を受け取ると、最初の部分通信フェーズでの通信（送信）を開始し、最大時間レジスタファイル308A内の値のうち、実行される部分通信フェーズの値（最長時間情報）をタイマ309Aにセットし、タイマ309Aを動かす。
【０１５２】
タイマ309Aは、最長時間情報に示された時間を示すカウント値を、時間経過に伴ってカウントダウンしていく。タイマ309Aは、タイマ309Aのカウント値がゼロになると、カウント値がゼロになった旨の通知を送信部307Aに伝える。
【０１５３】
送信部307は、1つの部分通信フェーズでの通信が終了した際に、タイマ309Aから、カウント値がゼロになった旨の通知を受けていない場合には、カウント値がゼロになった旨の通知を受け付けるまで、通信が終了した部分通信フェーズを維持し、カウント値がゼロになった旨の通知を受け付けると、次の部分通信フェーズでの通信を開始する。以下、全ての部分通信フェーズでの通信が終了するまで、同様の動作が繰り返される。
【０１５４】
図９は、第２実施形態の動作を説明するためのフローチャートである。以下、図９を参照して第２実施形態の動作を説明する。
【０１５５】
まず、集団通信フェーズ901に入る前の動作に関して説明を行う。なお、以下では、プロセッサ101A-(0)〜101A-(N-1)のそれぞれが行う動作を、「プロセッサi」が行う動作として説明する。
【０１５６】
プロセッサi（プロセッサi 内のCPU305A）は、集団通信フェーズを構成する部分通信フェーズjでの送信時間（通信時間）Tij（j=0〜M-1）求める（ステップ902）。
【０１５７】
例えば、CPU305Aは、部分通信フェーズjでのデータの送信先となるプロセッサまでの距離と、部分通信フェーズjで送信されるデータのサイズと、に基づいて、送信時間Tijを計算して予測する。
【０１５８】
例えば、CPU305Aは、データの送信先となるプロセッサまでの距離が長いほど、送信時間が長くなり、また、送信されるデータのサイズが大きくなるほど、送信時間が長くなるように、送信時間Tijを計算する。
【０１５９】
なお、各部分通信フェーズでの自プロセッサの送信時間が、予めプロセッサi 内の主記憶部304に記憶されていてもよい。この場合、CPU305Aは、主記憶部304内の送信時間Tijを読み出す。
【０１６０】
次に、CPU305Aは、同期命令を実行して、同期要求と、Ti0〜TiM-1を示す個別通信時間情報と、を示した同期要求情報104Aを、各部分通信フェーズで行われる通信の詳細を示す通信情報と共に、送信部307Aに出力する。送信部307Aは、同期要求情報104Aと通信情報とを受け付けると、同期要求情報104Aを同期装置103Aに送信する（ステップ903）。
【０１６１】
次に、CPU305Aは、同期装置103Aからの同期完了情報105Aを待つ（ステップ904）。
【０１６２】
同期装置103Aでは、作成部702は、プロセッサ101A-(0)〜101A-(N-1)のすべてから同期要求情報104Aを受信すると、それら同期要求情報104Aが示す個別通信時間情報に基づいて、各部分通信フェーズでの送信時間の最大値であるTmax0〜TmaxM-1を示す個別最長時間情報を、実行時間情報として作成する。
【０１６３】
配信部703は、作成部702にて作成された個別最長時間情報と、同期完了指示と、を示す同期完了情報105Aを、プロセッサ101A-(0)〜101A-(N-1)のそれぞれに配信する。
【０１６４】
プロセッサiでは、受信装置803が同期完了情報105Aを受信すると、受信装置803は、同期完了情報105A内のTmax0〜TmaxM-1を、最大時間レジスタファイル308Aに格納し（ステップ905）、同期完了情報105A内の同期完了指示を送信部307Aに出力する。処理部802は、Tmax0〜TmaxM-1が最大時間レジスタファイル308Aに格納され、送信部307Aが同期完了指示を受け付けると、集団通信フェーズ901に入る。
【０１６５】
次に、集団通信フェーズ901について説明する。
【０１６６】
まず、送信部307Aは、最大時間レジスタファイル308A内のTmax0〜TmaxM-1のうち、これから実行される部分通信フェーズj （j=0〜M-1）に対応する値Tmaxjを、タイマ309Aにセットする（ステップ906）。
【０１６７】
続いて、送信部307Aは、タイマ309Aを動かすと共に、CPU305Aから受け付けた通信情報に基づいて、部分通信フェーズjの通信を開始する（ステップ907）。
【０１６８】
続いて、部分通信フェーズjの通信が完了すると、送信部307Aは、部分通信フェーズjの通信が完了したとき、タイマ309Aの値がゼロになっているかどうかを調べる（ステップ908）。
【０１６９】
もし、部分通信フェーズjの通信が完了したとき、タイマ309Aの値がゼロになっていない場合には、送信部307Aは、タイマ309Aの値がゼロになるまで待つ（ステップ909）。
【０１７０】
一方、部分通信フェーズjでの通信が完了したときに、タイマ309Aの値がすでにゼロになっていた場合には、つまり、部分通信フェーズjにおける自プロセッサの通信時間がTmaxjよりも長いエラー状況が発生した場合には、送信部307Aは、エラー情報をCPU305Aに出力する（ステップ910）。
【０１７１】
CPU305Aは、エラー情報を受け付けると、予測された最大値Tmaxjが短かったためエラーが生じた旨の表示を、不図示の表示部に行わせ、最大値Tmaxjの再設定をユーザに促す。
【０１７２】
ステップ909でタイマ309Aの値がゼロなると、または、ステップ910でエラー情報が出力されると、送信部307Aは、通信情報を参照して、部分通信フェーズjが最後の部分通信フェーズ、すなわち、部分通信フェーズM-1であるかどうかを調べる（ステップ911）。
【０１７３】
もし、部分通信フェーズjが最後でなければ、送信部307Aは、処理をステップ906に戻して、通信情報に基づいて次の部分通信フェーズを実行する。
【０１７４】
一方、部分通信フェーズjが最後であると、送信部307Aは、部分通信フェーズが最後である旨の終了通知を、CPU305Aに出力する。CPU305Aは、終了通知を受け付けると、同期命令を実行して同期要求を送信部307Aに出力する。送信部307Aは、同期要求を受け付けると、同期要求を同期装置103Aに送信する（ステップ912）。
【０１７５】
次に、CPU305Aは、同期装置103Aからの同期完了指示を待つ（ステップ913）。
【０１７６】
一方、同期装置103Aでは、作成部802は、プロセッサ101A-(0)〜101A-(N-1)のすべてから同期要求を受信すると、同期完了指示を、プロセッサ101A-(0)〜101A-(N-1)のそれぞれに配信する。
【０１７７】
プロセッサiでは、受信装置803は、同期完了指示を受信すると、集団通信処理が完了する。
【０１７８】
本実施形態では、プロセッサ間同期処理は、集団通信フェーズ901に入る前に1回と、集団通信フェーズの後に1回実行されるだけになり、部分通信フェーズごとにプロセッサ間同期処理を実行する必要がない。その結果、集団通信を高速化することができる。
【０１７９】
本実施形態では、作成部702は、各プロセッサから通信時間情報として送信された個別通信時間情報と同期要求とを受信すると、個別通信時間情報に基づいて、部分通信フェーズごとに部分通信フェーズでの各プロセッサの通信時間のうち最長の時間を示す個別最長時間情報を、実行時間情報として作成する。
【０１８０】
処理部802は、個別最長時間情報と同期完了指示とが受信されると、集団通信を開始し、かつ、部分通信フェーズごとに、部分通信フェーズにおける自プロセッサの通信時間が個別最長時間情報にて示された当該部分通信フェーズの時間以下である場合、当該部分通信フェーズの期間を、個別最長時間情報にて示された当該部分通信フェーズの時間とする。
【０１８１】
このため、部分通信フェーズ間での送信時間にばらつきがある場合に、部分通信フェーズごとに、部分通信フェーズでの予測最大送信時間を使うことで、集団通信をより高速化することが可能になる。
【０１８２】
（第３実施形態）
次に、本発明の第３実施形態の並列コンピュータシステムを説明する。
【０１８３】
第３実施形態の並列コンピュータシステムでは、第１実施形態の並列コンピュータシステム内のプロセッサ101-(0)〜101-(N-1)の代わりに、プロセッサ101B-(0)〜101B-(N-1)が使用され、同期装置103の代わりに、同期装置103Bが使用される。なお、同期装置103Bの構成は、同期装置103と同様である。
【０１８４】
複数のプロセッサ101B-(0)〜101B-(N-1)は、集団通信を行う。集団通信では、複数のプロセッサ101B-(0)〜101B-(N-1)は、ネットワーク102を介して同時に通信を行う。
【０１８５】
本実施形態では、集団通信は、複数の通信フェーズのそれぞれでプロセッサ間の通信が行われることによって実行される。本実施形態では、通信フェーズの数をM（Mは2以上の整数）とする。
【０１８６】
各通信フェーズでは、複数のプロセッサ101B-(0)〜101B-(N-1)のうち２つ以上のプロセッサのそれぞれがネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。以下では、通信フェーズを「部分通信フェーズ」と称する。
【０１８７】
本実施形態では、複数のプロセッサ101B-(0)〜101B-(N-1)は、集団通信として、次のような全対全通信を行う。プロセッサ101B-(0)〜101B-(N-1)のそれぞれは、各部分通信フェーズで、ネットワーク102を介して互いに異なる１つのプロセッサにデータを送信する。
【０１８８】
このため、本実施形態で全対全通信が実行される場合、プロセッサ101B-(0)〜101B-(N-1)の数と同じ数の部分通信フェーズが必要になる。なお、集団通信は、全対全通信に限るものではない。
【０１８９】
図１０は、プロセッサ101B-(0)〜101B-(N-1)のいずれにも使用可能なプロセッサ1001を示したブロック図である。なお、図１０において、図３に示したものと同一構成のものには同一符号を付してある。
【０１９０】
プロセッサ1001は、処理部1002、受信装置1003と、を含む。処理部1002は、主記憶部304と、CPU305Bと、送信装置306Bと、を含む。送信装置306Bは、送信部307Bと、最大時間レジスタ308と、タイマ309と、予測ミスカウンタ1004と、を含む。
【０１９１】
予測ミスカウンタ1004は、一般的に記憶手段と呼ぶことができる。
【０１９２】
予測ミスカウンタ1004は、複数の部分通信フェーズで発生したエラー状況の発生回数を記憶する。
【０１９３】
処理部1002は、一般的に処理手段と呼ぶことができる。
【０１９４】
処理部1002は、同期要求情報104Bを同期装置103Bに送信する。
【０１９５】
受信装置1003は、一般的に受信手段と呼ぶことができる。
【０１９６】
受信装置1003は、同期装置103Bから、同期完了情報105Bを受信する。また、受信装置1003は、プロセッサ101B-(0)〜101B-(N-1)の各々から自プロセッサ宛に送信されたデータを受信する。
【０１９７】
処理部1002は、同期完了情報105Bが受信されると、集団通信を開始し、かつ、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が、同期完了情報105B内の実行時間情報にて特定される当該部分通信フェーズの実行時間以下である場合、当該部分通信フェーズの期間を当該部分通信フェーズの実行時間にする。
【０１９８】
本実施形態では、処理部1002は、同期完了情報105Bが受信されると、集団通信を開始し、かつ、各部分通信フェーズにおいて、部分通信フェーズにおける自プロセッサの通信時間が、同期完了情報105B内の最長時間情報にて示された最長時間以下である場合、その通信フェーズの期間をその最長時間とする。
【０１９９】
処理部1002は、集団通信が終了すると、予測ミスカウンタ1004のカウント値（エラー状況の発生回数を示す回数情報）と、同期要求と、を示す同期要求情報104Cを、同期装置103Bに送信する。
【０２００】
同期装置103Bでは、作成部702では、プロセッサ101B-(0)〜101B-(N-1)のそれぞれから同期要求情報104Cを受信すると、同期要求情報104Cにて示されるカウント値のうちの最大値を示す最大回数情報を作成する。
【０２０１】
同期装置103Bでは、配信部703は、作成部702が作成した最大回数情報と、同期完了指示と、を示す同期完了情報105Cを、プロセッサ101B-(0)〜101B-(N-1)に送信する。
【０２０２】
受信装置1003は、同期完了情報105Cを受信すると、同期完了情報105C内の最大回数情報を予測ミスカウンタ1004に格納し、同期完了情報105C内の同期完了指示を、送信部307Bに出力する。
【０２０３】
処理部1002は、新たに通信時間情報を送信する状況になると、予測ミスカウンタ1004内の最大回数情報が示す回数が多くなるほど、部分通信フェーズごとに予測された部分通信フェーズにおける自プロセッサの通信時間が長くなるように、その通信時間を補正し、その補正された通信時間のうち少なくとも最長の時間を示す通信時間情報を、新たな通信時間情報として、同期要求と共に同期装置103Bに送信する。
【０２０４】
主記憶部304は、コンピュータにて読み取り可能な記録媒体である。主記憶部304には、種々のデータ、および、プロセッサ1001の動作を規定するプログラムが記録されている。種々のデータは、例えば、集団通信で通信されるデータと、プロセッサ101B-(0)〜101B-(N-1)の間の距離を示す距離データと、を含む。なお、距離データは、各部分通信フェーズでの自プロセッサの通信時間が予測される際に使用される。
【０２０５】
CPU305Bは、主記憶部304内のプログラムを読み取り実行することによって、プロセッサ301全体を制御する。
【０２０６】
送信装置306Bは、同期要求情報104Bおよび104Cを別々に同期装置103に送信し、また、集団通信を行う。
【０２０７】
送信部307Bは、例えばCPU305Bからの指示に従い、パケットを用いて、同期要求情報104Bおよび104Cを同期装置103に別々に送信する。また、送信部307Bは、例えばCPU305Bからの指示に従い、部分通信フェーズごとに、ネットワーク102を介して、プロセッサ101B-(0)〜101B-(N-1)のうちの1つのプロセッサ宛に、パケットでデータを送信する。
【０２０８】
同期装置103Bから送信された同期完了情報105Bおよび105Cは、受信装置1003で受信される。同期完了情報105Bおよび105C内の同期完了指示は、受信装置1003によって送信部307Bに送られる。また、同期完了情報105B内の最長時間情報は、受信装置1003によって最大時間レジスタ308に格納される。また、同期完了情報105C内の最大回数情報は、受信装置1003によって予測ミスカウンタ1004に格納される。
【０２０９】
送信部307Bは、同期完了指示を受け取ると、最初の部分通信フェーズでの通信（送信）を開始し、最大時間レジスタ308内の値（最長時間情報に示された時間）をタイマ309にセットし、タイマ309を動かす。
【０２１０】
タイマ309は、最長時間情報に示された時間を示すカウント値を、時間経過に伴ってカウントダウンしていく。タイマ309は、タイマ309のカウント値がゼロになると、カウント値がゼロになった旨の通知を送信部307Bに伝える。
【０２１１】
送信部307Bは、1つの部分通信フェーズでの通信が終了した際に、タイマ309から、カウント値がゼロになった旨の通知を受けていない場合には、カウント値がゼロになった旨の通知を受け付けるまで、通信が終了した部分通信フェーズを維持し、カウント値がゼロになった旨の通知を受け付けると、次の部分通信フェーズでの通信を開始する。
【０２１２】
また、送信部307Bは、1つの部分通信フェーズでの通信が終了した際に、タイマ309から、カウント値がゼロになった旨の通知を既に受けていた場合には、予測ミスカウンタ1004のカウント値を＋１する。
【０２１３】
以下、全ての部分通信フェーズでの通信が終了するまで、同様の動作が繰り返される。
【０２１４】
図１１は、第３実施形態の動作を説明するためのフローチャートである。
【０２１５】
まず、集団通信フェーズ1101に入る前の動作に関して説明を行う。なお、以下では、プロセッサ101B-(0)〜101B-(N-1)のそれぞれが行う動作を、「プロセッサi」が行う動作として説明する。
【０２１６】
プロセッサi（プロセッサi 内のCPU305B）は、集団通信フェーズを構成する各部分通信フェーズでの自プロセッサの送信時間（通信時間）の最大値Tiを予測し、予測ミスカウンタ1004の値を使って最大値Tiを補正してTi’を求める（ステップ1102）。
【０２１７】
例えば、CPU305Bは、図３に示したCPU305と同様に最大値Tiを求める。なお、各部分通信フェーズでの自プロセッサの送信時間が、予めプロセッサi 内の主記憶部304に記憶されていてもよい。この場合、CPU305Bは、主記憶部304内の送信時間のうちの最大値Tiを特定する。
【０２１８】
続いて、CPU305Bは、例えば、予測ミスカウンタの値が0ならば、補正なし、予測ミスカウンタ1004の値が大きければ大きいほど、Tiに大きな値を加えてTi’を求める。
【０２１９】
次に、CPU305Bは、同期命令を実行して、同期要求と、Ti’を示す通信時間情報と、を示した同期要求情報104Bを、各部分通信フェーズで行われる通信の詳細を示す通信情報と共に、送信部307Bに出力する。送信部307Bは、同期要求情報104Bと通信情報とを受け付けると、同期要求情報104Bを同期装置103Bに送信する（ステップ1103）。
【０２２０】
次に、CPU305Bは、同期装置103Bからの同期完了情報105Bを待つ（ステップ1104）。
【０２２１】
同期装置103Bでは、作成部202は、プロセッサ101B-(0)〜101B-(N-1)のすべてから同期要求情報104Bを受信すると、それら同期要求情報104Bが示す通信時間情報にて示されたTi’のうちで最長の時間（T’max）を特定する。作成部202は、T’maxを示す最長時間情報を、実行時間情報として作成する。
【０２２２】
配信部203は、作成部202にて作成された最長時間情報（T’max）と、同期完了指示と、を示す同期完了情報105Bを、プロセッサ101B-(0)〜101B-(N-1)のそれぞれに配信する。
【０２２３】
プロセッサiでは、受信装置1003が同期完了情報105Bを受信すると、受信装置1003は、同期完了情報105B内のT’maxを最大時間レジスタ308に格納し、予測ミスカウンタ1004の値を0にし（ステップ1105）、同期完了情報105B内の同期完了指示を送信部307Bに出力する。処理部1002は、T’max が最大時間レジスタ308に格納され、予測ミスカウンタ1004の値が0にされ、送信部307Bが同期完了指示を受け付けると、集団通信フェーズ1101に入る。
【０２２４】
次に、集団通信フェーズ1101について説明する。
【０２２５】
まず、送信部307Bは、最大時間レジスタ308内の値T’maxをタイマ309にセットする（ステップ1106）。
【０２２６】
続いて、送信部307Bは、タイマ309を動かすと共に、CPU305Bから受け付けた通信情報に基づいて、部分通信フェーズj（j＝0〜M-1）での通信を開始する（ステップ1107）。
【０２２７】
続いて、部分通信フェーズjでの通信が完了すると、送信部307Bは、部分通信フェーズjでの通信が完了したとき、タイマ309の値がゼロになっているかどうかを調べる（ステップ1108）。
【０２２８】
もし、部分通信フェーズjでの通信が完了したときに、タイマ309の値がゼロになっていない場合には、送信部307Bは、タイマ309の値がゼロになるまで待つ（ステップ1109）。
【０２２９】
一方、部分通信フェーズjでの通信が完了したときに、タイマ309の値がすでにゼロになっていた場合には、つまり、部分通信フェーズjにおける自プロセッサの通信時間がT’maxよりも長いエラー状況が発生した場合には、送信部307Bは、エラー情報をCPU305Bに出力し（ステップ1110）、予測ミスカウンタ1004の値を＋１する（ステップ1111）。
【０２３０】
CPU305は、エラー情報を受け付けると、予測された最大値Ti’が短かったためエラーが生じた旨の表示を、不図示の表示部に行わせる。
【０２３１】
ステップ1109でタイマ309の値がゼロなると、または、ステップ1111で予測ミスカウンタ1004の値が＋１されると、送信部307Bは、通信情報を参照して、通信が終了した部分通信フェーズjが最後の部分通信フェーズM-1であるかどうかを調べる（ステップ1112）。
【０２３２】
もし、部分通信フェーズjが最後でなければ、送信部307Bは、処理をステップ1106に戻して、通信情報に基づいて、次の部分通信フェーズを実行する。
【０２３３】
一方、部分通信フェーズjが最後であると、送信部307Bは、部分通信フェーズが最後である旨の終了通知を、CPU305Bに出力する。CPU305Bは、終了通知を受け付けると、同期命令を実行して、同期要求と、予測ミスカウンタ1004のカウント値と、を示す同期要求情報104Cを、送信部307Bに出力する。送信部307Bは、同期要求情報104Cを受け付けると、同期要求情報104Cを同期装置103Bに送信する（ステップ1113）。
【０２３４】
次に、CPU305Bは、同期装置103Bからの同期完了指示105Cを待つ（ステップ1114）。
【０２３５】
一方、同期装置103Bでは、作成部202は、プロセッサ101B-(0)〜101B-(N-1)のすべてから同期完了指示105Cを受信すると、それら同期完了指示105C内の予測ミスカウンタ1004のカウント値のうちの最大値を示す最大回数情報を作成する。
【０２３６】
同期装置103Bでは、配信部703は、作成部702が作成した最大回数情報と、同期完了指示と、を示す同期完了情報105Cを、プロセッサ101B-(0)〜101B-(N-1)に送信する。
【０２３７】
プロセッサiでは、受信装置1103は、同期完了情報105Cを受信すると、同期完了情報105C内の最大回数情報を予測ミスカウンタ1004にセットし（ステップ1115）、集団通信の処理が完了する。
【０２３８】
本実施形態では、プロセッサ間同期処理は、集団通信フェーズ1101に入る前に1回と、集団通信フェーズの後に1回実行されるだけになり、部分通信フェーズごとにプロセッサ間同期処理を実行する必要がない。その結果、集団通信を高速化することができる。
【０２３９】
本実施形態では、予測された部分通信フェーズの通信時間の最大値よりも、部分通信フェーズでの実際の通信時間が長かった場合には、次回の集団通信での部分通信フェーズの通信時間の最大値Tiを予測ミスカウンタ308の値により補正することで、Ti’が求められる。そして、Ti’に基づいてT’maxが設定される。このため、予測された部分通信フェーズの通信時間を自動的に適切な値に調整することが可能となる。
【０２４０】
なお、第３実施形態が、第１実施形態に新たな機能（予測ミスカウンタ1004を用いて、各部分通信フェーズでの予測通信時間を補正する機能）を追加したものとして示されたが、第２実施形態に、第３実施形態の機能（予測ミスカウンタ1004を用いて、各部分通信フェーズでの予測通信時間を補正する機能）が追加されてもよい。
【０２４１】
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【０２４２】
（付記１）
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサであって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する処理手段と、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信手段と、を含み、
前記処理手段は、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする、プロセッサ。
【０２４３】
（付記２）
付記１に記載のプロセッサにおいて、
前記受信手段は、前記実行時間情報として配信された、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情と、前記同期完了指示と、を受信し、
前記処理手段は、前記最長時間情報と前記同期完了指示とが受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記最長時間情報にて示された時間以下である場合、当該通信フェーズの期間を当該最長時間情報にて示された時間とする、プロセッサ。
【０２４４】
（付記３）
各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成手段と、
前記作成手段にて作成された実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信手段と、を含む同期装置。
【０２４５】
（付記４）
付記３に記載の同期装置において、
前記作成手段は、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情報を、前記実行時間情報として作成し、
前記配信手段は、前記最長時間情報を、前記実行時間情報として、前記同期完了指示と共に前記複数のプロセッサに配信する、同期装置。
【０２４６】
（付記５）
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムでの通信方法であって、
各プロセッサが、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置が、前記各プロセッサから前記通信時間情報と前記同期要求とを受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記同期装置が、前記実行時間情報と同期完了指示とを前記複数のプロセッサに配信する配信ステップと、
前記各プロセッサが、前記同期装置から、前記実行時間情報と前記同期完了指示とを受信する受信ステップと、
前記各プロセッサが、前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含む通信方法。
【０２４７】
（付記６）
付記５に記載の通信方法において、
前記作成ステップでは、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情報を、前記実行時間情報として作成し、
前記配信ステップでは、前記最長時間情報を、前記実行時間情報として、前記同期完了指示と共に前記複数のプロセッサに配信し、
前記受信ステップでは、前記実行時間情報として配信された最長時間情報と、前記同期完了指示と、を受信し、
前記制御ステップでは、前記最長時間情報と前記同期完了指示とが受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記最長時間情報にて示された時間以下である場合、当該通信フェーズの期間を当該最長時間情報にて示された時間とする、通信方法。
【０２４８】
（付記７）
複数のプロセッサと、ネットワークと、前記プロセッサ間の同期をとる同期装置と、を有し、各通信フェーズで前記複数のプロセッサのうちの２つ以上のプロセッサのそれぞれが前記ネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムにて、前記複数のプロセッサの１つとして使用されるプロセッサでの通信方法であって、
前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を前記同期装置に送信する送信ステップと、
前記同期装置から、各通信フェーズの実行時間を特定するための実行時間情報と、同期完了指示と、を受信する受信ステップと、
前記実行時間情報と前記同期完了指示が受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記実行時間情報にて特定される当該通信フェーズの実行時間以下である場合、当該通信フェーズの期間を当該通信フェーズの実行時間とする制御ステップと、を含む通信方法。
【０２４９】
（付記８）
付記７に記載の通信方法において、
前記受信ステップでは、前記実行時間情報として配信された、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情と、前記同期完了指示と、を受信し、
前記制御ステップでは、前記最長時間情報と前記同期完了指示とが受信されると、前記集団通信を開始し、かつ、前記各通信フェーズにおいて、当該通信フェーズにおける自プロセッサの通信時間が前記最長時間情報にて示された時間以下である場合、当該通信フェーズの期間を当該最長時間情報にて示された時間とする、通信方法。
【０２５０】
（付記９）
各通信フェーズで複数のプロセッサのうちの２つ以上のプロセッサのそれぞれがネットワークを介して互いに異なる１つのプロセッサにデータを送信する集団通信を行う並列コンピュータシステムと接続される同期装置での通信支援方法であって、
各プロセッサから、前記通信フェーズごとに予測された当該通信フェーズにおける自プロセッサの通信時間のうち少なくとも最長の時間を示す通信時間情報と、同期要求と、を受信すると、当該通信時間情報に基づいて、各通信フェーズの実行時間を特定するための実行時間情報を作成する作成ステップと、
前記実行時間情報と、同期完了指示と、を前記複数のプロセッサに配信する配信ステップと、を含む通信支援方法。
【０２５１】
（付記１０）
付記９に記載の通信支援方法において、
前記作成ステップでは、前記各プロセッサからの通信時間情報にて示された時間のうち最長の時間を示す最長時間情報を、前記実行時間情報として作成し、
前記配信ステップでは、前記最長時間情報を、前記実行時間情報として、前記同期完了指示と共に前記複数のプロセッサに配信する、通信支援方法。
【符号の説明】
【０２５２】
101、101A、101B、301、801、1001  プロセッサ
102  プロセッサ間ネットワーク
103、103A、201、701  プロセッサ間同期装置
202、702  作成部
203、703  同期完了情報配信部
204  カウンタ
205  比較器
206、206A  レジスタ
207  MUX
208  最大値レジスタ
208A  最大値レジスタファイル
209、209A  比較器
302、802、1002  処理部
303、803、1003  受信装置
304  主記憶部
305、305A、305B  ＣＰＵ
306、306A、306B  送信装置
307、307A、307B  送信部
308  最大時間レジスタ
308A  最大時間レジスタファイル
309、309A  タイマ
1004  予測ミスカウンタ
【図１】
0005493880.tif 000002
【図２】
0005493880.tif 000003
【図３】
0005493880.tif 000004
【図４】
0005493880.tif 000005
【図５】
0005493880.tif 000006
【図６】
0005493880.tif 000007
【図７】
0005493880.tif 000008
【図８】
0005493880.tif 000009
【図９】
0005493880.tif 000010
【図１０】
0005493880.tif 000011
【図１１】
0005493880.tif 000012
【図１２】
0005493880.tif 000013