(57)【要約】【課題】並列計算機システムにおける計算処理時間の遅延を少なくする。【解決手段】第１のプログラムを第１の領域に格納する第１の記憶装置と、第１のプログラムの実行に関する第１の情報を第１の記憶装置の第２の領域に格納するとともに、第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、第２のプログラムを第３の領域に格納する第２の記憶装置と、第２のプログラムの実行に関する第２の情報を第２の記憶装置の第４の領域に格納するとともに、第１の演算処理装置からのログ出力通知を受信した場合、第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、第３の記憶装置と、第１の情報処理装置から出力された第１の情報及び第２の情報処理装置から出力された第２の情報を第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置とを有する並列計算機システムが提供される。【選択図】図７
2011159165.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを第１の領域に格納する第１の記憶装置と、前記第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納するとともに、前記第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、
第２のプログラムを第３の領域に格納する第２の記憶装置と、前記第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納するとともに、前記第１の演算処理装置からのログ出力通知を受信した場合、前記第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、
第３の記憶装置と、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置と、を備えることを特徴とする並列計算機システム。
【請求項２】
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１の領域に格納された前記第１の情報の容量を監視し、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力するとともに、前記ログ出力通知を出力することを特徴とする請求項１記載の並列計算機システム。
【請求項３】
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、ログ出力通知を前記第２の情報処理装置に出力し、
前記第３の演算処理装置は、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納することを特徴とする請求項１又は２記載の並列計算機システム。
【請求項４】
前記並列計算機システムにおいて、
前記第１の演算処理装置は、前記第１の情報を出力する場合、前記第１のプログラムの実行を停止し、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力し、
前記第２の情報処理装置は、前記第２の情報出力とともに、前記第２のプログラムの実行を停止し、前記第２の情報の出力完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力し、
前記第１の情報処理装置は、前記第２の情報の出力完了通知を受信した場合、前記第１のプログラムの実行を開始し、
前記第２の情報処理装置は、前記第１の情報の出力完了通知を受信すると、前記第２のプログラムの実行を開始することを特徴とする請求項１〜３のいずれか１項に記載の並列計算機システム。
【請求項５】
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御方法であって、
前記第１の演算処理装置が、第１のプログラムの実行に関する第１の情報を第１の記憶装置に格納するステップと、
前記第１の演算処理装置が、前記第１の情報を出力する場合、ログ出力通知を出力するステップと、
前記第２の演算処理装置が、第２のプログラムの実行に関する第２の情報を第２の記憶装置に格納するステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置が、前記第２の情報を出力するステップと、
前記第３の演算処理装置が、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納するステップと、を有することを特徴とする並列計算機システムの制御方法。
【請求項６】
前記並列計算機システムの制御方法において、
前記第１の演算処理装置が、前記第１の情報を出力するとともに、前記第１のプログラムの実行を停止するステップと
前記第１の演算処理装置が、前記第１の情報の出力の完了とともに、前記第１の情報の出力の完了通知を前記第２の情報処理装置に出力するステップと、
前記第２の演算処理装置が、前記第２の情報を出力するとともに、前記第２のプログラムの実行を停止するステップと、
前記第２の演算処理装置が、前記第２の情報の出力の完了とともに、前記第２の情報の出力の完了通知を前記第１の情報処理装置に出力するステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置による前記第１のプログラムの実行を開始するステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置による前記第２のプログラムの実行を開始するステップとを、有することを特徴とする請求項５記載の並列計算機システムの制御方法。
【請求項７】
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御プログラムであって、
前記第１の演算処理装置に、前記第１の記憶装置の第１の領域に格納された第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納させるステップと、
前記第１の演算処理装置に、前記第１の情報を出力する場合、ログ出力通知を出力させるステップと、
前記第２の演算処理装置に、前記第２の記憶装置の第３の領域に格納された第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納させるステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置に、前記第２の情報を出力させるステップと、
前記第３の演算処理装置に、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする並列計算機システムの制御プログラム。
【請求項８】
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の領域に格納された前記第１の情報の容量を監視させ、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力させるとともに、前記ログ出力通知を出力させるステップステップ、を実行させることを特徴とする請求項７記載の並列計算機システムの制御プログラム。
【請求項９】
前記並列計算機システムの制御プログラムにおいて、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の情報処理装置に、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、前記ログ出力通知を前記第２の情報処理装置に出力させるステップと、
前記第３の演算処理装置に、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする請求項７又は８記載の並列計算機の制御プログラム。
【請求項１０】
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の情報を出力させるとともに、前記第１のプログラムの実行を停止させるステップと、
前記第１の演算処理装置に、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力させるステップと、
前記第２の演算処理装置に、前記第２の情報を出力させるとともに、前記第２のプログラムの実行を停止させるステップと、
前記第２の演算処理装置に、前記第２の情報の出力の完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力させるステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置に、前記第１のプログラムの実行を開始させるステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置に、前記第２のプログラムの実行を開始させるステップとを、有することを特徴とする請求項７〜９のいずれか１項記載の並列計算機の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、並列計算機システムの制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
近年、構造解析や気象予測等の大規模な計算処理を実行するために、複数の情報処理装置を有するスーパーコンピュータ等の並列計算機システムが開発されている。並列計算機システムは、互いにネットワーク接続された複数の情報処理装置が並列に計算を実行することで、一定時間内に莫大な演算処理を実行することができる。
【０００３】
並列計算機システムでは、計算処理は分割されて、各情報処理装置に割り当てられる。各情報処理装置は、割り当てられた処理を、他の情報処理装置と同期をとりながら、並列して実行する。そして、各情報処理装置の計算処理の結果は、他の情報処理装置の計算処理に利用される。
【０００４】
情報処理装置の多くは、演算結果をハードディスク（ＨＤＤ：Hard Disk Drive）に格納して、計算結果を永続的に記憶する必要がない。そのため、並列計算機システムは、ハードディスク費用の削減及びハードディスク管理の削減のため、ハードディスクを有さないディスクレス情報処理装置を含む。
【０００５】
並列計算機システムは、ハードディスクを備えるディスク付き情報処理装置も含む。ディスク付き情報処理装置は、並列計算機システムの計算処理結果をハードディスクに格納するとともに、ディスクレス情報処理装置が実行するプログラムを格納する。ディスク付き情報処理装置は、「イメージファイル」をディスクレス情報処理装置に送信する処理を行う。なお、「イメージファイル」は、ファイルシステムの内容と構造を含むファイルをいう。ディスクレス情報処理装置は、ディスク付き情報処理装置から受信したイメージファイルを、自己が有する主記憶装置としてのメモリに格納し、イメージファイルに含まれるプログラムを実行することで、割り当てられた計算処理を実行する。
【０００６】
ディスクレス情報処理装置は、計算処理に関連する情報をメモリに格納する場合がある。このような関連情報として、データログがある。データログは、各ディスクレス情報処理装置の計算時間等が記録されたデータであり、例えば、並列計算機システムの使用時間や課金の算出に使用される。一般に、ディスクレス情報処理装置のメモリの記憶容量はハードディスクの記憶容量と比較して少ない。そのため、ディスクレス情報処理装置は、メモリ上に一定量のデータログを格納すると、メモリに格納されたデータログを、ディスク付き情報処理装置に送信して、メモリからデータログを開放する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−２０１１９０号公報
【特許文献２】特開平８−７７０４３号公報
【特許文献３】特開平７−２３７２０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ディスクレス情報処理装置から、ディスク付き情報処理装置にデータログを送信する処理によって、ディスクレス情報処理装置に割り当てられた計算処理が遅延する。また、各ディスクレス情報処理装置は、互いに同期をとりながら演算処理を実行するために、あるディスクレス情報処理装置の計算処理の遅延が、他のディスクレス情報処理装置の計算処理を遅延させる場合がある。そして、異なるタイミングで計算処理の遅延が生じると、遅延時間が累積されることで、並列計算機システムの処理時間全体を遅延させることになる。近年、大規模な並列計算機システムは、数万台の情報処理装置を有するものもあるため、１台の情報処理装置において短時間の遅延時間であっても、大規模な並列計算機システムにとって大きな遅延時間となることがある。
【０００９】
開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムは、計算処理時間の遅延を少なくすることを目的とする。
【課題を解決するための手段】
【００１０】
開示の情報処理装置は、第１のプログラムを第１の領域に格納する第１の記憶装置と、第１のプログラムの実行に関する第１の情報を第１の記憶装置の第２の領域に格納するとともに、第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、第２のプログラムを第３の領域に格納する第２の記憶装置と、第２のプログラムの実行に関する第２の情報を第２の記憶装置の第４の領域に格納するとともに、第１の演算処理装置からのログ出力通知を受信した場合、第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、第３の記憶装置と、第１の情報処理装置から出力された第１の情報及び第２の情報処理装置から出力された第２の情報を第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置と、を有する。
【発明の効果】
【００１１】
開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムは、計算処理時間の遅延を少なくすることができる。
【図面の簡単な説明】
【００１２】
【図１】並列計算機システムの構成の一例を示す図である。
【図２】情報処理装置のハードウェア構成の一例を示す図である。
【図３】プロセッサコアの構成の一例を示す図である。
【図４】通信制御部の一例を示す図である。
【図５】計算ノードの主記憶装置の記憶領域の一例を示す図である。
【図６】複数の計算ノードによる計算処理及び通信処理の一例を示す図である。
【図７】複数の計算ノードにより実行されるログ出力処理の一例を示すタイムチャートである。
【図８】複数の計算ノードにより実行されるログ出力処理の一例を示すタイムチャートである。
【図９】データログ出力後に行われる計算ノード間の同期処理の一例を示す図である。
【図１０】ログサイズ容量によるデータログ出力処理フローの一例を示す図である。
【図１１】エラー検出によるデータログ出力処理フローの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムの一実施形態を説明する。
【００１４】
＜並列計算機システムの構成＞
図１は、並列計算機システムの構成の一例を示す図である。並列計算機システム１０００は、複数の計算ノード及びＩＯノード（Input Output node：入出力ノード）を有する。１００ａ、１００ｂは、計算処理を行う計算ノードの例である。１００ｃは、ＩＯノードの例である。計算ノード１００ａ、１００ｂは、外部記憶装置を有さない情報処理装置であり、ＩＯノード１００ｃは、ハードディスク等の外部記憶装置を有し、入出力処理を行う情報処理装置である。情報処理装置のハードウェア構成の一例は、図２を用いて後述する。複数の計算ノードは互いに通信経路としてのネットワーク１８０を介して接続する。
【００１５】
なお、ＩＯノードの数は、所定数の計算ノード毎に配置される。そのため、計算ノードからＩＯノードに対してデータの書込処理が集中した場合でも、計算ノードに書込待ちの遅延を生じさせない。
【００１６】
なお、並列計算機システム１０００の計算ノード及びＩＯノードの数は、図面に示される数に限定されず、数十〜数十万のノード数であってもよい。
【００１７】
＜情報処理装置のハードウェア構成＞
図２は、並列計算機システムに含まれる情報処理装置のハードウェア構成の一例を示す図である。図２に示す情報処理装置１００は、演算処理装置１１０、主記憶装置１２０、通信制御部１３０、入出力制御部１４０、外部記憶装置１５０、及びドライブ装置１６０を有する。
【００１８】
なお、情報処理装置１００が、上記構成要素のうち外部記憶装置１５０もドライブ装置１６０も含まない場合、そのような情報処理装置は、図１に示す「計算ノード」に相当する。情報処理装置１００が、外部記憶装置１５０又はドライブ装置１６０若しくはそれら両方を含む場合、そのような情報処理装置は、図１に示す「ＩＯノード」に相当する。
【００１９】
［主記憶装置］
主記憶装置１２０は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されるメインメモリ。なお、主記憶装置１２０は、プログラム、データ、及びデータログ等を格納する。主記憶装置１２０に格納されるプログラムは、例えば、基本ソフトとしてのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、後述する計算処理機能をコーディングした計算処理用のプログラム、後述するデータログ出力機能をコーディングしたデータログ出力用のプログラムがある。なお、以下の記載におけるプログラムは、特に名称を特定しない場合は、ＯＳ、計算処理用のプログラム、データログ出力用のプログラムの少なくとも１つを意味する。
【００２０】
データログは、タイムスタンプ、計算ノードが実行しているプログラム名称、プロセッサコア（後述）の使用率、プロセッサコアがプログラムを実行することによって生じたイベント等が記録されたデータである。データログは、例えば、並列計算機システム１０００の使用時間の算出に使用される。データログを主記憶装置１２０に格納する機能は、演算処理装置１１０が計算処理用のプログラムを実行することにより、実現される。
【００２１】
［外部記憶装置］
外部記憶装置１５０は、磁気ディスクを有するディスクアレイ、又はフラッシュメモリを用いたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。外部記憶装置１５０は、記憶部１２０に格納されるプログラム及びデータを記憶することができる。上記したように外部記憶装置１５０は、計算ノードではなく、ＩＯノードが備える装置である。外部記憶装置１５０に記憶されたプログラム及びデータは、イメージファイルとしてＩＯノードから計算ノードに送信される。
【００２２】
［ドライブ装置］
ドライブ装置１６０は、例えば、フロッピー（登録商標）ディスクやＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などの記憶媒体１７０を読み書きする装置である。ドライブ装置１６０は、記憶媒体１７０を回転させるモータや記憶媒体１７０上でデータを読み書きするヘッド等を含む。なお、記憶媒体１７０は、上記した主記憶装置１２０に格納されるプログラムを、記憶することができる。ドライブ装置１６０は、ドライブ装置１６０にセットされた記憶媒体１７０からプログラムを読み出す。演算処理装置１１０は、ドライブ装置１６０により読み出されたプログラムを、主記憶装置１２０及び／又は外部記憶装置１５０に格納する。
【００２３】
［演算処理装置］
図２に示す演算処理装置１１０は、演算を行うプロセッサコア１０〜４０、Ｌ２（Ｌｅｖｅｌ２）キャッシュメモリ（２次キャッシュメモリ）本体の制御を行うＬ２キャッシュコントローラ５０、Ｌ２キャッシュメモリ本体であるＬ２キャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６０、及びメモリアクセス制御部７０を有する。演算処理装置１１０は、入出力制御部１４０を介して、通信制御部１３０、外部記憶装置１５０、ドライブ装置１６０に接続される。Ｌ２キャッシュコントローラ５０及びＬ２キャッシュＲＡＭ６０を含み、Ｌ２キャッシュメモリと称される。
【００２４】
演算処理装置１１０は、主記憶装置１２０に記憶されたプログラムを実行することで、主記憶装置１２０にアクセスし、アクセスされたデータを演算する装置である。そして、演算処理装置１１０は、演算結果のデータを、主記憶装置１２０に格納する。演算処理装置１１０は、例えば、演算処理装置としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。演算処理装置１１０は、プログラムを実行することで、後述する計算処理機能並びにログ出力処理機能を実現する。
【００２５】
［演算処理装置：プロセッサコア］
図３は、プロセッサコアの構成の一例を示す図である。プロセッサコアは、演算処理装置１１０の演算処理機能を実現する装置である。プロセッサコア１０は、命令制御部（ＩＵ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｕｎｉｔ）１２、命令実行部（ＥＵ：Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ）１４、Ｌ１（Ｌｅｖｅｌ１）キャッシュ（１次キャッシュ）コントローラ１６、Ｌ１キャッシュＲＡＭ１８を有する。なお、図３では、プロセッサコア１０について説明するが、プロセッサコア１０と同じ機能を、図２に示す他のプロセッサコア２０〜４０も有する。なお、図２に示されるプロセッサコアの個数は、４個であるが、この個数に制限されることなく、情報処理装置１００は、４個以上または４個未満のプロセッサコアを有してもよい。
【００２６】
命令制御部１２は、Ｌ１キャッシュＲＡＭ１８から読み出した命令をデコードする。そして、命令制御部１２は、命令実行に使用されるオペランドを格納するソースレジスタ及び当該命令実行の結果を格納するディスティネーションレジスタを特定するレジスタアドレスを、「演算制御信号」として命令実行部１４に供給する。デコードする命令は、例えば、Ｌ１キャッシュＲＡＭ１８へのロード命令、ストア命令を含むメモリアクセス命令等である。命令制御部１２は、データ要求信号をＬ１キャッシュコントローラ１６に供給することで、Ｌ１キャッシュＲＡＭ１８から命令を読み出す。
【００２７】
命令実行部１４は、ロード命令又はストア命令を含むメモリアクセス命令等をデコードしたデコード結果を、「データ要求信号」としてＬ１キャッシュコントローラ１６に供給する。Ｌ１キャッシュコントローラ１６は、ロード命令に従って、データを命令実行部１４の内部にある、レジスタアドレスで特定されるレジスタに供給する。命令実行部１４は、命令実行部１４の内部にある、レジスタアドレスで特定されるレジスタからデータを取り出し、デコードした命令に従って演算を実行する。命令実行部１４は、命令の実行を終了すると、演算完了信号を命令制御部１２に供給して、次の演算制御信号を受け取る。
【００２８】
プロセッサコア１０のＬ１キャッシュコントローラ１６は、キャッシュデータ要求信号ＣＲＱを、Ｌ２キャッシュコントローラ５０に供給する。そして、プロセッサコア１０は、完了通知であるキャッシュデータ応答信号ＣＲＳ、及び、データ又は命令を、Ｌ２キャッシュコントローラ５０から受け取る。Ｌ１キャッシュコントローラ１６は、命令制御部１２及び命令実行部１４と独立して動作することができる。そのため、命令制御部１２及び命令実行部１４が所定の処理を実行中に、Ｌ１キャッシュコントローラ１６は、Ｌ２キャッシュコントローラ５０のデータ又は命令のアクセスを、命令制御部１２及び命令実行部１４と独立して行うことができる。
【００２９】
［演算処理装置：Ｌ２キャッシュメモリ］
図２に示すＬ２キャッシュコントローラ５０は、Ｌ１キャッシュＲＡＭ１８及び主記憶装置１２０へのデータの読み出し（ロード）要求又は書き込み（ストア）要求を行い、又は、Ｌ２キャッシュＲＡＭ６０へのデータのロード又はストアを行う。Ｌ２キャッシュコントローラ５０は、例えば、ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ  Ｅｘｃｌｕｓｉｖｅ  Ｓｈａｒｅｄ  Ｉｎｖａｌｉｄ）プロトコルに従って、Ｌ１キャッシュメモリ又は主記憶装置１２０に記憶されたデータと、Ｌ２キャッシュメモリに保持されたデータとの整合性を維持するように、データのロード又はストアを行う。例えば、ＭＥＳＩプロトコルでは、データは、「Ｍ（Modified：変更）」、「Ｅ（Exclusive：排他）」、「Ｓ（Share：共有）」、「Ｉ（Invalidate無効）」の４つの状態情報とともに、Ｌ１キャッシュメモリ等に格納される。
【００３０】
［演算処理装置：バスインタフェース］
バスインタフェース５１は、入出力制御部１４０に演算処理装置１１０とのインタフェースを提供する回路である。通信制御部１３０が、後述するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を実行する場合は、通信制御部１３０は、バスインタフェース５１並びにメモリアクセス制御部７０を介して主記憶装置１２０からデータを取得又は出力する。
【００３１】
［演算処理装置：メモリアクセス制御部］
メモリアクセス制御部７０は、主記憶装置１２０からのデータのロード、主記憶装置１２０へのデータのストア、及び主記憶装置１２０のリフレッシュなどの動作を制御する回路である。メモリアクセス制御部７０は、Ｌ２キャッシュコントローラ５０から受け取ったロード命令又はストア命令に従って、主記憶装置１２０に対して、ロード又はストアを行う。
【００３２】
［入出力制御部］
入出力制御部１４０は、演算処理装置１１０が接続されるフロントサイドバス（ＦＳＢ：Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）（「フロントサイドバス」の代わりに「ＣＰＵローカルバス」でも可である）と、通信制御部１３０、外部記憶装置１５０、及びドライブ装置１６０が接続されるＩＯバス（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  ｂｕｓ：入出力バス）とを繋ぐバスブリッジ回路である。入出力制御部１４０は、例えば、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス又はＰＣＩ  Ｅｘｐｒｅｓｓ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスなどの規格に従って機能するブリッジ回路である。
【００３３】
［通信制御部］
通信制御部１３０は、通信経路としてのネットワーク１８０と接続し、データを送受信する装置であり、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）である。通信制御部１３０は、ＤＭＡ方式によるデータ転送、又は、ＰＩＯ（Ｐｒｏｇｒａｍｍｅｄ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）方式によるデータ転送などを行う。
【００３４】
［通信制御部：ＤＭＡ方式のデータ転送］
図４は、通信制御部の一例を示す図である。通信制御部１３０は、メモリ１３１、ＣＰＵ１３２、コマンドキュー１３４、及び送受信バッファメモリ１３６を有する。通信制御部１３０がＤＭＡ方式で動作する場合、通信制御部１３０は、プロセッサコア１０とは独立して、主記憶装置１２０に直接データを送信又は、主記憶装置１２０からデータを取得する。コマンドキュー１３４は、プロセッサコア１０から転送されたコマンドを保持する。コマンドには、データ転送の転送先メモリのメモリアドレス、転送元メモリのメモリアドレスが特定される。
【００３５】
ＣＰＵ１３２は、メモリ１３１に格納された通信プログラムを実行して、所定のプロトコルに従う通信処理機能を実現する。ＣＰＵ１３２は通信処理機能を実現することで、コマンドキュー１３４に保持されるコマンドを読み取り、転送先の主記憶装置のメモリアドレスから転送元の主記憶装置のメモリアドレスにデータを転送する処理を行う。例えば、ＣＰＵ１３２は、コマンドに含まれるメモリアドレスで特定される主記憶装置１２０のメモリ上の位置からデータを取得し、他の計算ノード又はＩＯノードに取得したデータを転送する。または、ＣＰＵ１３２は、送受信バッファメモリ１３６に保持されるデータを取得して、コマンドに含まれるメモリアドレスで特定される主記憶装置１２０のメモリ上の位置にデータを格納する。送受信バッファメモリ１３６は、他の計算ノードから送信されたデータを保持し、又は、通信制御部１３０が送信するデータを保持する。
【００３６】
ＤＭＡ方式のデータ伝送を行う場合、プロセッサコア１０は、コマンドキュー１３４にコマンドを転送する処理と、データ転送の完了を受信するとき生じる割り込み処理を行う。また、通信制御部１３０が、主記憶装置１２０にメモリアクセスしている時、主記憶装置１２０にメモリアクセスを行おうとするプロセッサコア１０との間で競合が発生する。そのため、計算ノードが主記憶装置１２０からデータを他の計算ノードやＩＯノードに送信する場合、プロセッサコア１０が実行する計算処理に割り込みを生じ、又は、プロセッサコア１０が実行する主記憶装置１２０へのアクセス処理に遅延を生じさせる。そのため、通信制御部１３０によるＤＭＡ方式のデータ転送処理は、プロセッサコア１０の計算処理を遅延させる。
【００３７】
［通信制御部：ＰＩＯ方式のデータ転送］
ＰＩＯ方式のデータ転送では、ＣＰＵ１３２は、送受信バッファメモリにデータが格納されると、プロセッサコア１０にデータが受信された旨を通知する。プロセッサコア１０は、データが受信された旨の通知を受け取ると、計算処理を中止して、送受信バッファメモリ１３６に保持される受信データを主記憶装置１２０に転送する処理を実行する。また、主記憶装置１２０からのデータ送信では、プロセッサコア１０は主記憶装置１２０のメモリアドレスを指定して、データを読み出し、送受信バッファメモリ１３６にデータを格納する。このように、ＰＩＯ方式のデータ転送は、ＤＭＡ方式の処理よりもプロセッサコア１０の行う処理が多いため、ＤＭＡ方式よりも長い時間の計算処理の遅延を生じる。
【００３８】
＜計算ノードの機能構成＞
［計算ノードの記憶領域］
図５は、計算ノードの主記憶装置１２０の記憶領域の一例を示す図である。図５に示す記憶領域の一例では、主記憶装置１２０は、ログ記憶領域２１０と、プログラム保存領域２２０とに分けられる。ログ記憶領域２１０には、データログが記憶される。プログラム保存領域２２０には、プログラム及びデータが記憶される。ログ記録ポインタ２３０には、ログ記憶領域２１０に格納されたログの先頭アドレスが格納される。なお、先頭アドレスとは、タイムスタンプが最も新しいログが記録されたアドレスであり、例えば、メモリ空間に降順又は昇順でログが連続的に記憶された場合、メモリ空間の末端のメモリアドレスである。
【００３９】
［計算ノードの計算処理］
図６は、複数の計算ノードによる計算処理及び通信処理の一例を示す図である。図６に示す計算ノード１００ａ、１００ｂは、図１を用いて説明した計算ノードに相当する。ＩＯノード１００ｃは、図１を用いて説明したＩＯノードに相当する。図６に示す計算ノード１００ａ、１００ｂの主記憶装置１２０ａ、１２０ｂは、それぞれ図５に示した主記憶装置の記憶領域を有する。
【００４０】
計算ノード１００ａ、１００ｂのプロセッサコアは、主記憶装置１２０ａ、１３０ｂ内に格納されるプログラムを実行することで、計算ノード１００ａ、１００ｂに割り当てられる計算処理を実行する。計算ノード１００ｂに割り当てられる計算処理は、他の計算ノード１００ａで実行される計算処理の終了に同期して開始するように制御される。そのように、同期をとるメッセージ通信として、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いても良い。ＭＰＩでは、例えば、各ノードで実行される処理の開始又は処理の終了を、他のノードで実行される処理の開始又は終了と同期付けるためのメッセージが規定される。なお、このような複数の計算ノードでそれぞれ実行されている計算処理を同期させるメッセージ通信は、ＭＰＩの関数に含まれるバリア同期関数である、ＭＰＩ＿Ｂａｒｒｉｅｒによって行うことができる。
【００４１】
図６に示される例では、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃ１の受信に同期して、計算処理を開始するように制御される。
【００４２】
［計算ノードのログ出力処理］
計算ノード１００ａ、１００ｂのプロセッサコアは、主記憶装置１２０ａ、１２０ｂ内に格納されるプログラムを実行することで、当該プログラムの実行に関するログ出力処理を実行する。Ｌ１は、計算ノード１００ａからＩＯノード１００ｃに送信されるデータログである。Ｎ１は、計算ノード１００ａから計算ノード１００ｂに送信されるログ出力通知である。
【００４３】
［ログサイズ容量による計算ノードのログ出力処理］
計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａ内に格納されるプログラムの実行に伴う計算結果Ｃ１を、プログラム保存領域２２０ａに格納し、プログラムの実行に関するデータログを、ログ記録領域２１０ａに格納する。計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａ内に格納されるプログラムを実行して、ログ記録領域２１０ａに格納されたデータログの容量を監視する。この監視処理は、例えば、計算ノード１００ａのプロセッサコアは、ログ記録ポインタ２３０ａに格納されるメモリアドレスを監視して、ログ記録ポインタ２３０ａのメモリアドレスが所定のメモリアドレスと一致した場合に、データログの容量が所定容量に達したと判断してもよい。データログの容量が所定容量を超えた場合、計算ノード１００ａは、通信制御部を用いてデータログＬ１をＩＯノード１００ｃに出力する。
【００４４】
データログＬ１を出力した計算ノード１００ａは、データログ出力とともに、ログ出力通知Ｎ１をネットワークに接続された他の計算ノード１００ｂに送信する。
【００４５】
計算ノード１００ｂも、プログラム保存領域２２０ｂ内に格納されるプログラムの実行に伴う計算結果Ｃ２を、プログラム保存領域２２０ｂに格納し、プログラムの実行に関するデータログを、ログ記録領域２１０ｂに格納する。そして、計算ノード１００ｂは、計算ノード１００ａからのログ出力通知Ｎ１を受信した場合、プログラムの実行を停止するとともに、データログＬ２をＩＯノード１００ｃに対して出力する。
【００４６】
このように、複数の計算ノードのうち一の計算ノード１００ａでデータログの出力が生じると、他の計算ノード１００ｂもデータログの出力を行うように動作する。そのため、並列計算機システム１０００内部の計算ノードは、いずれかの計算ノードでデータログの出力が生じると、他の計算ノードも同じタイミングでデータログを出力する。
【００４７】
［エラー検出による計算ノードのデータログ出力処理］
計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａに格納されたプログラムの実行においてエラーが発生した場合、主記憶装置１２０ａの内容とともに、データログＬ１を、通信制御部１３０を介してＩＯノードに出力してもよい。これは、いわゆる「メモリダンプ」と呼ばれる処理であり、計算ノードのシステム障害の原因解析のため、障害が発生したときの主記憶装置１２０ａ上のデータをディスクに保存する処理である。計算ノード１００ａは、外部記憶装置を有さないため、主記憶装置１２０ａの内容を、ＩＯノード１００ｃに出力する。メモリダンプによるデータログＬ１出力とともに、計算ノード１００ａは、ログ出力通知Ｎ１を計算ノード１００ｂに出力する。
【００４８】
なお、メモリダンプは、ＯＳによる機能であるため、上記したようにデータログ出力機能用のプログラム実行の結果によるものではない。データログ出力機能用のプログラムは、メモリダンプが生じると、他の計算ノードにログ出力通知Ｎ１を送信する機能をプロセッサコアに実現させる。このように、メモリダンプによるデータログＬ１自体の出力はＯＳの実行によりなされるため、メモリダンプ時のデータログＬ１の出力プログラムを別途用意しなくてもよい。
【００４９】
計算ノード１００ｂのログ出力通知Ｎ１受信後の動作は、上記計算ノードによるデータログ出力処理１と同じである。
【００５０】
図７及び図８は、複数の計算ノードにより実行されるデータログ出力を示すタイムチャートである。図７及び図８を用いて、図６のログ出力処理のタイムチャートを説明する。
【００５１】
［各計算ノードがランダムにデータログを出力するケース］
図７に示すタイムチャート３０１は、各計算ノード１００ａ、１００ｂ、．．．、１００ｎがランダムにデータログを出力するケースを示す。データログの出力３１１、３１３、３１５は、ログ記録領域に所定量のデータログが蓄積したケース、又は、異常発生によりメモリダンプが生じたケースによって生じる。
【００５２】
図４を用いて、通信制御部のデータ転送を説明したように、ＤＭＡ方式でもＰＩＯ方式でも、データ転送は、プロセッサコアの計算処理Ｐａ１、Ｐａ２、．．．、Ｐａｎに割り込み処理を生じる。そのため、ログ出力３１１、３１３、．．．、３１ｎによって、それぞれ遅延３３２、３３４、．．．、３３ｎが生じる。また、ログ出力３１１、３１３、．．．、３１ｎによって、それぞれデータログＬａ１、Ｌａ２、．．．、Ｌａｎの転送が生じる。
【００５３】
計算ノード１００ａは、計算処理Ｐａ１を終了すると、計算結果Ｃａ１を計算ノード１００ｂに送信する。Ｔ３１２に示されるように、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃａ１の受信に同期して、計算処理Ｐａ２を開始する。
【００５４】
計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノード１００ｎ−１の計算結果に同期して実行される後続処理に関係する任意の計算ノードである。Ｔ３２２に示されるように、計算ノード１００ｎは、計算ノード１００１００ｎ−１による計算処理の計算結果の受信により、計算処理Ｐａｎを開始する。
【００５５】
このように、複数の計算ノード１００ａ〜１００ｎは、データログ出力による遅延３３２、３３４、．．．、３３ｎがそれぞれ異なるタイミングで生じる場合、遅延３３２、３３４、．．．、３３ｎを加算した遅延時間が、並列計算機システム１０００の計算処理時間の遅延となる。
【００５６】
［計算ノードが他の計算ノードのデータログの出力に同期してデータログを出力するケース］
図７に示すタイムチャート３５１は、各計算ノード１００ｂ、．．．、１００ｎが、ある計算ノード１００ａのデータログ出力に同期してデータログを出力するケースを示す。データログの出力３６１は、ログ記録領域に所定量のデータログが蓄積したケース、又は、異常発生によりメモリダンプが生じたケースによって生じる。データログの出力３６３、３６５は、ログ出力通知３６７を各計算ノード１００ｂ、．．．、１００ｎが計算ノード１００ａから受信することによって生じる。
【００５７】
計算ノード１００ａは、データログの出力３６１とともに、ログ出力通知３６７を他の計算ノード１００ｂ〜１００ｎに通知する。他の計算ノード１００ｂ〜１００ｎが、ログ出力通知３６７を受け取ると、計算ノード１００ｂ〜１００ｎは、自ノードが有する主記憶装置からデータログを出力する。
【００５８】
計算ノード１００ａの通信制御部は、データログの転送Ｌｂ１を実行する。計算ノード１００ａは、計算処理Ｐｂ１を終了すると、計算結果Ｃｂ１を計算ノード１００ｂに送信する。
【００５９】
Ｔ３６２に示されるように、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃｂ１の受信に同期して、計算処理Ｐｂ２を開始する。計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノード１００ｎ−１の計算結果に同期して実行される後続処理に関係する任意の計算ノードである。Ｔ３７２に示されるように、計算ノード１００ｎは、計算ノード１００ｎ−１による計算処理の計算結果の受信に同期して、計算処理Ｐｂｎを開始する。
【００６０】
図４を用いて説明したように、ＤＭＡ方式でもＰＩＯ方式でも、データ転送は、プロセッサコアの計算処理Ｐａ１（図７の３０１参照）、Ｐｂ１（図７の３５１参照）に割り込み処理を生じる。そのため、ログ出力３１１によって、遅延３３２が、ログ出力３６１によって、遅延３６２がそれぞれ生じる。同様に、ログ出力３６３、３６４によって、遅延３６５、遅延３６６がそれぞれ生じる。タイムチャート３５１に示すように、ログ出力３６３、３６４により生じる遅延３６５、遅延３６６は、遅延３６２に隠蔽される。
【００６１】
Ｔ３８０は、タイムチャート３０１の並列計算機システム１０００の計算処理時間と、タイムチャート３５１の並列計算機システム１０００の計算処理時間との差を示したものである。タイムチャート３５１の計算処理時間の方が、タイムチャート３０１の計算処理時間より短くなることがわかる。タイムチャート３５１に示すように、計算ノード１００ａで生じたログ出力３６１に同期して、他の計算ノードにもログ出力をさせることで、データログ出力による遅延３６２、３６５、３６６は、互いに重畳する。言い換えれば、タイムチャート３０１で説明したように遅延が累積されず、各計算ノードの遅延が隠蔽されて、並列計算機システム１０００の計算処理時間の遅延時間を短縮できる。
【００６２】
図８に示すタイムチャート３７１は、タイムチャート３５１と同様に、各計算ノード１００ｂ〜１００ｎが、ある計算ノード１００ａのデータログ出力に同期してデータログを出力するケースを示す。ただし、タイムチャート３７１に示される処理は、計算ノードがデータログを出力した後、他の計算ノードと同期して、計算ノードに割り当てられた計算処理を開始する同期処理３７２をする点において、タイムチャート３５１に示される処理と異なる。
【００６３】
各計算ノードは、データログ出力前は、例えば、ＭＰＩに従うメッセージを送受信しながら、各計算ノードが並列して進めている処理の同期をとっている。データログ出力は、並列して実行される計算処理に対する割り込みで処理される。タイムチャート３０１、３５１に示すデータログ出力処理は、データログの量が各計算ノードで異なる等の理由により、計算処理に対する遅延は、計算ノード毎に異なる。タイムチャート３０１に示す遅延は、各計算ノード別個に起こるが、タイムチャート３５１に示す遅延は、ログ出力３６１をイベントとして、他の計算ノードもデータログ出力するので、複数の計算ノード間の同期を一度に行うことができる。そこで、タイムチャート３７１では、同期処理３７２により各計算ノードが同期後に計算処理の開始を行うことで、データログ出力による遅延が並列して進めている計算処理に影響を与えないようにする。
【００６４】
図９は、データログ出力後に行われる計算ノード間の同期処理の一例を示す図である。計算ノードは、データログ出力用プログラムを実行することにより計算ノード間の同期処理を実現する。データログ出力後の計算ノード間の同期処理の手法の一例としてバタフライバリア同期を用いる。バタフライバリア同期は、各計算ノードの計算処理に同期のための同期バリアを設けておき、全ての計算ノードによる計算処理がこの同期バリアに到達したときに、各プロセッサが同期バリアを超えて次の計算処理に進むことを許す方式である。図９に示す例は、２3個の計算ノード１００ａ〜１００ｈが実行するバタフライバリア同期である。図９では、各計算ノードが交換するメッセージを点線の矢印で示した。
【００６５】
図９に示される計算ノード１００ａ〜１００ｈは、まず、隣同士の計算ノード間でメッセージを送信することで、第１のバリア同期処理１９１を実行する。次に、計算ノード１００ａ〜１００ｈは、メッセージの交換が終了した隣の計算ノードの組の対応する計算ノードとメッセージを交換し、第２のバリア同期処理１９２を実行する。さらに、計算ノード１００ａ〜１００ｈは、メッセージの交換が終了した隣の計算ノードの組の対応する計算ノードとメッセージを交換し、第３のバリア同期処理１９２を実行する。このように、各計算ノードがlog2８＝３個のメッセージを受け取ったときに、全ての計算ノードがバリアに到達したと判断し、各計算ノードは、各々に割り当てられた計算処理を再開する。
【００６６】
バリア同期では、例えば、通信制御部１３０の送受信バッファメモリ１３６に設けられたデータ領域と、他の計算ノードのデータ領域であるとの同期が行われる。例えば、計算ノードが８つの場合、各計算ノードは、他の計算ノードから送られる３つのメッセージをそれぞれ受け取る３つのデータ領域をそれぞれ用意する。そして、各計算ノードは、３つのデータ領域が全てメッセージで埋められたとき、全ての計算ノードがバリアに到達したと判断する。なお、バリア同期に要するメッセージの数は、２を底とし、計算ノード数を真数とした数である。そのため、計算ノード数が８０，０００であっても、１７のメッセージ数で全計算ノードのバリア同期を確認できる。このように、バタフライバリア同期方式は、膨大な数のノード数を有する大規模な並列計算機システムであっても、少ないメッセージ数で全ノードの同期処理を行うことができる。
【００６７】
図１０は、ログサイズ容量によるデータログ出力処理フローの一例を示す図である。図１０に示すデータログ出力処理フローにおいて、後述するステップＳ６０１〜Ｓ６０３は、計算ノードが計算処理用のプログラムを実行することにより実現される。その他の計算ノードによる処理は、計算ノードがデータログ出力用プログラムを実行することにより実現される。
【００６８】
［計算ノード１００ａの処理フロー］
計算ノード１００ａは、プログラムを実行して、計算処理を開始する（Ｓ６０１）。計算ノード１００ａは、ログ記録ポインタ２３０ａに、ログ記録領域２１０ａの先頭メモリアドレスを書き込む（Ｓ６０２）。計算ノード１００ａは、計算処理の実行に関するデータログをログ記録領域２１０ａに格納して、ログ記録ポインタ２３０ａに、データログを保存した位置のメモリアドレスを書き込む（Ｓ６０３）。計算ノード１００ａは、ログ記録領域に格納されたログサイズが設定値を超えるか否か判断する（Ｓ６０４）。言い換えれば、計算ノード１００ａは、ログ記録ポインタ２３０ａに格納されるメモリアドレスを監視し、メモリアドレスが所定メモリアドレスを超えたか否か判断する。なお、図１０のＳ６０４の例は「設定値を超える／設定値以下」の組み合わせで判断しているが、「設定値以上／設定値未満」の判断でも良い。
【００６９】
ログサイズが設定値未満の場合（Ｓ６０４  Ｎｏ）、計算ノード１００ａは、Ｓ６０２に戻り、計算処理を実行し続ける。一方、ログサイズが設定値以上の場合（Ｓ６０４  Ｙｅｓ）、計算ノード１００ａは、他の計算ノードにログ出力通知を送信する（Ｓ６０５）。そして、計算ノード１００ａは、計算処理を停止し（Ｓ６０６）、ログ記録領域２１０ａに格納されたログをＩＯノード１００ｃに出力する（Ｓ６０７）。計算ノード１００ａは、ログ出力が終了すると、図８及び図９で説明したように、他の計算ノードとバリア同期を行った後で（Ｓ６０８）、Ｓ６０１に戻って計算処理を再開する。
【００７０】
［計算ノード１００ｂの処理フロー］
計算ノード１００ｂは、プログラムを実行して、計算処理を開始する（Ｓ６１１）。計算ノード１００ｂは、ログ記録ポインタ２３０ｂに、ログ記録領域２１０ｂの先頭メモリアドレスを書き込む（Ｓ６１２）。計算ノード１００ｂは、計算処理の実行に関するデータログをログ記録領域２１０ｂに格納して、ログ記録ポインタ２３０ｂに、データログを保存した位置のメモリアドレスを書き込む（Ｓ６１３）。計算ノード１００ｂは、計算ノード１００ａからログ出力通知を受信したかを判断する（Ｓ６１４）。ログ出力通知を受信しない場合（Ｓ６１４  Ｎｏ）、計算ノード１００ｂは、ログ出力通知の受信を待つ。ログ出力通知を受信した場合（Ｓ６１４  Ｙｅｓ）、計算ノード１００ｂは、計算処理を停止して（Ｓ６１５）、ログ記録領域２１０ｂに格納されたログをＩＯノード１００ｃに出力する（Ｓ６１６）。計算ノード１００ｂは、ログ出力が終了すると、図８及び図９で説明したように、他の計算ノードとバリア同期を行った後で（Ｓ６１７）、Ｓ６１１に戻って計算処理を開始する。
【００７１】
［ＩＯノード１００ｃの処理フロー］
ＩＯノード１００ｃは、計算ノード１００ａ又は計算ノード１００ｂからログを受信すると（Ｓ６３１）、受信したデータログを外部記憶装置１５０ｃに保存する（Ｓ６３２）。
【００７２】
図１１は、エラー検出によるデータログ出力処理フローの他の実施例を示す図である。図１１に示すデータログ出力処理フローは、計算ノード１００ａの処理フローが図１０に示すデータログ出力処理フローと異なる。図１１に示す計算ノード１００ｂとＩＯノード１００ｃの処理フローは、図１０に示す計算ノード１００ｂとＩＯノード１００ｃの処理フローと同じである。そのため、以下に、計算ノード１００ａの処理フローを説明する。
【００７３】
なお、図１１に示すデータログ出力処理フローにおいて、ステップＳ６０１〜Ｓ６０３は、計算ノードが計算処理用のプログラムを実行することにより、実現される。その他の計算ノードによる処理は、計算ノードがデータログ出力用プログラムを実行することにより実現される。
【００７４】
図１０と同様に、計算ノード１００ａは、計算処理を開始して、ログを主記憶装置に保存する（Ｓ６０１〜Ｓ６０３）。計算ノード１００ａは、自ノードでエラーが発生したか否かを判断する（Ｓ６４１）。エラーが発生していない場合（Ｓ６４１  Ｎｏ）、計算ノード１００ａは、Ｓ６０２に戻り、計算処理を実行し続ける。エラーが発生した場合（Ｓ６４１  Ｙｅｓ）、計算ノード１００ａは、他の計算ノードにログ出力通知を送信する（Ｓ６０５）。
【００７５】
ログ出力通知後、計算ノード１００ａは、計算処理を停止する（Ｓ６４２）。計算ノード１００ａは、ＯＳに含まれるダンプカーネルを起動して（Ｓ６４３）、主記憶装置１２０ａに格納されたデータをダンプファイルとしてＩＯノード１００ｃに送信する（Ｓ６４４）。計算ノード１００ａは、ダンプファイルを送信後、プログラムを停止して（Ｓ６４５）、データログ出力フローを終了する。
【００７６】
なお、Ｓ６４５のように、エラーが生じた計算ノード１００ａのプログラム実行を停止するのは、エラーが生じた計算ノードにより誤った計算出力が生じるのを防ぐ等の理由のためである。並列計算機システム１０００は、数万ノードになる場合、１台のノードをエラーにより停止させても、他のノードに計算処理を割り振ることで、継続して計算処理を実行することが可能である。
【００７７】
図１０及び図１１では、ログ出力前（Ｓ６０７、Ｓ６１６）に、計算処理を停止させたが（Ｓ６１６、Ｓ６１５）、計算処理の停止は、図８に示した同期処理（Ｓ６０８、Ｓ６１７）を行うためである。そのため、図７のタイムチャート３５１に示すように同期処理を行わない場合は、計算処理停止（Ｓ６１６、Ｓ６１５）及び同期処理（Ｓ６０８、Ｓ６１７）は不要である。
【００７８】
以上の実施形態に関し、更に以下の付記を開示する。
［付記１］
第１のプログラムを第１の領域に格納する第１の記憶装置と、前記第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納するとともに、前記第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、
第２のプログラムを第３の領域に格納する第２の記憶装置と、前記第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納するとともに、前記第１の演算処理装置からのログ出力通知を受信した場合、前記第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、
第３の記憶装置と、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置と、を備えることを特徴とする並列計算機システム。
［付記２］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１の領域に格納された前記第１の情報の容量を監視し、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力するとともに、前記ログ出力通知を出力することを特徴とする付記１記載の並列計算機システム。
［付記３］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、ログ出力通知を前記第２の情報処理装置に出力し、
前記第３の演算処理装置は、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納することを特徴とする付記１又は２記載の並列計算機システム。
［付記４］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、前記第１の情報を出力する場合、前記第１のプログラムの実行を停止し、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力し、
前記第２の情報処理装置は、前記第２の情報出力とともに、前記第２のプログラムの実行を停止し、前記第２の情報の出力完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力し、
前記第１の情報処理装置は、前記第２の情報の出力完了通知を受信した場合、前記第１のプログラムの実行を開始し、
前記第２の情報処理装置は、前記第１の情報の出力完了通知を受信すると、前記第２のプログラムの実行を開始することを特徴とする付記１〜３のいずれか１項に記載の並列計算機システム。
［付記５］
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御方法であって、
前記第１の演算処理装置が、第１のプログラムの実行に関する第１の情報を第１の記憶装置に格納するステップと、
前記第１の演算処理装置が、前記第１の情報を出力する場合、ログ出力通知を出力するステップと、
前記第２の演算処理装置が、第２のプログラムの実行に関する第２の情報を第２の記憶装置に格納するステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置が、前記第２の情報を出力するステップと、
前記第３の演算処理装置が、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納するステップと、を有することを特徴とする並列計算機システムの制御方法。
［付記６］
前記並列計算機システムの制御方法において、
前記第１の演算処理装置が、前記第１の情報を出力するとともに、前記第１のプログラムの実行を停止するステップと
前記第１の演算処理装置が、前記第１の情報の出力の完了とともに、前記第１の情報の出力の完了通知を前記第２の情報処理装置に出力するステップと、
前記第２の演算処理装置が、前記第２の情報を出力するとともに、前記第２のプログラムの実行を停止するステップと、
前記第２の演算処理装置が、前記第２の情報の出力の完了とともに、前記第２の情報の出力の完了通知を前記第１の情報処理装置に出力するステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置による前記第１のプログラムの実行を開始するステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置による前記第２のプログラムの実行を開始するステップとを、有することを特徴とする付記５記載の並列計算機システムの制御方法。
［付記７］
前記第１の演算処理装置が、前記第１の領域に格納された前記第１の情報の容量を監視し、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力するとともに、前記ログ出力通知を出力するステップを有することを特徴とする付記５又は５に記載の方法。
［付記８］
前記第１の情報処理装置が、前記第１のプログラムの実行においてエラーが発生した場合、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、前記ログ出力通知を前記第２の情報処理装置に出力するステップと、
前記第３の演算処理装置が、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納するステップと、を有することを特徴とする付記５〜７のいずれかに記載の方法。
［付記９］
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御プログラムであって、
前記第１の演算処理装置に、前記第１の記憶装置の第１の領域に格納された第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納させるステップと、
前記第１の演算処理装置に、前記第１の情報を出力する場合、ログ出力通知を出力させるステップと、
前記第２の演算処理装置に、前記第２の記憶装置の第３の領域に格納された第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納させるステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置に、前記第２の情報を出力させるステップと、
前記第３の演算処理装置に、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする並列計算機システムの制御プログラム。
［付記１０］
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の領域に格納された前記第１の情報の容量を監視させ、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力させるとともに、前記ログ出力通知を出力させるステップステップ、を実行させることを特徴とする付記７記載の並列計算機システムの制御プログラム。
［付記１１］
前記並列計算機システムの制御プログラムにおいて、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の情報処理装置に、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、前記ログ出力通知を前記第２の情報処理装置に出力させるステップと、
前記第３の演算処理装置に、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする付記７又は８記載の並列計算機の制御プログラム。
［付記１２］
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の情報を出力させるとともに、前記第１のプログラムの実行を停止させるステップと、
前記第１の演算処理装置に、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力させるステップと、
前記第２の演算処理装置に、前記第２の情報を出力させるとともに、前記第２のプログラムの実行を停止させるステップと、
前記第２の演算処理装置に、前記第２の情報の出力の完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力させるステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置に、前記第１のプログラムの実行を開始させるステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置に、前記第２のプログラムの実行を開始させるステップとを、有することを特徴とする付記７〜９のいずれか１項記載の並列計算機の制御プログラム。
【符号の説明】
【００７９】
１０    プロセッサコア
１２    命令制御部
１４    命令実行部
１６    Ｌ１キャッシュコントローラ
１８    Ｌ１キャッシュＲＡＭ
２０    プロセッサコア
５０    Ｌ２キャッシュコントローラ
５１    バスインタフェース
６０    Ｌ２キャッシュＲＡＭ
７０    メモリアクセス制御部
１００    情報処理装置
１００ａ、１００ｂ〜１００ｎ    計算ノード
１００ｃ    ＩＯノード
１１０    演算処理装置
１２０    主記憶装置
１３０    通信制御部
１３１    メモリ
１３２    ＣＰＵ
１３４    コマンドキュー
１３６    送受信バッファメモリ
１４０    入出力制御部
１５０    外部記憶装置
１６０    ドライブ装置
１８０    ネットワーク
２１０、２１０ａ、２１０ｂ    ログ記憶領域
２２０、２２０ａ、２２０ｂ    プログラム保存領域
２３０、２３０ａ、２３０ｂ    ログ記録ポインタ
１０００    並列計算機システム
【図１】
2011159165.tif 000003
【図２】
2011159165.tif 000004
【図３】
2011159165.tif 000005
【図４】
2011159165.tif 000006
【図５】
2011159165.tif 000007
【図６】
2011159165.tif 000008
【図７】
2011159165.tif 000009
【図８】
2011159165.tif 000010
【図９】
2011159165.tif 000011
【図１０】
2011159165.tif 000012
【図１１】
2011159165.tif 000013
【手続補正書】
【提出日】平成23年3月23日(2011.3.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、並列計算機システムの制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
近年、構造解析や気象予測等の大規模な計算処理を実行するために、複数の情報処理装置を有するスーパーコンピュータ等の並列計算機システムが開発されている。並列計算機システムは、互いにネットワーク接続された複数の情報処理装置が並列に計算を実行することで、一定時間内に莫大な演算処理を実行することができる。
【０００３】
並列計算機システムでは、計算処理は分割されて、各情報処理装置に割り当てられる。各情報処理装置は、割り当てられた処理を、他の情報処理装置と同期をとりながら、並列して実行する。そして、各情報処理装置の計算処理の結果は、他の情報処理装置の計算処理に利用される。
【０００４】
情報処理装置の多くは、演算結果をハードディスク（ＨＤＤ：Hard Disk Drive）に格納して、計算結果を永続的に記憶する必要がない。そのため、並列計算機システムは、ハードディスク費用の削減及びハードディスク管理の削減のため、ハードディスクを有さないディスクレス情報処理装置を含む。
【０００５】
並列計算機システムは、ハードディスクを備えるディスク付き情報処理装置も含む。ディスク付き情報処理装置は、並列計算機システムの計算処理結果をハードディスクに格納するとともに、ディスクレス情報処理装置が実行するプログラムを格納する。ディスク付き情報処理装置は、「イメージファイル」をディスクレス情報処理装置に送信する処理を行う。なお、「イメージファイル」は、ファイルシステムの内容と構造を含むファイルをいう。ディスクレス情報処理装置は、ディスク付き情報処理装置から受信したイメージファイルを、自己が有する主記憶装置としてのメモリに格納し、イメージファイルに含まれるプログラムを実行することで、割り当てられた計算処理を実行する。
【０００６】
ディスクレス情報処理装置は、計算処理に関連する情報をメモリに格納する場合がある。このような関連情報として、データログがある。データログは、各ディスクレス情報処理装置の計算時間等が記録されたデータであり、例えば、並列計算機システムの使用時間や課金の算出に使用される。一般に、ディスクレス情報処理装置のメモリの記憶容量はハードディスクの記憶容量と比較して少ない。そのため、ディスクレス情報処理装置は、メモリ上に一定量のデータログを格納すると、メモリに格納されたデータログを、ディスク付き情報処理装置に送信して、メモリからデータログを開放する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−２０１１９０号公報
【特許文献２】特開平８−７７０４３号公報
【特許文献３】特開平９−２３７２０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ディスクレス情報処理装置から、ディスク付き情報処理装置にデータログを送信する処理によって、ディスクレス情報処理装置に割り当てられた計算処理が遅延する。また、各ディスクレス情報処理装置は、互いに同期をとりながら演算処理を実行するために、あるディスクレス情報処理装置の計算処理の遅延が、他のディスクレス情報処理装置の計算処理を遅延させる場合がある。そして、異なるタイミングで計算処理の遅延が生じると、遅延時間が累積されることで、並列計算機システムの処理時間全体を遅延させることになる。近年、大規模な並列計算機システムは、数万台の情報処理装置を有するものもあるため、１台の情報処理装置において短時間の遅延時間であっても、大規模な並列計算機システムにとって大きな遅延時間となることがある。
【０００９】
開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムは、計算処理時間の遅延を少なくすることを目的とする。
【課題を解決するための手段】
【００１０】
開示の情報処理装置は、第１のプログラムを第１の領域に格納する第１の記憶装置と、第１のプログラムの実行に関する第１の情報を第１の記憶装置の第２の領域に格納するとともに、第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、第２のプログラムを第３の領域に格納する第２の記憶装置と、第２のプログラムの実行に関する第２の情報を第２の記憶装置の第４の領域に格納するとともに、第１の演算処理装置からのログ出力通知を受信した場合、第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、第３の記憶装置と、第１の情報処理装置から出力された第１の情報及び第２の情報処理装置から出力された第２の情報を第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置と、を有する。
【発明の効果】
【００１１】
開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムは、計算処理時間の遅延を少なくすることができる。
【図面の簡単な説明】
【００１２】
【図１】並列計算機システムの構成の一例を示す図である。
【図２】情報処理装置のハードウェア構成の一例を示す図である。
【図３】プロセッサコアの構成の一例を示す図である。
【図４】通信制御部の一例を示す図である。
【図５】計算ノードの主記憶装置の記憶領域の一例を示す図である。
【図６】複数の計算ノードによる計算処理及び通信処理の一例を示す図である。
【図７】複数の計算ノードにより実行されるログ出力処理の一例を示すタイムチャートである。
【図８】複数の計算ノードにより実行されるログ出力処理の一例を示すタイムチャートである。
【図９】データログ出力後に行われる計算ノード間の同期処理の一例を示す図である。
【図１０】ログサイズ容量によるデータログ出力処理フローの一例を示す図である。
【図１１】エラー検出によるデータログ出力処理フローの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、開示の並列計算機システム、並列計算機システムの制御方法及び制御プログラムの一実施形態を説明する。
【００１４】
＜並列計算機システムの構成＞
図１は、並列計算機システムの構成の一例を示す図である。並列計算機システム１０００は、複数の計算ノード及びＩＯノード（Input Output node：入出力ノード）を有する。１００ａ、１００ｂは、計算処理を行う計算ノードの例である。１００ｃは、ＩＯノードの例である。計算ノード１００ａ、１００ｂは、外部記憶装置を有さない情報処理装置であり、ＩＯノード１００ｃは、ハードディスク等の外部記憶装置を有し、入出力処理を行う情報処理装置である。情報処理装置のハードウェア構成の一例は、図２を用いて後述する。複数の計算ノードは互いに通信経路としてのネットワーク１８０を介して接続する。
【００１５】
なお、ＩＯノードの数は、所定数の計算ノード毎に配置される。そのため、計算ノードからＩＯノードに対してデータの書込処理が集中した場合でも、計算ノードに書込待ちの遅延を生じさせない。
【００１６】
なお、並列計算機システム１０００の計算ノード及びＩＯノードの数は、図面に示される数に限定されず、数十〜数十万のノード数であってもよい。
【００１７】
＜情報処理装置のハードウェア構成＞
図２は、並列計算機システムに含まれる情報処理装置のハードウェア構成の一例を示す図である。図２に示す情報処理装置１００は、演算処理装置１１０、主記憶装置１２０、通信制御部１３０、入出力制御部１４０、外部記憶装置１５０、及びドライブ装置１６０を有する。
【００１８】
なお、情報処理装置１００が、上記構成要素のうち外部記憶装置１５０もドライブ装置１６０も含まない場合、そのような情報処理装置は、図１に示す「計算ノード」に相当する。情報処理装置１００が、外部記憶装置１５０又はドライブ装置１６０若しくはそれら両方を含む場合、そのような情報処理装置は、図１に示す「ＩＯノード」に相当する。
【００１９】
［主記憶装置］
主記憶装置１２０は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されるメインメモリ。なお、主記憶装置１２０は、プログラム、データ、及びデータログ等を格納する。主記憶装置１２０に格納されるプログラムは、例えば、基本ソフトとしてのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、後述する計算処理機能をコーディングした計算処理用のプログラム、後述するデータログ出力機能をコーディングしたデータログ出力用のプログラムがある。なお、以下の記載におけるプログラムは、特に名称を特定しない場合は、ＯＳ、計算処理用のプログラム、データログ出力用のプログラムの少なくとも１つを意味する。
【００２０】
データログは、タイムスタンプ、計算ノードが実行しているプログラム名称、プロセッサコア（後述）の使用率、プロセッサコアがプログラムを実行することによって生じたイベント等が記録されたデータである。データログは、例えば、並列計算機システム１０００の使用時間の算出に使用される。データログを主記憶装置１２０に格納する機能は、演算処理装置１１０が計算処理用のプログラムを実行することにより、実現される。
【００２１】
［外部記憶装置］
外部記憶装置１５０は、磁気ディスクを有するディスクアレイ、又はフラッシュメモリを用いたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。外部記憶装置１５０は、主記憶装置１２０に格納されるプログラム及びデータを記憶することができる。上記したように外部記憶装置１５０は、計算ノードではなく、ＩＯノードが備える装置である。外部記憶装置１５０に記憶されたプログラム及びデータは、イメージファイルとしてＩＯノードから計算ノードに送信される。
【００２２】
［ドライブ装置］
ドライブ装置１６０は、例えば、フロッピー（登録商標）ディスクやＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などの記憶媒体１７０を読み書きする装置である。ドライブ装置１６０は、記憶媒体１７０を回転させるモータや記憶媒体１７０上でデータを読み書きするヘッド等を含む。なお、記憶媒体１７０は、上記した主記憶装置１２０に格納されるプログラムを、記憶することができる。ドライブ装置１６０は、ドライブ装置１６０にセットされた記憶媒体１７０からプログラムを読み出す。演算処理装置１１０は、ドライブ装置１６０により読み出されたプログラムを、主記憶装置１２０及び／又は外部記憶装置１５０に格納する。
【００２３】
［演算処理装置］
図２に示す演算処理装置１１０は、演算を行うプロセッサコア１０〜４０、Ｌ２（Ｌｅｖｅｌ２）キャッシュメモリ（２次キャッシュメモリ）本体の制御を行うＬ２キャッシュコントローラ５０、Ｌ２キャッシュメモリ本体であるＬ２キャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６０、及びメモリアクセス制御部７０を有する。演算処理装置１１０は、入出力制御部１４０を介して、通信制御部１３０、外部記憶装置１５０、ドライブ装置１６０に接続される。Ｌ２キャッシュコントローラ５０及びＬ２キャッシュＲＡＭ６０を含み、Ｌ２キャッシュメモリと称される。
【００２４】
演算処理装置１１０は、主記憶装置１２０に記憶されたプログラムを実行することで、主記憶装置１２０にアクセスし、アクセスされたデータを演算する装置である。そして、演算処理装置１１０は、演算結果のデータを、主記憶装置１２０に格納する。演算処理装置１１０は、例えば、演算処理装置としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。演算処理装置１１０は、プログラムを実行することで、後述する計算処理機能並びにログ出力処理機能を実現する。
【００２５】
［演算処理装置：プロセッサコア］
図３は、プロセッサコアの構成の一例を示す図である。プロセッサコアは、演算処理装置１１０の演算処理機能を実現する装置である。プロセッサコア１０は、命令制御部（ＩＵ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｕｎｉｔ）１２、命令実行部（ＥＵ：Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ）１４、Ｌ１（Ｌｅｖｅｌ１）キャッシュ（１次キャッシュ）コントローラ１６、Ｌ１キャッシュＲＡＭ１８を有する。なお、図３では、プロセッサコア１０について説明するが、プロセッサコア１０と同じ機能を、図２に示す他のプロセッサコア２０〜４０も有する。なお、図２に示されるプロセッサコアの個数は、４個であるが、この個数に制限されることなく、情報処理装置１００は、４個以上または４個未満のプロセッサコアを有してもよい。
【００２６】
命令制御部１２は、Ｌ１キャッシュＲＡＭ１８から読み出した命令をデコードする。そして、命令制御部１２は、命令実行に使用されるオペランドを格納するソースレジスタ及び当該命令実行の結果を格納するディスティネーションレジスタを特定するレジスタアドレスを、「演算制御信号」として命令実行部１４に供給する。デコードする命令は、例えば、Ｌ１キャッシュＲＡＭ１８へのロード命令、ストア命令を含むメモリアクセス命令等である。命令制御部１２は、データ要求信号をＬ１キャッシュコントローラ１６に供給することで、Ｌ１キャッシュＲＡＭ１８から命令を読み出す。
【００２７】
命令実行部１４は、ロード命令又はストア命令を含むメモリアクセス命令等をデコードしたデコード結果を、「データ要求信号」としてＬ１キャッシュコントローラ１６に供給する。Ｌ１キャッシュコントローラ１６は、ロード命令に従って、データを命令実行部１４の内部にある、レジスタアドレスで特定されるレジスタに供給する。命令実行部１４は、命令実行部１４の内部にある、レジスタアドレスで特定されるレジスタからデータを取り出し、デコードした命令に従って演算を実行する。命令実行部１４は、命令の実行を終了すると、演算完了信号を命令制御部１２に供給して、次の演算制御信号を受け取る。
【００２８】
プロセッサコア１０のＬ１キャッシュコントローラ１６は、キャッシュデータ要求信号ＣＲＱを、Ｌ２キャッシュコントローラ５０に供給する。そして、プロセッサコア１０は、完了通知であるキャッシュデータ応答信号ＣＲＳ、及び、データ又は命令を、Ｌ２キャッシュコントローラ５０から受け取る。Ｌ１キャッシュコントローラ１６は、命令制御部１２及び命令実行部１４と独立して動作することができる。そのため、命令制御部１２及び命令実行部１４が所定の処理を実行中に、Ｌ１キャッシュコントローラ１６は、Ｌ２キャッシュコントローラ５０のデータ又は命令のアクセスを、命令制御部１２及び命令実行部１４と独立して行うことができる。
【００２９】
［演算処理装置：Ｌ２キャッシュメモリ］
図２に示すＬ２キャッシュコントローラ５０は、Ｌ１キャッシュＲＡＭ１８及び主記憶装置１２０へのデータの読み出し（ロード）要求又は書き込み（ストア）要求を行い、又は、Ｌ２キャッシュＲＡＭ６０へのデータのロード又はストアを行う。Ｌ２キャッシュコントローラ５０は、例えば、ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ  Ｅｘｃｌｕｓｉｖｅ  Ｓｈａｒｅｄ  Ｉｎｖａｌｉｄ）プロトコルに従って、Ｌ１キャッシュメモリ又は主記憶装置１２０に記憶されたデータと、Ｌ２キャッシュメモリに保持されたデータとの整合性を維持するように、データのロード又はストアを行う。例えば、ＭＥＳＩプロトコルでは、データは、「Ｍ（Modified：変更）」、「Ｅ（Exclusive：排他）」、「Ｓ（Share：共有）」、「Ｉ（Invalidate無効）」の４つの状態情報とともに、Ｌ１キャッシュメモリ等に格納される。
【００３０】
［演算処理装置：バスインタフェース］
バスインタフェース５１は、入出力制御部１４０に演算処理装置１１０とのインタフェースを提供する回路である。通信制御部１３０が、後述するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を実行する場合は、通信制御部１３０は、バスインタフェース５１並びにメモリアクセス制御部７０を介して主記憶装置１２０からデータを取得又は出力する。
【００３１】
［演算処理装置：メモリアクセス制御部］
メモリアクセス制御部７０は、主記憶装置１２０からのデータのロード、主記憶装置１２０へのデータのストア、及び主記憶装置１２０のリフレッシュなどの動作を制御する回路である。メモリアクセス制御部７０は、Ｌ２キャッシュコントローラ５０から受け取ったロード命令又はストア命令に従って、主記憶装置１２０に対して、ロード又はストアを行う。
【００３２】
［入出力制御部］
入出力制御部１４０は、演算処理装置１１０が接続されるフロントサイドバス（ＦＳＢ：Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）（「フロントサイドバス」の代わりに「ＣＰＵローカルバス」でも可である）と、通信制御部１３０、外部記憶装置１５０、及びドライブ装置１６０が接続されるＩＯバス（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  ｂｕｓ：入出力バス）とを繋ぐバスブリッジ回路である。入出力制御部１４０は、例えば、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス又はＰＣＩ  Ｅｘｐｒｅｓｓ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスなどの規格に従って機能するブリッジ回路である。
【００３３】
［通信制御部］
通信制御部１３０は、通信経路としてのネットワーク１８０と接続し、データを送受信する装置であり、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）である。通信制御部１３０は、ＤＭＡ方式によるデータ転送、又は、ＰＩＯ（Ｐｒｏｇｒａｍｍｅｄ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）方式によるデータ転送などを行う。
【００３４】
［通信制御部：ＤＭＡ方式のデータ転送］
図４は、通信制御部の一例を示す図である。通信制御部１３０は、メモリ１３１、ＣＰＵ１３２、コマンドキュー１３４、及び送受信バッファメモリ１３６を有する。通信制御部１３０がＤＭＡ方式で動作する場合、通信制御部１３０は、プロセッサコア１０とは独立して、主記憶装置１２０に直接データを送信又は、主記憶装置１２０からデータを取得する。コマンドキュー１３４は、プロセッサコア１０から転送されたコマンドを保持する。コマンドには、データ転送の転送先メモリのメモリアドレス、転送元メモリのメモリアドレスが特定される。
【００３５】
ＣＰＵ１３２は、メモリ１３１に格納された通信プログラムを実行して、所定のプロトコルに従う通信処理機能を実現する。ＣＰＵ１３２は通信処理機能を実現することで、コマンドキュー１３４に保持されるコマンドを読み取り、転送元の主記憶装置のメモリアドレスから転送先の主記憶装置のメモリアドレスにデータを転送する処理を行う。例えば、ＣＰＵ１３２は、コマンドに含まれるメモリアドレスで特定される主記憶装置１２０のメモリ上の位置からデータを取得し、他の計算ノード又はＩＯノードに取得したデータを転送する。または、ＣＰＵ１３２は、送受信バッファメモリ１３６に保持されるデータを取得して、コマンドに含まれるメモリアドレスで特定される主記憶装置１２０のメモリ上の位置にデータを格納する。送受信バッファメモリ１３６は、他の計算ノードから送信されたデータを保持し、又は、通信制御部１３０が送信するデータを保持する。
【００３６】
ＤＭＡ方式のデータ伝送を行う場合、プロセッサコア１０は、コマンドキュー１３４にコマンドを転送する処理と、データ転送の完了を受信するとき生じる割り込み処理を行う。また、通信制御部１３０が、主記憶装置１２０にメモリアクセスしている時、主記憶装置１２０にメモリアクセスを行おうとするプロセッサコア１０との間で競合が発生する。そのため、計算ノードが主記憶装置１２０からデータを他の計算ノードやＩＯノードに送信する場合、プロセッサコア１０が実行する計算処理に割り込みを生じ、又は、プロセッサコア１０が実行する主記憶装置１２０へのアクセス処理に遅延を生じさせる。そのため、通信制御部１３０によるＤＭＡ方式のデータ転送処理は、プロセッサコア１０の計算処理を遅延させる。
【００３７】
［通信制御部：ＰＩＯ方式のデータ転送］
ＰＩＯ方式のデータ転送では、ＣＰＵ１３２は、送受信バッファメモリにデータが格納されると、プロセッサコア１０にデータが受信された旨を通知する。プロセッサコア１０は、データが受信された旨の通知を受け取ると、計算処理を中止して、送受信バッファメモリ１３６に保持される受信データを主記憶装置１２０に転送する処理を実行する。また、主記憶装置１２０からのデータ送信では、プロセッサコア１０は主記憶装置１２０のメモリアドレスを指定して、データを読み出し、送受信バッファメモリ１３６にデータを格納する。このように、ＰＩＯ方式のデータ転送は、ＤＭＡ方式の処理よりもプロセッサコア１０の行う処理が多いため、ＤＭＡ方式よりも長い時間の計算処理の遅延を生じる。
【００３８】
＜計算ノードの機能構成＞
［計算ノードの記憶領域］
図５は、計算ノードの主記憶装置１２０の記憶領域の一例を示す図である。図５に示す記憶領域の一例では、主記憶装置１２０は、ログ記憶領域２１０と、プログラム保存領域２２０とに分けられる。ログ記憶領域２１０には、データログが記憶される。プログラム保存領域２２０には、プログラム及びデータが記憶される。ログ記録ポインタ２３０には、ログ記憶領域２１０に格納されたログの先頭アドレスが格納される。なお、先頭アドレスとは、タイムスタンプが最も新しいログが記録されたアドレスであり、例えば、メモリ空間に降順又は昇順でログが連続的に記憶された場合、メモリ空間の末端のメモリアドレスである。
【００３９】
［計算ノードの計算処理］
図６は、複数の計算ノードによる計算処理及び通信処理の一例を示す図である。図６に示す計算ノード１００ａ、１００ｂは、図１を用いて説明した計算ノードに相当する。ＩＯノード１００ｃは、図１を用いて説明したＩＯノードに相当する。図６に示す計算ノード１００ａ、１００ｂの主記憶装置１２０ａ、１２０ｂは、それぞれ図５に示した主記憶装置の記憶領域を有する。
【００４０】
計算ノード１００ａ、１００ｂのプロセッサコアは、主記憶装置１２０ａ、１２０ｂ内に格納されるプログラムを実行することで、計算ノード１００ａ、１００ｂに割り当てられる計算処理を実行する。計算ノード１００ｂに割り当てられる計算処理は、他の計算ノード１００ａで実行される計算処理の終了に同期して開始するように制御される。そのように、同期をとるメッセージ通信として、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いても良い。ＭＰＩでは、例えば、各ノードで実行される処理の開始又は処理の終了を、他のノードで実行される処理の開始又は終了と同期付けるためのメッセージが規定される。なお、このような複数の計算ノードでそれぞれ実行されている計算処理を同期させるメッセージ通信は、ＭＰＩの関数に含まれるバリア同期関数である、ＭＰＩ＿Ｂａｒｒｉｅｒによって行うことができる。
【００４１】
図６に示される例では、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃ１の受信に同期して、計算処理を開始するように制御される。
【００４２】
［計算ノードのログ出力処理］
計算ノード１００ａ、１００ｂのプロセッサコアは、主記憶装置１２０ａ、１２０ｂ内に格納されるプログラムを実行することで、当該プログラムの実行に関するログ出力処理を実行する。Ｄ１は、計算ノード１００ａからＩＯノード１００ｃに送信されるデータログである。Ｎ１は、計算ノード１００ａから計算ノード１００ｂに送信されるログ出力通知である。
【００４３】
［ログサイズ容量による計算ノードのログ出力処理］
計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａ内に格納されるプログラムの実行に伴う計算結果Ｃ１を、プログラム保存領域２２０ａに格納し、プログラムの実行に関するデータログを、ログ記録領域２１０ａに格納する。計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａ内に格納されるプログラムを実行して、ログ記録領域２１０ａに格納されたデータログの容量を監視する。この監視処理は、例えば、計算ノード１００ａのプロセッサコアは、ログ記録ポインタ２３０ａに格納されるメモリアドレスを監視して、ログ記録ポインタ２３０ａのメモリアドレスが所定のメモリアドレスと一致した場合に、データログの容量が所定容量に達したと判断してもよい。データログの容量が所定容量を超えた場合、計算ノード１００ａは、通信制御部を用いてデータログＤ１をＩＯノード１００ｃに出力する。
【００４４】
データログＤ１を出力した計算ノード１００ａは、データログ出力とともに、ログ出力通知Ｎ１をネットワークに接続された他の計算ノード１００ｂに送信する。
【００４５】
計算ノード１００ｂも、プログラム保存領域２２０ｂ内に格納されるプログラムの実行に伴う計算結果Ｃ２を、プログラム保存領域２２０ｂに格納し、プログラムの実行に関するデータログを、ログ記録領域２１０ｂに格納する。そして、計算ノード１００ｂは、計算ノード１００ａからのログ出力通知Ｎ１を受信した場合、プログラムの実行を停止するとともに、データログＤ２をＩＯノード１００ｃに対して出力する。
【００４６】
このように、複数の計算ノードのうち一の計算ノード１００ａでデータログの出力が生じると、他の計算ノード１００ｂもデータログの出力を行うように動作する。そのため、並列計算機システム１０００内部の計算ノードは、いずれかの計算ノードでデータログの出力が生じると、他の計算ノードも同じタイミングでデータログを出力する。
【００４７】
［エラー検出による計算ノードのデータログ出力処理］
計算ノード１００ａのプロセッサコアは、プログラム保存領域２２０ａに格納されたプログラムの実行においてエラーが発生した場合、主記憶装置１２０ａの内容とともに、データログＤ１を、通信制御部１３０を介してＩＯノードに出力してもよい。これは、いわゆる「メモリダンプ」と呼ばれる処理であり、計算ノードのシステム障害の原因解析のため、障害が発生したときの主記憶装置１２０ａ上のデータをディスクに保存する処理である。計算ノード１００ａは、外部記憶装置を有さないため、主記憶装置１２０ａの内容を、ＩＯノード１００ｃに出力する。メモリダンプによるデータログＤ１出力とともに、計算ノード１００ａは、ログ出力通知Ｎ１を計算ノード１００ｂに出力する。
【００４８】
なお、メモリダンプは、ＯＳによる機能であるため、上記したようにデータログ出力機能用のプログラム実行の結果によるものではない。データログ出力機能用のプログラムは、メモリダンプが生じると、他の計算ノードにログ出力通知Ｎ１を送信する機能をプロセッサコアに実現させる。このように、メモリダンプによるデータログＤ１自体の出力はＯＳの実行によりなされるため、メモリダンプ時のデータログＤ１の出力プログラムを別途用意しなくてもよい。
【００４９】
計算ノード１００ｂのログ出力通知Ｎ１受信後の動作は、上記計算ノードによるデータログ出力処理と同じである。
【００５０】
図７及び図８は、複数の計算ノードにより実行されるデータログ出力を示すタイムチャートである。図７及び図８を用いて、図６のログ出力処理のタイムチャートを説明する。
【００５１】
［各計算ノードがランダムにデータログを出力するケース］
図７に示すタイムチャート３０１は、各計算ノード１００ａ、１００ｂ、．．．、１００ｎがランダムにデータログを出力するケースを示す。データログの出力３１１、３１３、３１ｎは、ログ記録領域に所定量のデータログが蓄積したケース、又は、異常発生によりメモリダンプが生じたケースによって生じる。
【００５２】
図４を用いて、通信制御部のデータ転送を説明したように、ＤＭＡ方式でもＰＩＯ方式でも、データ転送は、プロセッサコアの計算処理Ｐａ１、Ｐａ２、．．．、Ｐａｎに割り込み処理を生じる。そのため、ログ出力３１１、３１３、．．．、３１ｎによって、それぞれ遅延３３２、３３４、．．．、３３ｎが生じる。また、ログ出力３１１、３１３、．．．、３１ｎによって、それぞれデータログＤａ１、Ｄａ２、．．．、Ｄａｎの転送が生じる。
【００５３】
計算ノード１００ａは、計算処理Ｐａ１を終了すると、計算結果Ｃａ１を計算ノード１００ｂに送信する。Ｔ３１２に示されるように、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃａ１の受信に同期して、計算処理Ｐａ２を開始する。
【００５４】
計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノードの計算結果に同期して実行される後続処理に関係する任意の計算ノードである。Ｔ３２２に示されるように、計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノードによる計算処理の計算結果の受信により、計算処理Ｐａｎを開始する。
【００５５】
このように、複数の計算ノード１００ａ〜１００ｎは、データログ出力による遅延３３２、３３４、．．．、３３ｎがそれぞれ異なるタイミングで生じる場合、遅延３３２、３３４、．．．、３３ｎを加算した遅延時間が、並列計算機システム１０００の計算処理時間の遅延となる。
【００５６】
［計算ノードが他の計算ノードのデータログの出力に同期してデータログを出力するケース］
図７に示すタイムチャート３５１は、各計算ノード１００ｂ、．．．、１００ｎが、ある計算ノード１００ａのデータログ出力に同期してデータログを出力するケースを示す。データログの出力３６１は、ログ記録領域に所定量のデータログが蓄積したケース、又は、異常発生によりメモリダンプが生じたケースによって生じる。データログの出力３６３、３６４は、ログ出力通知３６７を各計算ノード１００ｂ、．．．、１００ｎが計算ノード１００ａから受信することによって生じる。
【００５７】
計算ノード１００ａは、データログの出力３６１とともに、ログ出力通知３６７を他の計算ノード１００ｂ〜１００ｎに通知する。他の計算ノード１００ｂ〜１００ｎが、ログ出力通知３６７を受け取ると、計算ノード１００ｂ〜１００ｎは、自ノードが有する主記憶装置からデータログを出力する。
【００５８】
計算ノード１００ａの通信制御部は、データログの転送Ｄｂ１を実行する。計算ノード１００ａは、計算処理Ｐｂ１を終了すると、計算結果Ｃｂ１を計算ノード１００ｂに送信する。
【００５９】
Ｔ３６２に示されるように、計算ノード１００ｂは、計算ノード１００ａによる計算処理の計算結果Ｃｂ１の受信に同期して、計算処理Ｐｂ２を開始する。計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノードの計算結果に同期して実行される後続処理に関係する任意の計算ノードである。Ｔ３７２に示されるように、計算ノード１００ｎは、計算ノード１００ｎの１つ先に計算処理を実行する計算ノードによる計算処理の計算結果の受信に同期して、計算処理Ｐｂｎを開始する。
【００６０】
図４を用いて説明したように、ＤＭＡ方式でもＰＩＯ方式でも、データ転送は、プロセッサコアの計算処理Ｐａ１（図７の３０１参照）、Ｐｂ１（図７の３５１参照）に割り込み処理を生じる。そのため、ログ出力３１１によって、遅延３３２が、ログ出力３６１によって、遅延３６２がそれぞれ生じる。同様に、ログ出力３６３、３６４によって、遅延３６５、遅延３６６がそれぞれ生じる。タイムチャート３５１に示すように、ログ出力３６３、３６４により生じる遅延３６５、遅延３６６は、遅延３６２に隠蔽される。
【００６１】
３８０は、タイムチャート３０１の並列計算機システム１０００の計算処理時間と、タイムチャート３５１の並列計算機システム１０００の計算処理時間との差を示したものである。タイムチャート３５１の計算処理時間の方が、タイムチャート３０１の計算処理時間より短くなることがわかる。タイムチャート３５１に示すように、計算ノード１００ａで生じたログ出力３６１に同期して、他の計算ノードにもログ出力をさせることで、データログ出力による遅延３６２、３６５、３６６は、互いに重畳する。言い換えれば、タイムチャート３０１で説明したように遅延が累積されず、各計算ノードの遅延が隠蔽されて、並列計算機システム１０００の計算処理時間の遅延時間を短縮できる。
【００６２】
図８に示すタイムチャート３７１は、タイムチャート３５１と同様に、各計算ノード１００ｂ〜１００ｎが、ある計算ノード１００ａのデータログ出力に同期してデータログを出力するケースを示す。ただし、タイムチャート３７１に示される処理は、計算ノードがデータログを出力した後、他の計算ノードと同期して、計算ノードに割り当てられた計算処理を開始する同期処理３７２をする点において、タイムチャート３５１に示される処理と異なる。
【００６３】
各計算ノードは、データログ出力前は、例えば、ＭＰＩに従うメッセージを送受信しながら、各計算ノードが並列して進めている処理の同期をとっている。データログ出力は、並列して実行される計算処理に対する割り込みで処理される。タイムチャート３０１、３５１に示すデータログ出力処理は、データログの量が各計算ノードで異なる等の理由により、計算処理に対する遅延は、計算ノード毎に異なる。タイムチャート３０１に示す遅延は、各計算ノード別個に起こるが、タイムチャート３５１に示す遅延は、ログ出力３６１をトリガとして、他の計算ノードもデータログ出力するので、複数の計算ノード間の同期を一度に行うことができる。そこで、タイムチャート３７１では、同期処理３７２により各計算ノードが同期後に計算処理の開始を行うことで、データログ出力による遅延が並列して進めている計算処理に影響を与えないようにする。
【００６４】
図９は、データログ出力後に行われる計算ノード間の同期処理の一例を示す図である。計算ノードは、データログ出力用プログラムを実行することにより計算ノード間の同期処理を実現する。データログ出力後の計算ノード間の同期処理の手法の一例としてバタフライバリア同期を用いる。バタフライバリア同期は、各計算ノードの計算処理に同期のための同期バリアを設けておき、全ての計算ノードによる計算処理がこの同期バリアに到達したときに、各プロセッサが同期バリアを超えて次の計算処理に進むことを許す方式である。図９に示す例は、８個の計算ノード１００ａ〜１００ｈが実行するバタフライバリア同期である。図９では、各計算ノードが交換するメッセージを点線の矢印で示した。
【００６５】
図９に示される計算ノード１００ａ〜１００ｈは、まず、隣同士の計算ノード間でメッセージを送信することで、第１のバリア同期処理１９１を実行する。次に、計算ノード１００ａ〜１００ｈは、メッセージの交換が終了した隣の計算ノードの組の対応する計算ノードとメッセージを交換し、第２のバリア同期処理１９２を実行する。さらに、計算ノード１００ａ〜１００ｈは、メッセージの交換が終了した隣の計算ノードの組の対応する計算ノードとメッセージを交換し、第３のバリア同期処理１９３を実行する。このように、各計算ノードがlog2８＝３個のメッセージを受け取ったときに、全ての計算ノードがバリアに到達したと判断し、各計算ノードは、各々に割り当てられた計算処理を再開する。
【００６６】
バリア同期では、例えば、通信制御部１３０の送受信バッファメモリ１３６に設けられたデータ領域と、他の計算ノードのデータ領域であるとの同期が行われる。例えば、計算ノードが８つの場合、各計算ノードは、他の計算ノードから送られる３つのメッセージをそれぞれ受け取る３つのデータ領域をそれぞれ用意する。そして、各計算ノードは、３つのデータ領域が全てメッセージで埋められたとき、全ての計算ノードがバリアに到達したと判断する。なお、バリア同期に要するメッセージの数は、２を底とし、計算ノード数を真数とした数である。そのため、計算ノード数が８０，０００であっても、１７のメッセージ数で全計算ノードのバリア同期を確認できる。このように、バタフライバリア同期方式は、膨大な数のノード数を有する大規模な並列計算機システムであっても、少ないメッセージ数で全ノードの同期処理を行うことができる。
【００６７】
図１０は、ログサイズ容量によるデータログ出力処理フローの一例を示す図である。図１０に示すデータログ出力処理フローにおいて、後述するステップＳ６０１〜Ｓ６０３は、計算ノードが計算処理用のプログラムを実行することにより実現される。その他の計算ノードによる処理は、計算ノードがデータログ出力用プログラムを実行することにより実現される。
【００６８】
［計算ノード１００ａの処理フロー］
計算ノード１００ａは、プログラムを実行して、計算処理を開始する（Ｓ６０１）。計算ノード１００ａは、ログ記録ポインタ２３０ａに、ログ記録領域２１０ａの先頭メモリアドレスを書き込む（Ｓ６０２）。計算ノード１００ａは、計算処理の実行に関するデータログをログ記録領域２１０ａに格納して、ログ記録ポインタ２３０ａに、データログを保存した位置のメモリアドレスを書き込む（Ｓ６０３）。計算ノード１００ａは、ログ記録領域に格納されたログサイズが設定値を超えるか否か判断する（Ｓ６０４）。言い換えれば、計算ノード１００ａは、ログ記録ポインタ２３０ａに格納されるメモリアドレスを監視し、メモリアドレスが所定メモリアドレスを超えたか否か判断する。なお、図１０のＳ６０４の例は「設定値を超える／設定値以下」の組み合わせで判断しているが、「設定値以上／設定値未満」の判断でも良い。
【００６９】
ログサイズが設定値を超えない場合（Ｓ６０４  Ｎｏ）、計算ノード１００ａは、Ｓ６０２に戻り、計算処理を実行し続ける。一方、ログサイズが設定値を超える場合（Ｓ６０４  Ｙｅｓ）、計算ノード１００ａは、他の計算ノードにログ出力通知を送信する（Ｓ６０５）。そして、計算ノード１００ａは、計算処理を停止し（Ｓ６０６）、ログ記録領域２１０ａに格納されたログをＩＯノード１００ｃに出力する（Ｓ６０７）。計算ノード１００ａは、ログ出力が終了すると、図８及び図９で説明したように、他の計算ノードとバリア同期を行った後で（Ｓ６０８）、Ｓ６０１に戻って計算処理を再開する。
【００７０】
［計算ノード１００ｂの処理フロー］
計算ノード１００ｂは、プログラムを実行して、計算処理を開始する（Ｓ６１１）。計算ノード１００ｂは、ログ記録ポインタ２３０ｂに、ログ記録領域２１０ｂの先頭メモリアドレスを書き込む（Ｓ６１２）。計算ノード１００ｂは、計算処理の実行に関するデータログをログ記録領域２１０ｂに格納して、ログ記録ポインタ２３０ｂに、データログを保存した位置のメモリアドレスを書き込む（Ｓ６１３）。計算ノード１００ｂは、計算ノード１００ａからログ出力通知を受信したかを判断する（Ｓ６１４）。ログ出力通知を受信しない場合（Ｓ６１４  Ｎｏ）、計算ノード１００ｂは、ログ出力通知の受信を待つ。ログ出力通知を受信した場合（Ｓ６１４  Ｙｅｓ）、計算ノード１００ｂは、計算処理を停止して（Ｓ６１５）、ログ記録領域２１０ｂに格納されたログをＩＯノード１００ｃに出力する（Ｓ６１６）。計算ノード１００ｂは、ログ出力が終了すると、図８及び図９で説明したように、他の計算ノードとバリア同期を行った後で（Ｓ６１７）、Ｓ６１１に戻って計算処理を開始する。
【００７１】
［ＩＯノード１００ｃの処理フロー］
ＩＯノード１００ｃは、計算ノード１００ａ又は計算ノード１００ｂからログを受信すると（Ｓ６３１）、受信したデータログを外部記憶装置１５０に保存する（Ｓ６３２）。
【００７２】
図１１は、エラー検出によるデータログ出力処理フローの他の実施例を示す図である。図１１に示すデータログ出力処理フローは、計算ノード１００ａの処理フローが図１０に示すデータログ出力処理フローと異なる。図１１に示す計算ノード１００ｂとＩＯノード１００ｃの処理フローは、図１０に示す計算ノード１００ｂとＩＯノード１００ｃの処理フローと同じである。そのため、以下に、計算ノード１００ａの処理フローを説明する。
【００７３】
なお、図１１に示すデータログ出力処理フローにおいて、ステップＳ６０１〜Ｓ６０３は、計算ノードが計算処理用のプログラムを実行することにより、実現される。その他の計算ノードによる処理は、計算ノードがデータログ出力用プログラムを実行することにより実現される。
【００７４】
図１０と同様に、計算ノード１００ａは、計算処理を開始して、ログを主記憶装置に保存する（Ｓ６０１〜Ｓ６０３）。計算ノード１００ａは、自ノードでエラーが発生したか否かを判断する（Ｓ６４１）。エラーが発生していない場合（Ｓ６４１  Ｎｏ）、計算ノード１００ａは、Ｓ６０２に戻り、計算処理を実行し続ける。エラーが発生した場合（Ｓ６４１  Ｙｅｓ）、計算ノード１００ａは、他の計算ノードにログ出力通知を送信する（Ｓ６０５）。
【００７５】
ログ出力通知後、計算ノード１００ａは、計算処理を停止する（Ｓ６４２）。計算ノード１００ａは、ＯＳに含まれるダンプカーネルを起動して（Ｓ６４３）、主記憶装置１２０ａに格納されたデータをダンプファイルとしてＩＯノード１００ｃに送信する（Ｓ６４４）。計算ノード１００ａは、ダンプファイルを送信後、プログラムを停止して（Ｓ６４５）、データログ出力フローを終了する。
【００７６】
なお、Ｓ６４５のように、エラーが生じた計算ノード１００ａのプログラム実行を停止するのは、エラーが生じた計算ノードにより誤った計算出力が生じるのを防ぐ等の理由のためである。並列計算機システム１０００は、数万ノードになる場合、１台のノードをエラーにより停止させても、他のノードに計算処理を割り振ることで、継続して計算処理を実行することが可能である。
【００７７】
図１０及び図１１では、ログ出力前（Ｓ６０７、Ｓ６１６）に、計算処理を停止させたが（Ｓ６０６、Ｓ６１５）、計算処理の停止は、図８に示した同期処理（Ｓ６０８、Ｓ６１７）を行うためである。そのため、図７のタイムチャート３５１に示すように同期処理を行わない場合は、計算処理停止（Ｓ６０６、Ｓ６１５）及び同期処理（Ｓ６０８、Ｓ６１７）は不要である。
【００７８】
以上の実施形態に関し、更に以下の付記を開示する。
［付記１］
第１のプログラムを第１の領域に格納する第１の記憶装置と、前記第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納するとともに、前記第１の情報を出力する場合、ログ出力通知を出力する第１の演算処理装置を有する第１の情報処理装置と、
第２のプログラムを第３の領域に格納する第２の記憶装置と、前記第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納するとともに、前記第１の演算処理装置からのログ出力通知を受信した場合、前記第２の情報を出力する第２の演算処理装置を有する第２の情報処理装置と、
第３の記憶装置と、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納する第３の演算処理装置を有する第３の情報処理装置と、を備えることを特徴とする並列計算機システム。
［付記２］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１の領域に格納された前記第１の情報の容量を監視し、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力するとともに、前記ログ出力通知を出力することを特徴とする付記１記載の並列計算機システム。
［付記３］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、ログ出力通知を前記第２の情報処理装置に出力し、
前記第３の演算処理装置は、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納することを特徴とする付記１又は２記載の並列計算機システム。
［付記４］
前記並列計算機システムにおいて、
前記第１の演算処理装置は、前記第１の情報を出力する場合、前記第１のプログラムの実行を停止し、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力し、
前記第２の情報処理装置は、前記第２の情報出力とともに、前記第２のプログラムの実行を停止し、前記第２の情報の出力完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力し、
前記第１の情報処理装置は、前記第２の情報の出力完了通知を受信した場合、前記第１のプログラムの実行を開始し、
前記第２の情報処理装置は、前記第１の情報の出力完了通知を受信すると、前記第２のプログラムの実行を開始することを特徴とする付記１〜３のいずれか１項に記載の並列計算機システム。
［付記５］
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御方法であって、
前記第１の演算処理装置が、第１のプログラムの実行に関する第１の情報を第１の記憶装置に格納するステップと、
前記第１の演算処理装置が、前記第１の情報を出力する場合、ログ出力通知を出力するステップと、
前記第２の演算処理装置が、第２のプログラムの実行に関する第２の情報を第２の記憶装置に格納するステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置が、前記第２の情報を出力するステップと、
前記第３の演算処理装置が、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納するステップと、を有することを特徴とする並列計算機システムの制御方法。
［付記６］
前記並列計算機システムの制御方法において、
前記第１の演算処理装置が、前記第１の情報を出力するとともに、前記第１のプログラムの実行を停止するステップと
前記第１の演算処理装置が、前記第１の情報の出力の完了とともに、前記第１の情報の出力の完了通知を前記第２の情報処理装置に出力するステップと、
前記第２の演算処理装置が、前記第２の情報を出力するとともに、前記第２のプログラムの実行を停止するステップと、
前記第２の演算処理装置が、前記第２の情報の出力の完了とともに、前記第２の情報の出力の完了通知を前記第１の情報処理装置に出力するステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置による前記第１のプログラムの実行を開始するステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置による前記第２のプログラムの実行を開始するステップとを、有することを特徴とする付記５記載の並列計算機システムの制御方法。
［付記７］
前記第１の演算処理装置が、前記第１の領域に格納された前記第１の情報の容量を監視し、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力するとともに、前記ログ出力通知を出力するステップを有することを特徴とする付記５又は５に記載の方法。
［付記８］
前記第１の情報処理装置が、前記第１のプログラムの実行においてエラーが発生した場合、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、前記ログ出力通知を前記第２の情報処理装置に出力するステップと、
前記第３の演算処理装置が、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納するステップと、を有することを特徴とする付記５〜７のいずれかに記載の方法。
［付記９］
第１の演算処理装置と第１の記憶装置を有する第１の情報処理装置と、第２の演算処理装置と第２の記憶装置を有する第２の情報処理装置と、第３の演算処理装置と第３の記憶装置を有する第３の情報処理装置とを備える並列計算機システムの制御プログラムであって、
前記第１の演算処理装置に、前記第１の記憶装置の第１の領域に格納された第１のプログラムの実行に関する第１の情報を前記第１の記憶装置の第２の領域に格納させるステップと、
前記第１の演算処理装置に、前記第１の情報を出力する場合、ログ出力通知を出力させるステップと、
前記第２の演算処理装置に、前記第２の記憶装置の第３の領域に格納された第２のプログラムの実行に関する第２の情報を前記第２の記憶装置の第４の領域に格納させるステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から前記ログ出力通知を受信した場合、前記第２の演算処理装置に、前記第２の情報を出力させるステップと、
前記第３の演算処理装置に、前記第１の情報処理装置から出力された第１の情報及び前記第２の情報処理装置から出力された第２の情報を前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする並列計算機システムの制御プログラム。
［付記１０］
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の領域に格納された前記第１の情報の容量を監視させ、前記第１の情報の容量が所定の大きさを超えた場合、前記第１の情報を出力させるとともに、前記ログ出力通知を出力させるステップステップ、を実行させることを特徴とする付記７記載の並列計算機システムの制御プログラム。
［付記１１］
前記並列計算機システムの制御プログラムにおいて、
前記第１のプログラムの実行においてエラーが発生した場合、前記第１の情報処理装置に、前記第１の記憶装置の第１及び第２の領域の内容を前記第３の情報処理装置に出力するとともに、前記ログ出力通知を前記第２の情報処理装置に出力させるステップと、
前記第３の演算処理装置に、前記第１及び第２の領域の内容を、前記第３の記憶装置に格納させるステップと、を実行させることを特徴とする付記７又は８記載の並列計算機の制御プログラム。
［付記１２］
前記並列計算機システムの制御プログラムにおいて、
前記第１の演算処理装置に、前記第１の情報を出力させるとともに、前記第１のプログラムの実行を停止させるステップと、
前記第１の演算処理装置に、前記第１の情報の出力の完了とともに、前記第１の情報の出力完了通知を前記第２の情報処理装置に出力させるステップと、
前記第２の演算処理装置に、前記第２の情報を出力させるとともに、前記第２のプログラムの実行を停止させるステップと、
前記第２の演算処理装置に、前記第２の情報の出力の完了とともに、前記第２の情報の出力完了通知を前記第１の情報処理装置に出力させるステップと、
前記第１の情報処理装置が、前記第２の情報の出力完了通知を受信した場合、前記第１の演算処理装置に、前記第１のプログラムの実行を開始させるステップと、
前記第２の情報処理装置が、前記第１の情報の出力完了通知を受信した場合、前記第２の演算処理装置に、前記第２のプログラムの実行を開始させるステップとを、有することを特徴とする付記７〜９のいずれか１項記載の並列計算機の制御プログラム。
【符号の説明】
【００７９】
１０    プロセッサコア
１２    命令制御部
１４    命令実行部
１６    Ｌ１キャッシュコントローラ
１８    Ｌ１キャッシュＲＡＭ
２０    プロセッサコア
５０    Ｌ２キャッシュコントローラ
５１    バスインタフェース
６０    Ｌ２キャッシュＲＡＭ
７０    メモリアクセス制御部
１００    情報処理装置
１００ａ、１００ｂ〜１００ｎ    計算ノード
１００ｃ    ＩＯノード
１１０    演算処理装置
１２０    主記憶装置
１３０    通信制御部
１３１    メモリ
１３２    ＣＰＵ
１３４    コマンドキュー
１３６    送受信バッファメモリ
１４０    入出力制御部
１５０    外部記憶装置
１６０    ドライブ装置
１８０    ネットワーク
２１０、２１０ａ、２１０ｂ    ログ記憶領域
２２０、２２０ａ、２２０ｂ    プログラム保存領域
２３０、２３０ａ、２３０ｂ    ログ記録ポインタ
１０００    並列計算機システム
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2011159165.tif 000014
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2011159165.tif 000015
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2011159165.tif 000016
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2011159165.tif 000017