(57)【特許請求の範囲】
【請求項１】
計算結果のやり取りを行う他の計算装置を識別する初期化処理の実行を含むプロセスを実行させる命令、もしくは、前記プロセスに含まれる命令のいずれかを示す制御情報をネットワーク上の各計算装置に対して送信する制御情報生成装置から、前記制御情報を受信する受信部と、
前記プロセスを実行可能な状態に展開させる命令が発生した場合には、もしくは、前記プロセスに含まれる命令を実行する場合には、当該命令の実行を保留とする保留部と、
前記保留部に実行を保留された命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された命令を実行し、当該命令が前記プロセスを実行可能な状態に展開させる命令である場合は、当該プロセスの展開後に前記初期化処理を実行して、同様にプロセスの展開および初期化処理を実行する前記他の計算装置を相互に識別し、その後計算処理を実行する処理部と、
を備えることを特徴とする計算装置。 
【請求項２】
前記制御情報生成装置によって作成される前記制御情報の作成順番を表す順序番号と、前記プロセスに対する命令とを対応付けて記憶する記憶部をさらに備え、
前記受信部は、前記制御情報生成装置から前記順序番号が付加された前記制御情報を受信し、
前記処理部は、前記記憶部に記憶された順序番号および命令に基づいて、前記受信部によって受信された前記制御情報が示す命令と、前記保留部に保留された命令とが対応していると判断した場合には、前記保留部に保留された命令を実行することを特徴とする請求項１に記載の計算装置。 
【請求項３】
前記保留部は、前記プロセスの実行結果を送信する送信命令が発生した場合には、当該送信命令を一時的に保留し、
前記処理部は、前記保留部に保留された送信命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された送信命令を実行することを特徴とする請求項１もしくは請求項２に記載の計算装置。 
【請求項４】
前記保留部は、前記命令の実行を一時的に中断させる中断命令が発生した場合には、当該中断命令を一時的に保留し、
前記処理部は、前記保留部に保留された中断命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された中断命令を実行することを特徴とする請求項１もしくは請求項２に記載の計算装置。 
【請求項５】
前記保留部は、前記中断されている命令の実行を再開させる再開命令が発生した場合には、当該再開命令を一時的に保留し、
前記処理部は、前記保留部に保留された再開命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された再開命令を実行することを特徴とする請求項４に記載の計算装置。 
【請求項６】
前記保留部は、実行しているプロセスとは別のプロセスを実行させる割り込み命令が発生した場合には、当該割り込み命令を一時的に保留し、
前記処理部は、前記保留部に保留された割り込み命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された割り込み命令を実行することを特徴とする請求項１もしくは請求項２に記載の計算装置。 
【請求項７】
前記保留部は、前記割り込み命令を実行させないようにする割り込み防止命令が発生した場合には、当該割り込み防止命令を一時的に保留し、
前記処理部は、前記保留部に保留された割り込み防止命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された割り込み防止命令を実行することを特徴とする請求項６に記載の計算装置。 
【請求項８】
前記保留部は、前記計算装置の状況を示すシグナルを発信する発信命令を取得した場合には、当該発信命令を一時的に保留し、
前記処理部は、前記保留部に保留された発信命令と前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された発信命令を実行することを特徴とする請求項１もしくは請求項２に記載の計算装置。 
【請求項９】
計算結果のやり取りを行う他の計算装置を識別する初期化処理の実行を含むプロセスを実行させる命令を示す制御情報を受信する受信部と、
前記プロセスを実行可能な状態に展開させる命令が発生した場合には、当該命令の実行を保留とする保留部と、
前記保留部に保留された命令と、前記受信部に受信された前記制御情報が示す命令とが対応する場合には、前記保留部に保留された命令を実行し、当該命令が前記プロセスを実行可能な状態に展開させる命令である場合は、当該プロセスの展開後に前記初期化処理を実行して、同様にプロセスの展開および初期化処理を実行する前記他の計算装置を識別し、その後計算処理を実行する処理部と、
を備えることを特徴とする計算装置を複数備え、
前記制御情報を周期的に生成し、前記制御情報をネットワーク上の各計算装置に対して周期的に同報送信する制御情報生成部を備えることを特徴とする並列計算機システム。
【請求項１０】
実行しているプロセスとは別のプロセスを実行させる割り込み命令と優先度とを示す制御情報をネットワーク上の各計算装置に対して送信する制御情報生成装置から、前記制御情報を受信する受信部と、
実行しているプロセスとは別のプロセスを実行させる割り込み命令が発生した場合には、当該割り込み命令の実行を保留とする保留部と、
前記保留部に実行を保留された割り込み命令と前記受信部に受信された前記制御情報とが対応する場合には、当該制御情報が示す優先度よりも当該割り込み命令に設定された優先度が高いか否かを判定する判定部と、
前記判定部が、当該割り込み命令に設定された優先度が高いと判定した場合は、当該割り込み命令を実行する処理部と、
を備えることを特徴とする計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、計算装置、並列計算機システムおよび同期プログラムに関する。
【背景技術】
【０００２】
従来、気象予測等の科学技術計算分野（ＨＰＣ分野：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ分野）における複雑な問題を計算するために、並列計算機システムが用いられる。並列計算機システムでは、ノードと呼ばれる複数の計算機と管理サーバとがネットワークを介してそれぞれ接続される。そして、並列計算機システムは、複数のノードを用いて、複雑な問題を解く場合に用いられるプログラムを高速で処理する。【０００３】
具体的には、並列計算機システムは、プログラムの実行単位であるジョブを複数のプロセスに分割し、分割したプロセスを各ノードに割り当てる。ここで、プロセスとは、各ノードが実際に演算処理を行うプログラムである。各ノードは、プロセスを取得した場合には、取得したプロセスの演算処理を実行する。そして、各ノードは、プロセスの演算処理が完了した場合には、演算結果を管理サーバへ送信して、演算処理を終了する。【０００４】
また、並列計算機システムは、演算処理が終了したノードに対して新たなプロセスを送信し、演算処理を実行させる。そして、並列計算機システムは、各ノードが実行した演算処理の結果を管理サーバに集約し、ジョブの全体の演算結果を得る。【０００５】
ここで、各ノードが実行する演算処理について詳しく説明する。まず、各ノードは、プロセスを取得した場合には、演算処理を開始し、取得したプロセスを記憶部へ展開して実行可能な状態にする生成処理を実行する。ここで、各ノードは、他のノードの演算処理の経過を用いて、自ノードの演算処理を実行する場合がある。【０００６】
そのため、各ノードは、取得したプロセスを記憶部へ展開した場合には、プロセスを振り分けられた他のノードを識別する初期化処理を実行する。そして、各ノードは、全てのノードにプロセスが振り分けられた後に、他のノードを全て識別した場合には、プロセスの計算を行う計算処理を実行する。【０００７】
次に、各ノードは、計算処理の結果を取得した場合には、計算処理の結果を管理サーバに対して送信する送信処理を実行する。そして、各ノードは、計算結果を送信した場合には、プロセスの演算処理を終了する。【０００８】
ここで、並列計算機システムは、各ノードの演算処理を同期させる技術として、同期ポイントを用いて、各ノードが実行する計算処理の進行具合を同期させる技術が知られている。【０００９】
具体的には、並列計算機システムでは、プロセスとして実行されるプログラムの途中に、同時にプロセスを実行する各ノードにおいて、他のノードとの同期をはかる同期ポイントが設定されている。各ノードは、計算処理を実行し、同期ポイントまで計算処理を進行させた場合には、同期ポイントまで計算処理を進行させたことを他のノードに対して通知する。そして、各ノードは、プロセスを振り分けられた全てのノードが同期ポイントまで計算処理を進行させた場合には、同期ポイントよりも先の計算処理を実行する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−１４２８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、上記した同期ポイントを設定し、各ノードが実行する計算処理の進行を同期させる技術では、並列計算機システムは、各ノードが実行する計算処理の進行を同期させるのみであり、生成処理等の処理を同期させていない。そのため、各ノードは、それぞれ独自のタイミングでプロセスの演算処理を開始するので、並列計算機システム全体として非協調的に演算処理を実行するという問題があった。【００１２】
例えば、上記した技術では、各ノードは、プロセスを取得するタイミングにズレが生じた場合には、先にプロセスを取得したノードが未だプロセスを取得していないノードよりも早く、取得したプロセスの演算処理を開始する。従って、プロセスを取得するタイミングにズレが生じた場合には、各ノードはそれぞれ異なったタイミングで生成処理を実行し、初期化処理を開始する。しかし、各ノードは、他のプロセスを割り振られたノードを識別するまで初期化処理を継続する。結果として、上記した技術では、各ノード間において、プロセスを取得してから演算処理を終了するまでの時間と、各ノードが実際に処理を実行している時間とに乖離を生じてしまうという問題があった。【００１３】
また、例えば、上記した技術では、並列計算機システムは、プロセスの演算処理が終了したノードに対して新たなプロセスの振り分けを行う。ここで、並列計算機システムは、各ノードが実行する計算処理の進行具合のみを同期させる。そのため、並列計算機システムは、最適なプロセスの振り分けを行うことができなかった。【００１４】
図１４を用いて、具体的に説明する。図１４は、従来技術を説明する図である。図１４に示すように、各ノードは、ツリー状のネットワークである数値交換用ネットワークを用いて、接続される。図１４に示したネットワークスイッチは、数値交換用ネットワークの分岐点に設置され、ネットワーク上を流れる情報の受け渡しを行う。また、図１４の下に示すように、各ノードは、管理用ネットワークを用いて、管理サーバと接続される。【００１５】
ここで、各ノードは、他のノードが実行する演算処理の経過を取得するために、他ノードと通信を行う場合には、上記ツリーにおける近傍にあるノードの方が遠方にあるノードよりも高速に通信を行うことができる。そのため、並列計算機システムは、二つのプロセスを振り分ける場合には、比較的近傍に存在する２つのノードに対してプロセスを振り分けるのが望ましい。例えば、並列計算機システムは、二つのプロセスを振り分ける場合には、図１４に示したノード７およびノード８に対して振り分けるのが望ましい。【００１６】
ここで、各ノードは、振り分けられたプロセスの演算処理をおおむね同時期に終了する。しかし、並列計算機システムは、ノード８が演算処理を終了する前にノード７およびノード１０が演算処理を終了した場合には、新たなプロセスをノード７およびノード１０に振り分ける。そのため、並列計算機システムは、計算機資源の適切な利用を行うことができないという問題があった。【００１７】
開示の技術は、上記に鑑みてなされたものであって、各計算装置が協調的に処理を実行して、プロセスを取得してから演算処理を終了するまでの時間と各ノードが実際に処理を実行している時間との乖離を低減するとともに、計算機資源の適切な利用を行うことができる。
【課題を解決するための手段】
【００１８】
本願の開示する計算装置は、計算結果のやり取りを行う他の計算装置を識別する初期化処理の実行を含むプロセスに対して実行される命令であって、当該プロセスを実行可能な状態に展開させる命令が生じた場合には、命令の実行を一時的に保留する。そして、計算装置は、実行を保留された命令と同一の命令を示す制御情報を受信した場合には、保留された命令を実行し、プロセスの展開後に初期化処理を実行して、同様にプロセスの展開および初期化処理を実行する他の計算装置を識別し、その後計算処理を実行する。
【発明の効果】
【００１９】
本願の開示する計算装置、並列計算機システムおよび同期プログラムは、各計算装置が協調的に処理を実行することで、プロセスを取得してから演算処理を終了するまでの時間と各ノードが実際に処理を実行している時間との乖離を低減するとともに、計算機資源の適切な利用を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施例１に係る計算装置を表すブロック図である。
【図２】図２は、実施例２に係る並列計算機システムを説明する図である。
【図３】図３は、実施例２に係る計算装置および制御パケット生成装置の構成を説明するブロック図である。
【図４】図４は、パケット番号とプロセスに対して実行される命令との対応を説明する図である。
【図５】図５は、計算装置が実行するプロセスの演算処理の流れを説明するフローチャートである。
【図６】図６は、計算装置が実行する中断命令および再開処理の流れを説明するフローチャートである。
【図７】図７は、計算装置が割り込み命令を実行する処理の流れについて説明するフローチャートである。
【図８】図８は、計算装置が実行する発信命令の処理の流れを説明するフローチャートである。
【図９】図９は、計算装置が実行するプログラム実行命令の処理の流れを説明するフローチャートである。
【図１０】図１０は、計算装置１および計算装置１ｂと同様の機能を有するプログラムを実行するコンピュータを説明する図である。
【図１１】図１１は、プログラムが行う処理の流れを説明するフローチャートである。
【図１２】図１２は、並列計算機システムの構成を説明する図である。
【図１３】図１３は、高機能スイッチを備えた並列計算機システムを表す図である。
【図１４】図１４は、従来技術を説明する図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、開示の計算装置、並列計算機システムおよび同期プログラムの実施例を詳細に説明する。
【実施例１】
【００２２】
以下の実施例では、計算装置１の構成および処理の流れを順に説明する。【００２３】
まず最初に、図１を用いて、実施例１に係る計算装置の構成について説明する。ここで、図１は、実施例１に係る計算装置を表すブロック図である。図１に示すように、計算装置１は、受信部２、処理部３および保留部５を有している。また、受信部２は、ネットワークを用いて、外部の制御情報生成装置４と接続されている。ネットワークには、計算装置１と同様の構成を有する計算装置１Ｂ、計算装置１Ｃが接続されている。なお、図１では省略したが、図１に図示した各計算装置以外にも、ネットワークには、多数の計算装置が接続されている。【００２４】
制御情報生成装置４は、配布されるプロセスに対して実行される命令、もしくは、配布されるプロセスに含まれる命令を示す制御情報を生成する。また、制御情報生成装置４は、制御情報をネットワーク全体に送信する。【００２５】
受信部２は、制御情報生成装置４から送信された制御情報を受信する。保留部５は、プロセスに対して実行される命令が発生した場合には、もしくは、配布されるプロセスに含まれる命令を実行する場合には、命令の実行を一時的に保留する。【００２６】
処理部３は、保留部５に保留された命令と、受信部４に受信された制御情報とが対応する場合には、保留部５に保留された命令を実行する。【００２７】
次に、実施例１に係る計算装置１が行う処理の流れを説明する。まず、受信部２は、ネットワークを介して、制御情報生成装置４から発信された制御情報を受信する。ここで、保留部５は、プロセスに対して実行される命令が発生した場合には、もしくは、配布されるプロセスに含まれる命令を実行する場合には、命令を保留し、処理部３による命令の実行を保留させる。処理部３は、保留部５によって保留されている命令と対応する制御情報が受信部２によって受信された場合には、保留部５によって保留されている命令を実行する。【００２８】
上述してきたように、実施例１に係る計算装置１は、プロセスに対して実行される命令が生じた場合には、生じた命令を保留部５に保留する。そして、計算装置１は、保留部５に保留された命令と対応する制御情報が受信部２によって受信された場合には、保留部５に保留された命令を実行する。【００２９】
そのため、計算装置１は、制御情報を取得したタイミングでプロセスに対する命令を実行するので、プロセスに対する命令を実行するタイミングを、他の計算装置１と同期させることができる。結果として、計算装置１は、協調的にプロセスに対する命令を実行することができる。
【実施例２】
【００３０】
実施例２では、制御情報に示された各演算処理の命令を実行する計算装置１ｂを有する並列計算機システムについて図を参照して説明する。【００３１】
まず最初に、実施例２に係る並列計算機システムの構成について、図２を用いて説明する。ここで、図２は、実施例２に係る並列計算機システムを説明する図である。図２では省略されているが、各計算装置１ｂ以外にも、数値計算用ネットワークには、各ネットワークスイッチを介して、複数の計算装置が接続されている。計算装置Ａ〜Ｄを含む全ての計算装置は、計算装置１ｂと同じ機能を有している。以下、計算装置１ｂと記載した場合には、計算装置Ａ〜Ｄを含む計算装置を表す。【００３２】
実施例２に係る並列計算機システムは、図２に示すように、複数の計算装置１ｂを高速に通信を行う数値交換用ネットワークで接続する。各計算装置１ｂは、数値交換用ネットワークを介して、他の計算装置１ｂと演算処理に必要な数値の送受信を行う。【００３３】
また、図２の下側に示すように、各計算装置１ｂは、数値計算用ネットワークとは別に、管理用ネットワークに接続されている。並列計算機システムは、管理用ネットワークを介して、各計算装置１ｂに演算処理を実行させるプロセスの送信を行う。また、並列計算機システムは、管理用ネットワークを用いて、各計算装置１ｂが演算処理を実行した結果を管理サーバ１１ｂに集約する。【００３４】
具体的には、並列計算機システムは、管理用ネットワークに接続された管理サーバ１１ｂを用いて、各計算装置１ｂの管理を実行する。管理サーバ１１ｂは、管理用ネットワークを用いて、各計算装置１ｂへ振り分けられたプロセスを送信する。【００３５】
また、管理サーバ１１ｂは、管理用ネットワークを用いて、各計算装置１ｂが実行したプロセスの結果を集約する。そして、並列計算機システムは、管理サーバ１１ｂに集約されたプロセスの結果を用いて、ジョブの処理を進める。【００３６】
次に、制御パケット生成装置４ｂについて説明する。制御パケット生成装置４ｂは、制御パケットを周期的に生成し、生成された制御パケットをネットワーク上の各計算装置１ｂに対して周期的に同報送信する。また、制御パケットは、プロセスに対して実行される命令を示す。【００３７】
具体的には、制御パケット生成装置４ｂは、命令を示す情報として、制御パケットが生成された順番を示す順序番号が含まれた制御パケットを生成する。そして、制御パケット生成装置４ｂは、生成された制御パケットを、所定の間隔をあけてネットワークに接続された全計算装置１ｂへ送信する。【００３８】
また、制御パケット生成装置４ｂは、図２に示すように、ツリー状に構成された数値計算用ネットワークの最上位に設置されたネットワークスイッチ２０に接続されている。制御パケット生成装置４ｂは、数値計算用のネットワークを用いて、各計算装置１ｂへ制御パケットを送信している。【００３９】
ここで、実施例２に係る計算装置１ｂが受信されたプロセスに対して実行する命令について説明する。ここで、プロセスに対して実行される命令とは、プロセスに含まれない命令のことをいう。つまり、プロセスに含まれない命令とは、計算装置１ｂ内のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や、外部の管理サーバ１１ｂ等から実行が指示される命令である。プロセスに含まれない命令として、例えば、再開命令、生成命令、送信命令、割り込み命令、割り込み防止命令、発信命令、プログラム実行命令等が存在する。【００４０】
また、プロセスに含まれる命令とは、計算装置１ｂが管理サーバ１１ｂから配布されたプロセス内に実行が指示されている所定の命令であり、例えば、プロセスに含まれる命令として、中断命令が存在する。【００４１】
再開命令は、ＯＳ、計算装置１ｂの管理を行う常駐プログラム、もしくは管理サーバ１１ｂ等から、一時停止された処理を再開するように指示された場合に発生する。生成命令は、計算装置１ｂがプロセスを取得した場合に発生する。送信命令は、計算装置１ｂがプロセスの処理を終了した場合に発生する。割り込み命令は、ＯＳ、常駐プログラム、もしくは管理サーバ１１ｂ等から、実行している処理とは別の処理を実行させる要求があった場合に発生する。【００４２】
割り込み防止命令は、ＯＳ、常駐プログラム、もしくは管理サーバ１１ｂ等から、実行している処理を優先して実行するように要求があった場合に発生する。発信命令は、ＯＳ、常駐プログラム、もしくは管理サーバ１１ｂ等から、計算装置１ｂの状態を管理サーバ１１ｂへ通知するシグナルを送信するよう要求された場合に発生する。プログラム実行命令は、ＯＳ、常駐プログラム、もしくは管理サーバ１１ｂ等から、実行している処理とは別のプログラムを実行するように要求された場合に発生する。【００４３】
また、プロセスに含まれない命令であっても、例えば、割り込み防止命令は、プロセス内に実行が指示される場合がある。また、中断命令は、計算装置１ｂ内のＯＳや、外部の管理サーバ１１ｂ等から実行を要求される場合がある。【００４４】
次に、図３を用いて、実施例２に係る各計算装置１ｂの構成および制御パケット生成装置４ｂの構成について説明する。ここで、図３は、実施例２に係る計算装置および制御パケット生成装置の構成を説明するブロック図である。図３に示すように、計算装置１ｂは、受信部２ｂ、処理部３ｂ、保留部５ｂおよび記憶部６ｂとを有している。また、制御パケット生成装置４ｂは、制御パケット生成部１２、順序番号付与部１３、制御パケット送信部１４を有している。また、計算装置Ａ１Ｄおよび計算装置Ｄ１Ｇは、図３において省略された各計算装置と同様に、計算装置１ｂと同様の構成を有している。【００４５】
順序番号付与部１３は、順序番号を生成し、制御パケット生成部１２へ転送する。具体的には、順序番号付与部１３は、各制御パケットの作成された順番を表す順序番号を生成し、制御パケット生成部１２へ転送する。制御パケット生成部１２は、制御パケットを生成し、順序番号付与部１３から転送された順序番号を付して制御パケット送信部１４へ転送する。【００４６】
制御パケット送信部１４は、制御パケット生成部１３から転送された制御パケットを、ネットワーク上の各計算装置１ｂに同報送信する。例えば、制御パケット送信部１４は、ネットワーク上の各計算装置１ｂに対して、制御パケットをマルチキャスト送信する。【００４７】
受信部２ｂは、プロセスに対して実行される命令を示す制御パケットを受信する。具体的には、受信部２ｂは、制御パケット生成装置４ｂから同報送信された制御パケットを数値交換用ネットワークを介して、受信する。【００４８】
また、受信部２ｂは、管理用ネットワークを用いて、管理サーバ１１ｂから振り分けられたプロセスを取得する。受信部２ｂは、管理サーバ１１ｂからプロセスを取得した場合には、取得されたプロセスを処理部３ｂへ転送する。【００４９】
記憶部６ｂは、プロセスに対して実行される命令と制御パケットに付される順序番号とを対応付けて記憶している。具体的には、記憶部６ｂは、図４に示すように、順序番号と、プロセスに対して実行される命令とを対応付けて記憶している。ここで、図４は、パケット番号とプロセスに対して実行される命令との対応を説明する図である。【００５０】
保留部５ｂは、プロセスに対して実行される命令が発生した場合には、発生した命令を保留する。具体的には、保留部５ｂは、取得したプロセスに対して処理を実行する命令が発生した場合には、発生した命令を保留し、発生した命令を処理部３ｂが実行を保留させる。【００５１】
以下、保留部５ｂが実行する処理について詳しく説明する。保留部５ｂは、処理部３ｂがプロセスを取得した結果、取得されたプロセスに対して生成処理を実行させる命令である生成命令が生じた場合には、生じた生成命令を保留する。そのため、保留部５ｂは、処理部３ｂに生成処理の実行を待機させる。【００５２】
また、保留部５ｂは、取得されたプロセスに対する計算処理が終了した結果、処理部３ｂに送信処理を実行させる命令である送信命令が生じた場合には、生じた送信命令を保留する。そのため、保留部５ｂは、処理部３ｂに送信処理の実行を待機させる。【００５３】
ここで、計算装置１ｂは、振り分けられたプロセスとは別のプログラム（例えば、常駐プログラム）を実行する場合がある。しかし、計算装置１ｂは、プロセスと常駐プログラムとを同時に実行することができない。そのため、計算装置１ｂは、処理部が実行している演算処理を一時的に待機させる中断処理を実行し、常駐プログラムを実行させる。実施例２に係る並列計算機システムは、各計算装置１ｂが中断処理を実行するタイミングも同期させる。【００５４】
保留部５ｂは、処理部３ｂに中断処理を実行させる命令である中断命令が生じた場合には、生じた中断命令を保留する。そのため、保留部５ｂは、処理部３ｂに送信処理の実行を待機させる。【００５５】
また、計算装置１ｂは、常駐プログラムの実行が終了した場合には、一時的に待機させた演算処理を再開させる再開命令を実行する。実施例２に係る並列計算機システムは、生成処理を実行する場合と同様に、各計算装置１ｂが再開処理を実行するタイミングを同期させる。【００５６】
そのため、保留部５ｂは、処理部３ｂに再開処理を実行させる命令である再開命令が生じた場合には、生じた再開命令を保留する。そのため、保留部５ｂは、処理部３ｂに送信処理の実行を待機させる。【００５７】
ここで、各計算装置１ｂは、実行するプロセスに設定された優先度を用いて、演算処理を行う。例えば、各計算装置１ｂは、優先度「１」のプロセスに対する演算処理を実行中に、優先度「２」のプロセスを取得した場合には、優先度「２」のプロセスに対して優先的に演算処理を実行する。具体的には、計算装置１ｂは、優先度「１」のプロセスに対する演算処理を待機させ、優先度「２」のプロセスに対する演算処理を実行する割り込み処理を行う。【００５８】
実施例２に係る並列計算機システムは、各計算装置１ｂが割り込み処理を実行するタイミングも同期させる。保留部５ｂは、処理部３ｂに割り込み処理を実行させる命令である割り込み命令が生じた場合には、生じた割り込み命令を保留する。そのため、保留部５ｂは、処理部３ｂに割り込み処理の実行を待機させる。【００５９】
ここで、各計算装置１ｂは、実行している処理を優先させるために、割り込み処理を実行させないようにする割り込み防止処理を実行する場合がある。そのため、実施例２に係る並列計算機システムは、各計算装置１ｂに割り込み処理を実行させないようにするタイミングを同期させる。【００６０】
保留部５ｂは、処理部３ｂに割り込み処理を実行させないようにする割り込み防止命令が生じた場合には、生じた割り込み防止命令を保留する。そのため、保留部５ｂは、処理部３ｂに割り込み防止処理の実行を待機させる。【００６１】
ここで、各計算装置１ｂは、並列計算システム全体の処理状況を認識するため、各計算装置１ｂの状況を通知するシグナルを発信する発信処理の実行を所定の時刻に命令される。そのため、実施例２に係る並列計算機システムは、全ての計算装置１ｂから一度にシグナルを取得するために、制御パケットを用いて、各計算装置１ｂが発信処理を実行するタイミングを同期させる。【００６２】
保留部５ｂは、処理部３ｂに発信処理を実行させる命令である発信命令が生じた場合には、生じた発信命令を保留する。そのため、保留部５ｂは、処理部３ｂに送信処理の実行を待機させる。【００６３】
また、各計算装置１ｂは、実行しているプロセスとは別のプログラム（例えば、常駐プログラム）を実行するプログラム実行処理を命令される場合がある。実施例２に係る並列計算機システムは、各計算装置１ｂがプログラム実行処理を実行するタイミングを同期させる。【００６４】
そのため、保留部５ｂは、処理部３ｂにプログラム実行処理を実行させる命令であるプログラム実行命令が生じた場合には、生じたプログラム実行命令を保留する。そのため、保留部５ｂは、処理部３ｂにプログラム実行処理の実行を待機させる。【００６５】
次に、処理部３ｂは、記憶部６ｂに記憶された順序番号と命令とに基づいて、保留部５ｂに保留された命令と受信部２ｂに受信された制御パケットが示す命令とが対応していると判別した場合には、保留部５ｂに保留された命令を実行する。【００６６】
具体的には、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号を読み出す。次に、処理部３ｂは、読み出された順序番号と対応付けて記憶された命令を記憶部６ｂから読み出す。次に、処理部３ｂは、読み出された命令が保留部５ｂによって保留されているかを判別する。そして、処理部３ｂは、読み出された命令が保留部５ｂによって保留されている場合には、保留されている命令を実行する。【００６７】
以下、処理部３ｂが実行する処理について、図４を用いて具体的に説明する。処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が奇数番号である場合には、記憶部６ｂに奇数番号と対応付けて記憶された中断命令を読み出す。次に、処理部３ｂは、読み出された中断命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、中断命令が保留部５ｂによって保留されている場合には、中断命令を実行する。【００６８】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が偶数である場合には、記憶部６ｂに奇数番号と対応付けて記憶された再開命令を読み出す。次に、処理部３ｂは、読み出された再開命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、再開命令が保留部５ｂによって保留されている場合には、再開命令を実行する。【００６９】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が６０の倍数である場合には、記憶部６ｂに６０の倍数と対応付けて記憶された生成命令を読み出す。次に、処理部３ｂは、読み出された生成命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、生成命令が保留部５ｂによって保留されている場合には、生成命令を実行する。【００７０】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が３０の倍数である場合には、記憶部６ｂに３０の倍数と対応付けて記憶された送信命令を読み出す。次に、処理部３ｂは、読み出された送信命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、送信命令が保留部５ｂによって保留されている場合には、送信命令を実行する。【００７１】
ここで、並列計算機システムは、制御パケットを用いて、各計算装置１ｂが割り込み処理を実行する優先度の設定を行う。例えば、図４に示すように、処理部３ｂは、各計算装置１ｂが割り込み優先度「Ｘ」以下の処理を実行する命令を受けても、命令を実行しないように設定する割り込み命令（１）を受ける場合がある。計算装置１ｂは、割り込み命令（１）を実行した場合には、優先度が「Ｘ」よりも高い処理を実行する命令が生じた場合にのみ、割り込み処理を実行する。【００７２】
また、例えば、処理部３ｂは、各計算装置１ｂが割り込み優先度「Ｙ」以下の処理を実行する命令を受けても、命令を実行しないように設定する割り込み命令（２）を受ける場合がある。計算装置１ｂは、割り込み命令（２）を実行した場合には、優先度が「Ｙ」よりも高い処理を実行する命令が生じた場合にのみ、割り込み処理を実行する。【００７３】
以下、処理部３ｂが各割り込み命令を実行する流れについて説明する。処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号を４０で除算した余りが１０以上である場合には、記憶部６ｂに対応付けて記憶された割り込み命令（１）を読み出す。次に、処理部３ｂは、読み出された割り込み命令（１）が保留部５ｂによって保留されているか判断する。処理部３ｂは、割り込み命令（１）が保留部５ｂによって保留されている場合には、割り込み命令（１）を実行する。【００７４】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号を４０で除算した余りが５以上１０未満である場合には、記憶部６ｂに対応付けて記憶された割り込み命令（２）を読み出す。次に、処理部３ｂは、読み出された割り込み命令（２）が保留部５ｂによって保留されているか判断する。処理部３ｂは、割り込み命令（２）が保留部５ｂによって保留されている場合には、割り込み命令（２）を実行する。【００７５】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号を４０で除算した余りが５未満である場合には、記憶部６ｂに対応付けて記憶された割り込み防止命令を読み出す。次に、処理部３ｂは、読み出された割り込み防止命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、割り込み防止命令が保留部５ｂによって保留されている場合には、割り込み防止命令を実行する。【００７６】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が１８０の倍数である場合には、記憶部６ｂに１８０の倍数と対応付けて記憶された発信命令を読み出す。次に、処理部３ｂは、読み出された発信命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、発信命令が保留部５ｂによって保留されている場合には、発信命令を実行する。【００７７】
また、処理部３ｂは、受信部２ｂによって受信された制御パケットの順序番号が３６０の倍数である場合には、記憶部６ｂに３６０の倍数と対応付けて記憶されたプログラム実行命令を読み出す。次に、処理部３ｂは、読み出されたプログラム実行命令が保留部５ｂによって保留されているか判断する。処理部３ｂは、プログラム実行命令が保留部５ｂによって保留されている場合には、プログラム実行命令を実行する。【００７８】
次に、図５〜図９を用いて、並列計算機システムが実行する処理の流れについて説明する。まず、図５を用いて、計算装置１ｂが実行するプロセスの演算処理の流れについて説明する。ここで、図５は、計算装置が実行するプロセスの演算処理の流れを説明するフローチャートである。計算装置１ｂは、電源を入れられたことをトリガとして、演算処理を開始する。【００７９】
まず、計算装置１ｂは、受信部２ｂがプロセスを取得したかを判別する（ステップＳ１０１）。次に、保留部５ｂは、プロセスが取得されている場合には（ステップＳ１０１肯定）、プロセスの取得によって発生する生成命令を保留する（ステップＳ１０２）。次に、処理部３ｂは、制御パケットが受信されているか判別する（ステップＳ１０３）。次に、処理部３ｂは、制御パケットが受信部２ｂによって受信されている場合には（ステップＳ１０３肯定）、記憶部６に記憶された順序番号と命令とに基づいて、受信された制御パケットが示す命令が生成命令であるか判別する（ステップＳ１０４）。【００８０】
次に、処理部３ｂは、受信された制御パケットが生成命令を示す場合には（ステップＳ１０４肯定）、生成命令を実行する（ステップＳ１０５）。一方、処理部３ｂは、プロセスを取得していない場合には（ステップＳ１０１否定）、新たなパケットを受信するまで待機する。【００８１】
また、処理部３ｂは、受信部２ｂが制御パケットを受信していない場合には（ステップＳ１０３否定）、パケットの受信を待機する。また、処理部３ｂは、受信部２ｂによって受信された制御パケットがプロセスの生成命令を示していない場合には（ステップＳ１０４否定）、新たなパケットの受信を待機する。【００８２】
処理部３ｂは、生成命令を実行した場合には、初期化処理を実行する（ステップＳ１０６）。次に、処理部３ｂは、プロセスに対する計算処理を実行し、計算処理の結果を得る（ステップＳ１０７）。次に、保留部５ｂは、計算処理結果の取得によって発生する送信命令を保留する（ステップＳ１０８）。【００８３】
次に処理部３ｂは、受信部２ｂによって制御パケットが受信されたかどうか判別する（ステップＳ１０９）。処理部３ｂは、受信部２ｂによって制御パケットが受信されている場合には（ステップＳ１０９肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、受信された制御パケットが送信命令を示しているかを判別する（ステップＳ１１０）。【００８４】
処理部３ｂは、受信された制御パケットが送信命令を示している場合には（ステップＳ１１０肯定）、計算処理の結果を管理サーバ１１ｂへ送信し、プロセスの演算処理を終了する（ステップＳ１１１）。【００８５】
一方、処理部３ｂは、受信部２ｂによって制御パケットが受信されていない場合には（ステップＳ１０９否定）、制御パケットの受信を待つ。また、処理部３ｂは、受信された制御パケットが送信命令を示していない場合には（ステップＳ１１０否定）、送信命令を示す制御パケットが受信されるまで送信命令を実行しない。【００８６】
次に、図６を用いて、計算装置１ｂが実行する中断命令および再開処理の流れについて説明する。ここで、図６は、計算装置１ｂが実行する中断命令および再開処理の流れを説明するフローチャートである。計算装置１ｂは、中断処理の命令が発生したことをトリガとして、処理を開始する。【００８７】
まず、保留部５ｂは、中断命令を保留する（ステップＳ２０１）。次に、処理部３ｂは、受信部２ｂによって制御パケットが受信されたか判別する（ステップＳ２０２）。処理部３ｂは、制御パケットが受信されている場合には（ステップＳ２０２肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、制御パケットが示す命令が中断命令であるかを判別する（ステップＳ２０４）。【００８８】
処理部３ｂは、制御パケットが示す命令が中断命令である場合には（ステップＳ２０４肯定）、実行しているプロセスの演算処理を中断する（ステップＳ２０５）。一方、処理部３ｂは、制御パケットが受信されていない場合には（ステップＳ２０２否定）、実行している処理を継続する（ステップＳ２０３）。また、処理部３ｂは、受信された制御パケットが示す命令が中断命令を示していない場合には（ステップＳ２０４否定）、実行している処理を継続する（ステップＳ２０３）。【００８９】
一方、処理部３ｂは、実行しているプロセスの演算処理を中断させた場合には（ステップＳ２０５）、中断されたプロセスに対する演算処理を再開させる再開命令の発生を判別する（ステップＳ２０６）。保留部５ｂは、再開命令が発生した場合には（ステップＳ２０６肯定）、発生した再開命令を保留する（ステップＳ２０７）。【００９０】
次に処理部３ｂは、受信部２ｂによって制御パケットが受信されたかどうか判別する（ステップＳ２０８）。処理部３ｂは、受信部２ｂによって制御パケットが受信されている場合には（ステップＳ２０８肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、受信された制御パケットが再開命令を示しているかを判別する（ステップＳ２０９）。【００９１】
処理部３ｂは、受信された制御パケットが再開命令を示している場合には（ステップＳ２０９肯定）、一時停止されている演算処理を再開し（ステップＳ２１０）、プロセスの演算処理を終了する。【００９２】
一方、処理部３ｂは、中断命令を実行した後に（ステップＳ２０５）、再開命令が発生していない場合には（ステップＳ２０６否定）、プロセスを中断させたままにする。また、処理部３ｂは、受信部２ｂによって制御パケットが受信されていない場合には（ステップＳ２０８否定）、制御パケットの受信を待つ。また、処理部３ｂは、受信された制御パケットが再開命令を示していない場合には（ステップＳ２０９否定）、再開命令を示す制御パケットが受信されるまで再開命令を実行しない。【００９３】
次に、図７を用いて、計算装置１ｂが割り込み命令を実行する処理の流れについて説明する。ここで、図７は、計算装置が割り込み命令を実行する処理の流れについて説明するフローチャートである。計算装置１ｂは、割り込み処理命令の発生をトリガとして処理を開始する。【００９４】
まず、保留部５ｂは、発生した割り込み処理命令を保留する（ステップＳ３０１）。処理部３ｂは、受信部２ｂによって制御パケットが受信されたか判別する（ステップＳ３０２）。処理部３ｂは、制御パケットが受信されている場合には（ステップＳ３０２肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、制御パケットが示す命令が割り込み命令であるかを判別する（ステップＳ３０３）。【００９５】
処理部３は、制御パケットが示す命令が割り込み命令である場合には（ステップＳ３０３肯定）、制御パケットが割り込み命令の制限を解除しているかを判別する（ステップＳ３０４）。処理部３ｂは、制御パケットが割り込み命令の制限を解除している場合には（ステップＳ３０４肯定）、保留部５ｂに保留された割り込み命令を実行する（ステップＳ３０８）。その後、処理部３ｂは、処理を終了する。【００９６】
一方、処理部３ｂは、制御パケット割り込み命令の制限を解除していない場合には（ステップＳ３０４否定）、制御パケットが割り込み防止命令を示しているかを判別する（ステップＳ３０５）。処理部３ｂは、制御パケットが割り込み防止命令を示している場合には（ステップＳ３０５肯定）、割り込み処理を実行しない（ステップＳ３０９）。【００９７】
一方、処理部３ｂは、制御パケットが割り込み防止命令を示していない場合には（ステップＳ３０５否定）、制御パケットが示す割り込み命令の優先度が、待機している割込み命令の優先度よりも低いかどうかを判別する（ステップＳ３０６）。【００９８】
処理部３ｂは、制御パケットが示す割り込み命令の優先度が、待機している割り込み命令の優先度よりも低い場合には（ステップ３０６肯定）、実行中の演算処理を中断し、制限よりも高い優先度を有する割り込み命令を実行する（ステップＳ３０７）。その後、処理部３ｂは、処理を終了する。【００９９】
一方、処理部３ｂは、制御パケットを取得していない場合には（ステップＳ３０２否定）、制御パケットの取得を待つ。また、処理部３ｂは、制御パケットが割り込み命令を表していない場合には（ステップＳ３０３否定）、新たな制御パケットの受信を待つ。【０１００】
また、処理部３ｂは、制御パケットが示す割り込み命令の優先度が保留されている割り込み命令の優先度よりも高い場合には（ステップＳ３０６否定）、割り込み命令を実行しない（ステップＳ３０９）。その後、処理部３ｂは、処理を終了する。【０１０１】
また、処理部３ｂは、制御パケットが割り込み命令の制限を解除している場合には（ステップＳ３０４肯定）、保留させている割り込み命令を実行し（ステップＳ３０８）、その後、処理を終了する。【０１０２】
次に、図８を用いて、計算装置１ｂが実行する発信命令の流れについて説明する。ここで、図８は、計算装置が実行する発信命令の処理の流れを説明するフローチャートである。計算装置１ｂは、発信命令が発生したことをトリガとして処理を開始する。【０１０３】
まず、保留部５ｂは、発信命令を保留する（ステップＳ４０１）。次に、処理部３ｂは、受信部２ｂによって制御パケットが受信されたか判別する（ステップＳ４０２）。処理部３ｂは、制御パケットが受信されている場合には（ステップＳ４０２肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、制御パケットが示す命令が発信命令であるかを判別する（ステップＳ４０３）。【０１０４】
次に、処理部３ｂは、制御パケットが示す命令が発信命令である場合には（ステップＳ４０３肯定）、保留部５ｂに保留されていた発信命令を実行し、シグナルを発信する（ステップＳ４０４）。次に、処理部３ｂは、中断させた演算処理を再開させて（ステップＳ４０６）、処理を終了する。【０１０５】
一方、処理部３ｂは、制御パケットが受信されていない場合には（ステップＳ４０２否定）、制御パケットの受信を待つ。また、処理部３ｂは、受信された制御パケットが示す命令が発信命令ではない場合には（ステップＳ４０３否定）、保留された発信命令を実行せず（ステップＳ４０５）、制御パケットの受信を待つ。【０１０６】
次に、図９を用いて、計算装置１ｂが実行するプログラム実行命令の流れについて説明する。ここで、図９は、計算装置が実行するプログラム実行命令の処理の流れを説明するフローチャートである。計算装置１ｂは、プログラム実行命令が発生したことをトリガとして処理を開始する。【０１０７】
まず、保留部５ｂは、プログラム実行命令を保留する（ステップＳ５０１）。次に、処理部３ｂは、受信部２ｂによって制御パケットが受信されたか判別する（ステップＳ５０２）。処理部３ｂは、制御パケットが受信されている場合には（ステップＳ５０２肯定）、記憶部６ｂに記憶された順序番号と命令とに基づいて、制御パケットが示す命令がプログラム実行命令であるかを判別する（ステップＳ５０３）。【０１０８】
次に、処理部３ｂは、制御パケットが示す命令がプログラム実行命令である場合には（ステップＳ５０３肯定）、保留部５ｂに保留されていたプログラム実行命令を実行する（ステップＳ５０４）。次に、処理部３ｂは、実行していたプログラムを終了し、中断していたプロセスの演算処理を再開する（ステップＳ５０６）。【０１０９】
一方、処理部３ｂは、制御パケットが受信されていない場合には（ステップＳ５０２否定）、制御パケットの受信を待つ。また、処理部３ｂは、受信された制御パケットが示す命令がプログラム実行命令ではない場合には（ステップＳ５０３否定）、保留されたプログラム実行命令を実行せず（ステップＳ５０５）、制御パケットの受信を待つ。【０１１０】
上述してきたように、実施例２に係る並列計算機システムでは、プロセスに対して実行される命令が発生した場合には、発生した命令を保留する。そして、並列計算機システムは、保留された命令と対応する制御パケットが受信された場合には、保留された命令を実行する。そのため、並列計算機システムは、ネットワークに接続された各計算装置１ｂが命令を実行するタイミングを同期させることができる。結果として、並列計算機システムは、各計算装置１ｂを協調的に制御して計算を行うことができる。【０１１１】
例えば、各計算装置１ｂは、生成命令が発生した場合には、発生した生成命令を保留し、生成命令と対応する制御パケットを受信してから生成命令を実行するので、初期化処理を実行するタイミングをそろえることができる。【０１１２】
そのため、各計算装置１ｂは、初期化処理を実行する場合には、プロセスを割り振られた他の計算装置１ｂを読み出すために長時間の待機を必要としない。結果として、実施例２に係る並列計算機システムは、各計算装置１ｂのプロセスを取得してから演算処理を終了するまでの時間と、各計算装置１ｂが実際に演算処理を実行する時間とをそろえることができる。【０１１３】
また、各計算装置１ｂは、送信命令が発生した場合には、発生した送信命令を保留し、送信命令と対応する制御パケットを受信してから送信命令を実行するので、プロセスの実行結果を送信する送信命令を実行するタイミングを同期させることができる。そのため、実施例２に係る並列計算機システムは、新たにプロセスの振り分けを行うことができる計算装置１ｂをまとめて把握するので、プロセスの振り分けを適切に行い、計算機資源の適切な利用を行うことができる。【０１１４】
つまり、並列計算機システムは、図２に示した計算装置Ａ１Ｄ、計算装置Ｄ１Ｇ、計算装置Ｂ１Ｅの順にプロセスの計算処理が終了した場合にも、各計算装置Ａ〜Ｄが送信命令を実行するタイミングの同期を行う。そのため、並列計算機システムは、新たなプロセスを振り分ける計算装置を、計算装置Ａ１Ｄ、計算装置Ｂ１Ｅ、計算装置Ｄ１Ｇから選択することができる。【０１１５】
結果として、並列計算機システムは、例えば２つのプロセスを新たに振り分ける場合には、計算装置Ａ１Ｄと計算装置Ｂ１Ｅとに振り分けることができる。つまり、並列計算機システムは、近傍に設置された計算装置Ａ１Ｄおよび計算装置Ｂ１Ｅにプロセスを振り分けることができるので、計算機資源を適切に用いることができる。【０１１６】
また、各計算装置１ｂは、中断命令が発生した場合には、発生した中断命令を保留し、中断命令と対応する制御パケットを受信してから中断命令を実行する。そのため、並列計算機システムは、各計算装置１ｂが中断命令を実行するタイミングを同期させることができる。【０１１７】
結果として、例えば、並列計算機システムは、各計算装置１ｂが実行しているプロセスの計算処理を一時的に待機させ、常駐プログラムを実行するタイミングを同期させることができる。そして、並列計算機システムは、各計算装置１ｂの保守を同時に行い、計算機資源の有効な管理を行うことができる。【０１１８】
ここで、各計算装置１ｂは、再開命令を実行し、中断されていたプロセスの演算処理を再開する場合には、初期化処理を再度実行する必要がある。そのため、各計算装置１ｂは、異なったタイミングで再開命令を実行した場合には、他の計算装置１ｂが初期化処理を実行するまで待機する必要がある。【０１１９】
そこで、実施例２に係る並列計算機システムは、各計算装置１ｂが再開命令を実行するタイミングを同期させる。具体的には、各計算装置１ｂは、再開命令が発生した場合には、発生した再開命令を保留し、再開命令と対応する制御パケットを受信してから、保留された再開命令を実行する。【０１２０】
そのため、各計算装置１ｂは、初期化処理を実行する場合には、プロセスを割り振られた他の計算装置１ｂを読み出すために長時間の待機を必要としない。結果として、実施例２に係る並列計算機システムは、各計算装置１ｂのプロセスを取得してから演算処理を終了するまでの時間と、各計算装置１ｂが実際に演算処理を実行する時間とをそろえることができる。【０１２１】
また、各計算装置１ｂは、割り込み命令が発生した場合には、発生した割り込み命令を保留し、保留された命令と対応する制御パケットを受信してから、保留された割り込み命令を実行する。そのため、並列計算機システムは、各計算装置１ｂが割り込み命令を実行するタイミングの同期を行うので、各計算装置１ｂが実行する計算処理の進行具合をずらすことなく割り込み処理を実行させることができる。【０１２２】
また、並列計算機システムは、各計算装置１ｂが実行する割り込み処理の優先度をそろえることができるので、各計算装置１ｂに振り分けられたプロセスごとの優先度による割り込み処理のばらつきを防ぐことができる。結果として。並列計算機システムは、各計算装置１ｂが実行する計算処理の進行具合をずらすことなく割り込み処理を実行させることができる。【０１２３】
また、各計算装置１は、割り込み防止命令が発生した場合には、発生した割り込み防止命令を保留し、保留された割り込み防止命令に対応する制御パケットを受信してから、割り込み防止命令を実行する。そのため、並列計算機システムは、各計算装置１ｂが実行する割り込み処理を一度に防止させることができるので、振り分けられたプロセスを最優先で実行させることができる。【０１２４】
また、各計算装置１は、発信命令が発生した場合には、発生した発信命令を保留し、保留した発信命令と対応する制御パケットを受信してから発信命令を実行する。そのため、並列計算機システムは、各計算装置１ｂがシグナルを通知する発信命令を実行するタイミングを同期させるので、各計算装置１ｂから送信されたシグナルを受信するタイミングをそろえることができる。結果として、並列計算機システムは、各計算装置１ｂの状況を同時に把握することができるので、計算機資源の状態を正確に把握することができる。【０１２５】
また、各計算装置１ｂは、他の計算装置１ｂから発信されるシグナルに基づいて、プログラムに対する処理の進行具合の制御を行う場合がある。ここで、並列計算機システムは、各計算装置１ｂが発信命令を実行するタイミングを同期させるので、各計算装置１ｂは、処理の進行具合を制御するタイミングを同期させることができる。【０１２６】
一方、各計算装置１ｂは、他の計算装置１ｂの処理の進行具合を正確に識別するために、各計算装置１ｂから同時に発信されたシグナルを用いるのが望ましい。結果として、並列計算機システムは、各計算装置１ｂが実行する制御のタイミングを同期させるので、各計算装置１ｂが実行する処理の制御を適切に行うことができる。【０１２７】
また、各計算装置１ｂは、プログラム実行命令が発生した場合には、発生したプログラム実行命令を保留し、保留されたプログラム実行命令と対応する制御パケットを受信してから、プログラム実行命令を実行する。そのため、並列計算機システムは、プログラム実行命令を実行するタイミングを同期させるので、各計算装置１ｂが新たに実行するプログラム（例えば常駐プログラム）の進行具合をそろえることができる。結果として、並列計算機システムは、各計算装置１ｂが新たに実行するプログラムに対する処理の進行状態を正確に把握することができるので、並列計算機システムは、計算機資源の把握を正確に行うことができる。
【実施例３】
【０１２８】
さて、これまで開示の計算装置、並列計算機システムおよび同期プログラムについて説明したが、開示の計算装置、並列計算機システムおよび同期プログラムは上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として他の実施例を説明する。【０１２９】
（１）制御パケットについて
実施例２に係る処理部３ｂは、制御パケットが有している順序番号に応じて、各種処理を実行していた。しかし実施例は、これに限定されるものではなく、並列計算機システムは、制御パケットのヘッダを用いてもよい。例えば、処理部３ｂは、制御パケットのヘッダのうち、所定の位置のビットが「１」である場合には、生成命令を示しているとしてもよい。【０１３０】
また、実施例２に係る処理部３ｂは、図４に示すように対応付けられた順序情報と命令とに基づいて、制御パケットが示す命令を判別していた。しかし、実施例は、これに限定されるものではなく、パケット番号と実行する処理とは別の対応を有していてもよい。【０１３１】
（２）制御パケット生成装置について
実施例２に係る制御パケット生成装置４ｂは、数値交換用ネットワークの最上位に設置された汎用スイッチに接続されてた。しかし、実施例は、これに限定されるものではなく、例えば、図１３に示すように、汎用スイッチに制御パケット生成装置４ｂの機能を持たせた高機能スイッチを数値交換用ネットワークの最上位に設置してもよい。ここで、図１３は、高機能スイッチを備えた並列計算機システムを表す図である。【０１３２】
また、実施例２に係る制御パケット生成装置４ｂは、数値交換用ネットワークの最上位に設置されていた。しかし、実施例は、これに限定されるものではなく、各計算装置１ｂが制御パケットを同時に受信することができる場合には、数値交換用ネットワークのどこに設置されてもよい。また、制御パケット生成装置４ｂは、数値交換用ネットワークのみならず、管理ネットワークを用いて、各計算装置１ｂに制御パケットを送信してもよい。【０１３３】
また、制御パケット生成装置は、ナノ秒、マイクロ秒、ミリ秒、秒、クロック単位など幅広い単位で制御パケットを送信する間隔を動的に変更可能である。また、制御パケット生成装置は、送信する制御パケットごとに異なった時間間隔で送信することができる。【０１３４】
また、実施例１および実施例２に係る制御パケット生成装置４ｂは、制御パケットを周期的に生成し、各計算装置１ｂへ送信していた。ここで、制御パケットを生成し送信する周期は限定されるものではなく、ユーザが各計算装置１ｂおよび並列計算機システムの構成に応じて変化させることができる。【０１３５】
（３）記憶部について
実施例２に係る記憶部５ｂは、図４に示すように、制御パケットが有する順序番号と処理部３ｂが実行する命令とを対応づけて記憶していた。しかし、実施例は、これに限定されるものではなく、制御パケットが有する順序番号と処理部３ｂが実行する処理との対応は、変化するものであってもよい。また、並列計算機システムを使用するユーザーが、例えば管理サーバ１１を用いて、制御パケットが有する順序番号と処理部３ｂが実行する処理との対応を変更してもよい。【０１３６】
（４）プログラム
これまで、ハードウェアを利用して各種の処理を実現する並列計算機システムおよび計算装置１ｂについて説明したが、開示の計算装置、並列計算機システムおよび同期プログラムはこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行することによって実現してもよい。【０１３７】
そこで、以下では、図１０を用いて、実施例２に示した計算装置１ｂと同様の機能を有するプログラムを実行するコンピュータの一例を説明する。なお、本実施例は、実施例２に示した計算装置１ｂ以外にも、実施例１に示した各計算装置１と同様の機能も有する。また、図１０は、計算装置１および計算装置１ｂと同様の機能を有するプログラムを実行するコンピュータを説明する図である。【０１３８】
図１０に例示されたコンピュータ１００は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５０、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１４０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３０をバス１７０で接続されている。さらにバス１７０には、数値交換用ネットワークおよび管理用ネットワークと接続する場合に用いられる接続端子部分Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）１６０が接続されている。【０１３９】
ＲＯＭ１３０には、処理プログラム１３１および保留プログラム１３２があらかじめ保存されている。ＣＰＵ１４０が処理プログラム１３１および保留プログラム１３２をＲＯＭ１３０から読み出して実行することによって、図１０に示すように、各プログラム１３１〜１３２は、処理プロセス１４１および保留プロセス１４２として機能するようになる。なお、処理プロセス１４１は、図１に示した処理部３および図３に示した処理部３ｂと同等の機能を有する。また、保留プロセス１４２は、図１に示した保留部５および図３に示した保留部５ｂと同様の機能を有する。【０１４０】
また、ＨＤＤ１１０には、順序番号対応処理テーブル１１１が記憶されている。順序番号対応処理テーブル１１１は、実施例２に係る記憶部６ｂに記憶されていた順序番号および命令と同様の情報を有している。処理プロセス１４１は、順序番号対応処理テーブル１１１に記憶された順序番号および命令に基づいて、受信された制御パケットが示す命令を判別する。【０１４１】
また、コンピュータ１００は、Ｉ／Ｏ１６０を用いて、実施例１および実施例２に係る受信部と同様の機能を有している。なお、各プログラム１３１〜１３２は、ＲＯＭ１３０に保留されている必要は無く、例えばＨＤＤ１１０に記憶されており、ＣＰＵ１４０によってＲＡＭ１５０へ展開され、各プロセス１４１〜１４２として機能するようにしてもよい。【０１４２】
また、ＣＰＵ１４０は、ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）や、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）でもよい。【０１４３】
次に、図１１を用いて、コンピュータによって実行されたプログラムが行う処理の流れについて説明する。ここで、図１１は、プログラムが行う処理の流れを説明するフローチャートである。プログラムは、実行される命令が発生したことをトリガとして処理を開始する。【０１４４】
まず、保留プロセス１４２は、発生した命令を保留する（ステップＳ６０１）。次に、処理プロセス１４１は、Ｉ／Ｏ１６０にパケットが受信されたかどうかを判別する（ステップＳ６０２）。制御プロセス１４１は、パケットを受信した場合には（ステップＳ６０２肯定）、受信されたパケットが制御パケットであるかを判別する（ステップＳ６０３）。【０１４５】
次に、処理プロセス１４１は、受信されたパケットが制御パケットである場合には（ステップＳ６０３肯定）、制御パケットと対応付けられた命令があるか順序番号対応処理テーブル１１１に基づいて判別する（ステップＳ６０４）。処理プロセス１４１は、制御パケットと対応付けられた命令が記憶されていた場合には（ステップＳ６０４肯定）、制御パケットと対応付けられた命令と、保留された命令とが同一かを判別する（ステップＳ６０５）。【０１４６】
処理プロセス１４１は、制御パケットと対応付けられた命令と、保留された命令とが同一である場合には（ステップＳ６０５肯定）、保留された命令を実行する（ステップＳ６０６）。一方、処理プロセス１４１は、パケットが受信されていない場合には（ステップＳ６０２否定）、別のパケットの受信を待つ。また、処理プロセス１４１は、受信されたパケットが制御パケットではない場合には（ステップＳ６０３否定）、別のパケットの受信を待つ。【０１４７】
また、処理プロセス１４１は、制御用パケットが示す命令が順序番号対応処理テーブル１１１に記憶されていない場合には（ステップＳ６０４否定）、別パケットの受信を待つ。また、処理プロセス１４１は、制御パケットが示す命令と保留プロセス１４２によって保留された命令とが同一ではない場合には（ステップＳ６０５否定）、別のパケットの受信を待つ。【０１４８】
なお、本実施例で説明した並列計算プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。また、図１２に示すように、並列計算機システムは、並列計算プログラムおよび並列計算プログラムを実施するハードウェアを有する計算装置１ｂを有している。【０１４９】
また、並列計算機システムは、ネットワークカードを用いて、計算装置と各ネットワークを接続している。また、並列計算機システムは、各ネットワークを用いて、制御パケット生成装置、汎用スイッチを接続している。ここで、図１２は、並列計算機システムの構成を説明する図である。【０１５０】
並列計算プログラムは、インターネットなどのネットワークを介して配布することができる。また、並列計算プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読取可能な記憶媒体に記憶され、コンピュータによって記憶媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１５１】
１  計算装置
１Ｂ  計算装置
１Ｃ  計算装置
１Ｄ  計算装置Ａ
１Ｅ  計算装置Ｂ
１Ｆ  計算装置Ｃ
１Ｇ  計算装置Ｄ
１ｂ  計算装置
２  受信部
２ｂ  受信部
３  処理部
３ｂ  処理部
４  制御情報生成装置
４ｂ  制御パケット生成装置
５  保留部
５ｂ  保留部
６ｂ  記憶部
７  ノード
８  ノード
９  ノード
１０  ノード
１１ｂ  管理サーバ
１２  制御パケット生成部
１３  順序番号付与部
１４  制御パケット送信部
２０  ネットワークスイッチ
１００  コンピュータ
１１０  ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）
１３０  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
１４０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
１５０  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
１６０  Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）
１７０  バス
【図１】
0005590032.tif 000002
【図２】
0005590032.tif 000003
【図３】
0005590032.tif 000004
【図４】
0005590032.tif 000005
【図５】
0005590032.tif 000006
【図６】
0005590032.tif 000007
【図７】
0005590032.tif 000008
【図８】
0005590032.tif 000009
【図９】
0005590032.tif 000010
【図１０】
0005590032.tif 000011
【図１１】
0005590032.tif 000012
【図１２】
0005590032.tif 000013
【図１３】
0005590032.tif 000014
【図１４】
0005590032.tif 000015