(57)【要約】【課題】障害が発生した計算ノードを検知し、復旧のための操作を自動的に行うことが可能な解析システムを提供する。【解決手段】複数の入出力ポートを備えたＳＳＤ３００と、ＳＳＤ３００の各入出力ポートに個別に接続した計算サーバ１００と、監視サーバ２００とを備える。計算サーバ１００は、解析処理の計算を並列分散処理にて実行する複数の計算ノード１２０と、計算ノード１２０を管理する管理ノード１１０とを備える。計算ノード１２０は、解析処理の途中経過である計算結果のファイルをＳＳＤ３００に出力する。監視サーバ２００は、ＳＳＤ３００にアクセスして計算ノード１２０による計算結果のファイルの出力を検知し、ファイルを出力しない計算ノード１２０がある場合に、これを障害が発生した計算ノード１２０と判断し、管理ノード１１０に障害が発生した計算ノード１２０を復旧させて解析処理を再開するように指示する。【選択図】図１
2010231295.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２個の入出力ポートを備え、半導体メモリを記憶媒体とする記憶装置と、
前記記憶装置の１つの前記入出力ポートに接続し、解析処理における計算を行う計算サーバと、
前記記憶装置の他の１つの前記入出力ポートに接続し、前記計算サーバを監視する監視サーバとを備え、
前記計算サーバは、
前記解析処理の計算を並列分散処理にて実行する複数の計算ノードと、
複数の前記計算ノードを管理する管理ノードとを備え、
前記計算ノードは、当該解析処理の途中経過である計算結果のファイルを前記記憶装置に出力し、
前記監視サーバは、前記記憶装置にアクセスして前記計算ノードによる前記計算結果のファイルの出力を検知し、当該ファイルを出力しない計算ノードがある場合に、当該計算ノードを障害が発生した計算ノードと判断し、前記管理ノードに対し、当該障害が発生した計算ノードを復旧させて前記解析処理を再開するように指示することを特徴とする、解析システム。
【請求項２】
前記監視サーバは、前記管理ノードに計算ノードの復旧および解析処理の再開を指示するための指示ファイルを前記記憶装置に出力し、
前記管理ノードは、前記記憶装置にアクセスして前記監視サーバによる前記指示ファイルの出力を検知した場合に、前記障害が発生した計算ノードを復旧し前記解析処理を再開するための操作を行うことを特徴とする、請求項１に記載の解析システム。
【請求項３】
前記監視サーバは、前記障害が発生したと判断した計算ノードの識別情報を前記指示ファイルに記載し、
前記管理ノードは、少なくとも、前記指示ファイルに記載された識別情報により特定される計算ノードを再起動させることを特徴とする、請求項２に記載の解析システム。
【請求項４】
前記管理ノードは、前記障害が発生した計算ノードを復旧する操作を行った後、解析処理を実行可能な計算ノードの数が障害発生前に解析処理を実行していた計算ノードの数よりも少ない場合に、前記計算結果のファイルに記載された計算結果を当該解析処理を実行可能な計算ノードの数に応じて再分割したデータを、当該解析処理を実行可能な各計算ノードに割り当てて、解析処理を実行させることを特徴とする、請求項１乃至請求項３に記載の解析システム。
【請求項５】
前記管理ノードは、前記障害が発生した計算ノードを復旧する操作を行った後、解析処理を実行可能な計算ノードの数が障害発生前に解析処理を実行していた計算ノードの数よりも少ない場合に、当該解析処理を実行可能な計算ノードの数を前記監視サーバに報知し、
前記監視サーバは、前記計算結果のファイルに記載された計算結果を結合し、前記解析処理を実行可能な計算ノードの数に応じて再分割し、再分割した当該計算結果のファイルを前記記憶装置に出力することを特徴とする、請求項１乃至請求項３に記載の解析システム。
【請求項６】
前記管理ノードは、前記解析処理を実行可能な計算ノードの数を記載した再構成依頼ファイルを前記記憶装置に出力し、
前記監視サーバは、前記記憶装置にアクセスして前記管理ノードによる前記再構成依頼ファイルの出力を検知した場合に、当該再構成依頼ファイルに記載された前記解析処理を実行可能な計算ノードの数に基づいて、前記計算結果のファイルを結合し再分割する処理を行うことを特徴とする、請求項５に記載の解析システム。
【請求項７】
少なくとも２個の入出力ポートを備え、半導体メモリを記憶媒体とする記憶装置と、
前記記憶装置の１つの前記入出力ポートに接続し、解析処理における計算を行う計算サーバと、
前記記憶装置の他の１つの前記入出力ポートに接続し、前記計算サーバを監視する監視サーバとを備え、
前記計算サーバは、
前記解析処理の計算を並列分散処理にて実行する複数の計算ノードと、
複数の前記計算ノードを管理する管理ノードとを備え、
前記計算ノードは、当該解析処理の途中経過である計算結果のファイルを前記記憶装置に出力し、
前記監視サーバは、
前記解析処理の計算を並列分散処理にて実行する複数の副ノードと、
前記計算サーバを監視すると共に、複数の前記副ノードを管理する主ノードとを備え、
前記監視サーバの前記主ノードは、前記記憶装置にアクセスして前記計算ノードによる前記計算結果のファイルの出力を検知し、当該ファイルを出力しない計算ノードがある場合に、前記解析処理における残りの計算を前記副ノードに割り当てて実行させることを特徴とする、解析システム。
【請求項８】
前記管理ノードは、前記解析処理を実行可能な計算ノードの数を記載した再構成依頼ファイルを前記記憶装置に出力し、
前記主ノードは、前記計算結果のファイルの数よりも前記副ノードの数の方が少ない場合に、当該副ノードの数に基づいて、前記計算結果のファイルを結合し再分割する処理を行うことを特徴とする、請求項７に記載の解析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算を行う解析システムに関する。
【背景技術】
【０００２】
大規模解析等の膨大な計算を行う場合に、解析を複数のコンピュータで分散処理する並列計算が行われている。この種の並列計算は、例えば、複数のコンピュータをネットワークで接続したクラスタ上で、ＭＰＩ（Message-Passing Interface）等の並列ライブラリを用いた解析プログラムを実行することで実現される。
【０００３】
特許文献１に記載された従来技術は、仮想記憶方式のマルチプロセッサのシステムにおいて、主記憶から追い出したページデータを外部記憶装置に書き出し、いずれのプロセッサで追い出したデータを必要とした場合でも、外部記憶から読込むものである。
【０００４】
この種の並列計算を実行するシステムでは、計算ノード（コンピュータ）の１台に障害が発生するとシステム全体の計算が中断する。そのため、予め定められた適当なステップ毎に、各計算ノードが処理中の変数の値を再開用ファイルとして出力し、外部記憶装置に保存することが行われる。そして、システムが障害から復旧した後、外部記憶装置に保存された各計算ノードの再開用ファイルが、該当する各計算ノードによって読み込まれ、計算が再開される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平３−２２３９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、復旧のための操作を自動的に行うことが可能な解析システムを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、少なくとも２個の入出力ポートを備え、半導体メモリを記憶媒体とする記憶装置と、前記記憶装置の１つの前記入出力ポートに接続し、解析処理における計算を行う計算サーバと、前記記憶装置の他の１つの前記入出力ポートに接続し、前記計算サーバを監視する監視サーバとを備え、前記計算サーバは、前記解析処理の計算を並列分散処理にて実行する複数の計算ノードと、複数の前記計算ノードを管理する管理ノードとを備え、前記計算ノードは、当該解析処理の途中経過である計算結果のファイルを前記記憶装置に出力し、前記監視サーバは、前記記憶装置にアクセスして前記計算ノードによる前記計算結果のファイルの出力を検知し、当該ファイルを出力しない計算ノードがある場合に、当該計算ノードを障害が発生した計算ノードと判断し、前記管理ノードに対し、当該障害が発生した計算ノードを復旧させて前記解析処理を再開するように指示することを特徴とする、解析システムである。
請求項２に記載の発明は、前記監視サーバは、前記管理ノードに計算ノードの復旧および解析処理の再開を指示するための指示ファイルを前記記憶装置に出力し、前記管理ノードは、前記記憶装置にアクセスして前記監視サーバによる前記指示ファイルの出力を検知した場合に、前記障害が発生した計算ノードを復旧し前記解析処理を再開するための操作を行うことを特徴とする、請求項１に記載の解析システムである。
請求項３に記載の発明は、前記監視サーバは、前記障害が発生したと判断した計算ノードの識別情報を前記指示ファイルに記載し、前記管理ノードは、少なくとも、前記指示ファイルに記載された識別情報により特定される計算ノードを再起動させることを特徴とする、請求項２に記載の解析システムである。
請求項４に記載の発明は、前記管理ノードは、前記障害が発生した計算ノードを復旧する操作を行った後、解析処理を実行可能な計算ノードの数が障害発生前に解析処理を実行していた計算ノードの数よりも少ない場合に、前記計算結果のファイルに記載された計算結果を当該解析処理を実行可能な計算ノードの数に応じて再分割したデータを、当該解析処理を実行可能な各計算ノードに割り当てて、解析処理を実行させることを特徴とする、請求項１乃至請求項３に記載の解析システムである。
請求項５に記載の発明は、前記管理ノードは、前記障害が発生した計算ノードを復旧する操作を行った後、解析処理を実行可能な計算ノードの数が障害発生前に解析処理を実行していた計算ノードの数よりも少ない場合に、当該解析処理を実行可能な計算ノードの数を前記監視サーバに報知し、前記監視サーバは、前記計算結果のファイルに記載された計算結果を結合し、前記解析処理を実行可能な計算ノードの数に応じて再分割し、再分割した当該計算結果のファイルを前記記憶装置に出力することを特徴とする、請求項１乃至請求項３に記載の解析システムである。
請求項６に記載の発明は、前記管理ノードは、前記解析処理を実行可能な計算ノードの数を記載した再構成依頼ファイルを前記記憶装置に出力し、前記監視サーバは、前記記憶装置にアクセスして前記管理ノードによる前記再構成依頼ファイルの出力を検知した場合に、当該再構成依頼ファイルに記載された前記解析処理を実行可能な計算ノードの数に基づいて、前記計算結果のファイルを結合し再分割する処理を行うことを特徴とする、請求項５に記載の解析システムである。
請求項７に記載の発明は、少なくとも２個の入出力ポートを備え、半導体メモリを記憶媒体とする記憶装置と、前記記憶装置の１つの前記入出力ポートに接続し、解析処理における計算を行う計算サーバと、前記記憶装置の他の１つの前記入出力ポートに接続し、前記計算サーバを監視する監視サーバとを備え、前記計算サーバは、前記解析処理の計算を並列分散処理にて実行する複数の計算ノードと、複数の前記計算ノードを管理する管理ノードとを備え、前記計算ノードは、当該解析処理の途中経過である計算結果のファイルを前記記憶装置に出力し、前記監視サーバは、前記解析処理の計算を並列分散処理にて実行する複数の副ノードと、前記計算サーバを監視すると共に、複数の前記副ノードを管理する主ノードとを備え、前記監視サーバの前記主ノードは、前記記憶装置にアクセスして前記計算ノードによる前記計算結果のファイルの出力を検知し、当該ファイルを出力しない計算ノードがある場合に、前記解析処理における残りの計算を前記副ノードに割り当てて実行させることを特徴とする、解析システムである。
請求項８に記載の発明は、前記管理ノードは、前記解析処理を実行可能な計算ノードの数を記載した再構成依頼ファイルを前記記憶装置に出力し、前記主ノードは、前記計算結果のファイルの数よりも前記副ノードの数の方が少ない場合に、当該副ノードの数に基づいて、前記計算結果のファイルを結合し再分割する処理を行うことを特徴とする、請求項７に記載の解析システムである。
【発明の効果】
【０００８】
以上のように構成された本発明によれば、次のような効果を奏する。
請求項１の発明によれば、復旧のための操作を自動的に行うことができる。
請求項２の発明によれば、データ転送のための同期を取ることなく、高速に、監視サーバから計算サーバの管理ノードへ、復旧および解析処理の再開のための指示を行うことができる。
請求項３の発明によれば、障害が発生した計算ノードを復旧させることができる。
請求項４、５の発明によれば、障害の発生した計算ノードが復旧しない場合であっても、解析処理を続行することができる。
請求項６の発明によれば、データ転送のための同期を取ることなく、高速に、管理ノードから監視サーバへ、再開用ファイルの再構成を依頼することができる。
請求項７の発明によれば、計算サーバに障害が発生した場合でも、監視サーバにおいて解析処理を続行することができる。
請求項８の発明によれば、計算サーバの計算ノードの数と監視サーバの副ノードの数とが異なる場合にも、解析処理を続行することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態による並列計算システムの全体構成を示す図である。
【図２】本実施形態の計算サーバの管理ノードおよび計算ノード並びに監視サーバを実現するコンピュータのハードウェア構成例を示す図である。
【図３】本実施形態の管理ノードの機能構成を示す図である。
【図４】本実施形態の計算ノードの機能構成を示す図である。
【図５】本実施形態の監視サーバの機能構成を示す図である。
【図６】本実施形態のＳＳＤの構成を示す図である。
【図７】本実施形態における計算サーバの動作を示すフローチャートである。
【図８】本実施形態における監視サーバの動作を示すフローチャートである。
【図９】障害時モードでの管理ノードの動作を説明するフローチャートである。
【図１０】第２の実施形態の監視サーバの機能構成を示す図である。
【図１１】本実施形態における監視サーバの動作を示すフローチャートである。
【図１２】第２の実施形態において、障害時モードでの管理ノードの動作を説明するフローチャートである。
【図１３】第３の実施形態による並列計算システムの全体構成を示す図である。
【図１４】本実施形態の監視サーバの主ノードの機能構成を示す図である。
【図１５】本実施形態の監視サーバの副ノードの機能構成を示す図である。
【図１６−１】本実施形態の監視サーバの動作を示すフローチャートである。
【図１６−２】本実施形態の監視サーバの動作を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜第１の実施形態＞
図１は、第１の実施形態による並列計算システムの全体構成を示す図である。
図１に示す並列計算システムは、計算サーバ１００と、監視サーバ２００と、外部記憶装置であるＳＳＤ（Solid State Drive）３００とを備える。計算サーバ１００は、１台の管理ノード１１０と、複数台の計算ノード１２０とを備える。計算サーバ１００の各ノード（管理ノード１１０および計算ノード１２０）および監視サーバ２００は、パーソナルコンピュータやワークステーション等のコンピュータで実現される。また、計算サーバ１００の各ノードは、ネットワーク接続されており、いわゆるクラスタコンピューティングを実現する。
【００１１】
ＳＳＤ３００は、記憶媒体としてＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリ等の半導体メモリを用い、ＨＤＤ（ハードディスクドライブ）等と同様にコンピュータの外部記憶装置として使用される。ＳＳＤ３００は、半導体メモリを記憶媒体とするため、データの読み書きの際に、ＨＤＤのようにヘッドを移動させるための時間やディスクの回転数を高めるための時間を要しない。また、本実施形態のＳＳＤ３００は、少なくとも２つの入出力ポートを備える。これにより、計算サーバ１００と監視サーバ２００とは、図１に示すようにＳＳＤ３００を介して接続されている。
【００１２】
本実施形態では、計算サーバ１００による計算（解析処理）として、粒子の挙動解析を行う場合を例として説明する。具体的には、例えば電子写真方式による画像形成装置において画像形成に使用される画像形成材などのように、複数の粒子（トナーおよびキャリア粒子等）が混合された状態での粒子の振る舞いをシミュレーションして解析する場合に適用される。このような解析では、個別要素法や有限要素法が用いられる。なお、この粒子の挙動解析は、本実施形態が適用可能な処理の一例を示すに過ぎず、本実施形態は並列計算による分散処理が可能な種々の処理に適用できる。
【００１３】
図２は、計算サーバ１００の管理ノード１１０および計算ノード１２０並びに監視サーバ２００を実現するコンピュータのハードウェア構成例を示す図である。
図２に示すコンピュータ１０は、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、記憶手段である主記憶装置（メインメモリ）１０ｂおよび外部記憶装置１０ｃを備える。外部記憶装置１０ｃとしては、一般に磁気ディスク装置（ＨＤＤ：Hard Disk Drive）が用いられるが、管理ノード１１０および監視サーバ２００においてはＳＳＤ３００が用いられる。また、図２のコンピュータ１０は、ネットワークを介して外部装置に接続するためのネットワークＩ／Ｆ（インターフェイス）１０ｄと、ディスプレイ装置へ表示出力を行うための表示機構１０ｅと、音声出力を行うための音声機構１０ｆとを備える。さらに、キーボードやマウス等の入力デバイス１０ｇを備える。ＣＰＵ１０ａと他の構成要素との間には、図示しないチップセットやブリッジ回路が介在している。
【００１４】
図２において、各構成要素は、システムバスや入出力バス等の各種のバスを介して接続される。例えば、ＣＰＵ１０ａと主記憶装置１０ｂの間は、システムバスやメモリバスを介して接続される。また、ＣＰＵ１０ａと外部記憶装置１０ｃ、ネットワークＩ／Ｆ１０ｄ、表示機構１０ｅ、音声機構１０ｆ、入力デバイス１０ｇ等との間は、ＰＣＩ（Peripheral Components Interconnect）、ＰＣＩ  Ｅｘｐｒｅｓｓ、シリアルＡＴＡ（AT Attachment）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）等の入出力バスを介して接続される。
【００１５】
なお、図２は、並列計算システムを構成する計算サーバ１００の管理ノード１１０および計算ノード１２０並びに監視サーバ２００を実現するのに好適なコンピュータのハードウェア構成を例示するに過ぎず、図示の構成に限定されない。例えば、計算ノード１２０の補助記憶装置として、外部記憶装置１０ｃの他に、フレキシブルディスクや光学ディスクをメディアとするドライブを設けたり、ＵＳＢメモリを設けたりしても良い。ＵＳＢメモリは、ＵＳＢを介してブリッジ回路に接続されることとなる。また、音声機構１０ｆを独立した構成とせず、チップセットの機能として備えるようにしても良い。
【００１６】
＜計算サーバの管理ノードおよび計算ノードの機能＞
図３は、管理ノード１１０の機能構成を示す図である。
図３に示すように、管理ノード１１０は、解析対象のデータを各計算ノード１２０に割り当てるデータ割り当て部１１１と、各計算ノード１２０による計算結果を受け取って解析対象のデータを更新するデータ更新部１１２と、各計算ノード１２０による計算が完了した後に終了処理を行う終了処理部１１３と、解析処理に異常が発生した場合に処理を再開するための再開処理を行う再開処理部１１４とを備える。データ割り当て部１１１、データ更新部１１２、終了処理部１１３および再開処理部１１４は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００１７】
また、管理ノード１１０は、ＳＳＤ３００を外部記憶装置（補助記憶手段）として用いる。解析対象である粒子情報の元データは、ＳＳＤ３００に保持されているものとする。さらにＳＳＤ３００は、管理ノード１１０を介して計算ノード１２０からアクセスできるように設定（共有設定）されている。したがって、計算ノード１２０は、管理ノード１１０によるアクセス制御下で、管理ノード１１０に接続されているＳＳＤ３００にアクセスして直接データの読み書きを行う。
【００１８】
データ割り当て部１１１は、ＳＳＤ３００から解析対象である粒子情報のデータを読み込み、読み込んだデータを各計算ノード１２０に割り当て、割り当てたデータを各計算ノード１２０に送信する。計算ノード１２０に送られるデータには、粒子の位置や属性など計算ノード１２０による計算に必要なデータを含む。データの割り当ては、例えば粒子分割法や領域分割法などの既存の手法にて行う。また、データ割り当て部１１１は、各計算ノード１２０に対して、割り当てたデータと共に、このデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータを送信する。この他の粒子のデータは、各計算ノード１２０が粒子の挙動解析を行う上で必要なデータ（計算に必要なデータ）である。
【００１９】
データ更新部１１２は、各計算ノード１２０の計算結果を受信して解析結果としてまとめ、ＳＳＤ３００に保持されている粒子情報を更新する。ＳＳＤ３００における粒子情報の更新は、解析結果を追加書き込みすることによって行っても良いし、現在の粒子情報を解析結果で上書きすることによって行っても良い。計算ノード１２０による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。したがって、データ更新部１１２は、計算ノード１２０から各計算ステップの計算結果を受信するたびに粒子情報の更新を行うこととなる。
【００２０】
終了処理部１１３は、各計算ノード１２０による計算ステップが予め設定された回数に到達したならば、システムユーザに解析終了を通知する。また、最終的な解析結果（更新された情報）を出力しても良い。本実施形態では各計算ノード１２０の計算結果をデータ更新部１１２がまとめて解析結果としてＳＳＤ３００に書き込む。したがって、終了処理部１１３は、解析結果を出力する場合、ＳＳＤ３００に保持されている粒子情報のデータをそのまま出力すれば良い。
【００２１】
再開処理部１１４は、解析処理に異常が発生した場合に、監視サーバ２００からの指示にしたがって解析処理を再開するための処理を行う。具体的には、解析処理のジョブを停止させ、計算ノード１２０を再起動させる。このとき、障害の発生した計算ノード１２０のみを再起動させるようにしても良いし、全ての計算ノード１２０を再起動させるようにしても良い。そして、障害が解決した計算ノード１２０および障害の発生していない計算ノード１２０によって残りの処理を行うように、データ割り当て部１１１に粒子情報のデータを割り当てさせ、各計算ノード１２０に解析処理を再開させる。
【００２２】
図４は、計算ノード１２０の機能構成を示す図である。
図４に示すように、各計算ノード１２０は、それぞれ、管理ノード１１０から解析対象のデータを受け付ける受け付け部１２１と、計算処理を行う計算部１２２と、計算部１２２による計算結果を管理ノード１１０へ送信する送信部１２３と、再開用ファイルをＳＳＤ３００に出力する出力部１２４とを備える。受け付け部１２１、送信部１２３および出力部１２４は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行しネットワークＩ／Ｆ１０ｄを制御することで実現される。また、計算部１２２は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能である。このように、図４に示す計算ノード１２０の各機能ブロックは、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００２３】
受け付け部１２１は、管理ノード１１０から送信された自ノードの計算に必要なデータを受け付ける。ここで、自ノードの計算に必要なデータとは、管理ノード１１０により自ノードに割り当てられたデータおよびこのデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータである。例えば、自ノードに割り当てられた粒子に近接し、電磁力の影響が無視できない粒子や接触の可能性がある粒子などのデータである。
【００２４】
計算部１２２は、受け付け部１２１により読み込まれたデータに基づき、自ノードに割り当てられた粒子の挙動を解析する。具体的には、粒子の現在位置と属性、粒子に作用する力に基づいて、粒子の位置がどのように変化するかを計算する。粒子の属性としては、例えば大きさ、質量、速度、電荷、磁化などが挙げられる。
【００２５】
送信部１２３は、計算部１２２による計算結果を管理ノード１１０へ送信する。計算部１２２による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。したがって、送信部１２３は、計算部１２２による１回の計算ステップが実行されるたびに計算結果を管理ノード１１０へ送信することとなる。
【００２６】
出力部１２４は、管理ノード１１０に接続されているＳＳＤ３００にアクセスし、自ノード（計算ノード１２０）の再開用ファイルとして、計算部１２２による計算結果を書き込む。再開用ファイルの出力頻度は、特に限定しないが、本実施形態では、計算部１２２による１回の計算ステップが実行されるたびに出力するものとする。再開用ファイルのファイル名には、再開用ファイルを作成した計算ノード１２０の識別情報（ＩＤ）および何回目の計算ステップかを示す情報が含まれる。ＳＳＤ３００への計算結果（再開用ファイル）の書き込みは、新たな計算結果を新たな再開用ファイルとして追加書き込みすることによって行われる。この場合、ＳＳＤ３００の記憶容量を超えて書き込むことはできないので、全体のデータ量に応じて古い粒子情報ファイルから削除していく等の操作が必要になる場合もある。
【００２７】
＜監視サーバの機能＞
図５は、監視サーバ２００の機能構成を示す図である。
図５に示すように、監視サーバ２００は、計算サーバ１００による解析処理におけるジョブの実行状況を監視するジョブ監視部２０１と、計算サーバ１００による解析処理に異常が発生した場合に異常の原因となった計算ノード１２０（障害ノード）を特定する障害ノード特定部２０２と、解析処理の再開のための制御を行う再開制御部２０３とを備える。ジョブ監視部２０１、障害ノード特定部２０２および再開制御部２０３は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。また、監視サーバ２００は、ＳＳＤ３００を外部記憶装置（補助記憶手段）として用いる。
【００２８】
ジョブ監視部２０１は、計算サーバ１００の各計算ノード１２０によるジョブ（並列分散された個々の処理）の実行状況を監視する。上記のように、各計算ノード１２０による計算結果は、１回の計算ステップごとに、再開用ファイルとしてＳＳＤ３００に書き出される。また、上記のように、再開用ファイルのファイル名には、再開用ファイルを作成した計算ノード１２０の識別情報および何回目の計算ステップかを示す情報が含まれる。そこで、ジョブ監視部２０１は、ＳＳＤ３００にアクセスし、各計算ステップにおいて、各計算ノード１２０から再開用ファイルが出力されたか否かを監視する。
【００２９】
障害ノード特定部２０２は、ジョブ監視部２０１による監視結果に基づいて、計算サーバ１００による解析処理に異常が発生した場合に、障害ノードを特定する。ある計算ステップにおいて、いずれかの計算ノード１２０に障害が発生した場合には、その計算ノード１２０によるその計算ステップでの再開用ファイルがＳＳＤ３００に出力されない。したがって、障害ノード特定部２０２は、再開用ファイルが出力されなかった計算ノード１２０を障害ノードと特定する。
【００３０】
再開制御部２０３は、計算サーバ１００の管理ノード１１０を制御し、障害ノード（計算ノード１２０）を再起動させて解析処理を再開させる。再開制御部２０３から管理ノード１１０への指示は、ネットワーク等の通信回線を介した通信によらず、ＳＳＤ３００を介したファイルの交換によって行われる。再開制御部２０３（監視サーバ２００）から管理ノード１１０への指示の伝達手段の詳細については後述する。
【００３１】
＜ＳＳＤの機能およびファイル交換による情報伝達＞
図６は、ＳＳＤ３００の構成を示す図である。
図６に示すように、ＳＳＤ３００は、記憶部３０１と、制御部３０２と、複数の入出力ポート３０３、３０４とを備える。記憶部３０１は、半導体メモリの記憶媒体である。制御部３０２は、記憶部３０１へのデータの読み書きを制御する。例えば、入出力ポート３０３、３０４のそれぞれから同一のアドレスへの書き込み要求があった場合、一方のアクセスのみを許可する等のアクセス制御が行われる。図６に示す例では、ＳＳＤ３００は２個の入出力ポート３０３、３０４を備えており、入出力ポート３０３は計算サーバ１００に接続され、入出力ポート３０４は監視サーバ２００に接続されている。以上の構成により、ＳＳＤ３００は、計算サーバ１００および監視サーバ２００の外部記憶装置として各々からアクセスされる。
【００３２】
本実施形態では、解析処理に異常が発生した場合の動作として（動作の詳細な手順は後述）、監視サーバ２００から計算サーバ１００の管理ノード１１０へ、計算ノード１２０の再起動の指示と解析処理の再開の指示が行われる。また、管理ノード１１０から監視サーバ２００へ、計算ノード１２０の再起動が完了したことが報知される。これらの監視サーバ２００と管理ノード１１０との間のやりとりは、全てＳＳＤ３００を介したファイルの交換によって行われる。
【００３３】
すなわち、監視サーバ２００は、ＳＳＤ３００へ再起動指示ファイルや再開指示ファイルを書き込む。そして、管理ノード１１０は、ＳＳＤ３００にアクセスしてこれらのファイルが出力されたことを検知したことを条件として、計算ノード１２０を再起動し、解析処理を再開する。また、管理ノード１１０は、計算ノード１２０の再起動が完了した後、ＳＳＤ３００へ再起動完了ファイルを書き込む。そして、監視サーバ２００は、ＳＳＤ３００にアクセスしてこのファイルが出力されたことを検知することによって、計算ノード１２０の再起動が完了したことを認識する。
【００３４】
管理ノード１１０と監視サーバ２００との間で交換されるこれらのファイルは、指示が行われたことや計算ノード１２０の再起動が完了したことを報知するためにのみ用いられる。すなわち、管理ノード１１０および監視サーバ２００は、自身の一連の処理動作（ルーチン）の中で、ＳＳＤ３００にこれらのファイルが書き込まれているか否かを確認し、書き込まれていれば、指示や報知がなされたものとして動作を行う。したがって、各ファイルは、ファイル名等によってその種類が識別できれば良く、ファイル形式や具体的なデータの内容は特に限定されない。なお、各ファイルに指示の内容であるコマンドや報知内容を記述し、管理ノード１１０や監視サーバ２００がファイルの内容を読み込んで、記述された指示や報知内容に応じた動作を行うようにしても良い。
【００３５】
本実施形態では、上記のように、管理ノード１１０と監視サーバ２００との間のやりとりを、ＳＳＤ３００へのファイルの書き込みおよび読み込みによって行っており、ネットワーク等の通信手段を用いていない。そのため、管理ノード１１０と監視サーバ２００との間で通信のための同期を取る必要がなく、各々の処理ルーチンの中で、非同期に指示等の伝達がなされる。
【００３６】
＜並列計算システムの動作＞
次に、上記のように構成された並列計算システムの動作について説明する。
図７は、個別要素法により粒子の挙動解析を行う場合を例として、計算サーバ１００の動作を説明するフローチャートである。
図７に示すように、計算サーバ１００は、まず管理ノード１１０が計算ノード１２０の数を取得し（ステップ７０１）、解析対象である粒子のデータをＳＳＤ３００から読み込む（ステップ７０２）。そして、データ割り当て部１１１が、この解析対象の粒子群を各計算ノード１２０に割り当て、割り当てた粒子のデータを各計算ノード１２０に送信する（ステップ７０３）。送信されたデータは、各計算ノード１２０の受け付け部１２１により受け付けられ、計算部１２２に渡される。
【００３７】
次に、管理ノード１１０は、監視ノード２００により、ＳＳＤ３００に再起動指示ファイルが書き込まれているか否かを判断する。再起動指示ファイルが書き込まれている場合は（ステップ７０４でＹｅｓ）、計算サーバ１００による解析処理に異常が発生したことを示すので、障害時モードへ移行する。障害時モードによる動作については、後述する。一方、再起動指示ファイルが書き込まれていない場合は（ステップ７０４でＮｏ）、解析処理を行う通常モードでの動作（ステップ７０５以降の動作）を継続する。
【００３８】
ステップ７０５〜７０８の動作は、各計算ノード１２０において個別に実行される動作である。
各計算ノード１２０では、計算部１２２が、まず各粒子について、磁気力（磁気的な相互作用力）、静電気力（静電気による相互作用力）、接触力（機械的な相互作用力）を計算する（ステップ７０５）。このとき、計算された磁気力、静電気力、接触力は、内部キャッシュ等に一時的に保持される。また、各計算ノード１２０がＳＳＤ等の高速な外部記憶装置を備える場合は、作業ファイルとして出力し、外部記憶装置に保持させても良い。次に計算部１２２は、内部キャッシュ等に保持されている磁気力、静電気力、接触力を読み込み、各作用力の和を求める（ステップ７０６）。そして、ステップ７０６で求まった作用力の和と粒子の位置情報および属性情報に基づいて運動方程式を解き、各粒子の位置情報（座標）を計算する（ステップ７０７）。計算部１２２の計算が終了すると、出力部１２４が今回の計算ステップにおける自ノードの計算結果を再開用ファイルとしてＳＳＤ３００に書き込む（ステップ７０８）。また、このとき、送信部１２３が管理ノード１１０に計算が終了したことを通知する。
【００３９】
管理ノード１１０のデータ更新部１１２は、全ての計算ノード１２０から計算終了の通知を受け付けると、次に各計算ノード１２０から計算結果を受信し、ステップ７０２でＳＳＤ３００から読み込んだデータを更新する(ステップ７０９、７１０)。そして、各計算ノード１２０による次の計算ステップに用いるために、更新したデータを各計算ノード１２０に送信する（ステップ７１１）。全ての計算ノード１２０に更新したデータを送信した後、データ更新部１１２は、各計算ノード１２０の計算結果をＳＳＤ３００に書き込む（ステップ７１２、７１３）。
【００４０】
以下、各計算ノード１２０の計算ステップが予め設定された回数に達するまでステップ７０４〜ステップ７１３の処理を繰り返す（ステップ７１４）。そして、計算ステップが設定数に到達したならば、終了処理部１１３が、ステップ７１３で出力された計算結果を解析結果として終了処理を行う（ステップ７１５）。終了処理としては、例えばシステムユーザに処理の終了を通知したり、ＳＳＤ３００に保持されている粒子情報ファイルを解析結果として出力したりする。
【００４１】
ここで、監視サーバ２００の動作について説明する。
図８は、監視サーバ２００の動作を示すフローチャートである。
図８に示すように、まず、監視サーバ２００のジョブ監視部２０１が、解析処理の計算ステップごとに計算サーバ１００の各計算ノード１２０によるＳＳＤ３００への再開用ファイルの出力を検知する。そして、ＳＳＤ３００に出力された再開用ファイルのファイル名を取得する（ステップ８０１）。上述したように、再開用ファイルのファイル名には、再開用ファイルを作成した計算ノード１２０の識別情報および何回目の計算ステップかを示す情報が含まれる。したがって、ジョブ監視部２０１は、再開用ファイルのファイル名を調べることによって、今回の計算ステップにおいて各計算ノード１２０から再開用ファイルが出力されたか否かを判断する。言い換えれば、再開用ファイルを出力しなかった計算ノード１２０が存在するか否かを判断する。再開用ファイルを出力しなかった計算ノード１２０は、障害が発生して今回の計算ステップにおける計算を完了できなかった計算ノード１２０である。
【００４２】
全ての計算ノード１２０から再開用ファイルが出力されたならば（ステップ８０２でＹｅｓ）、障害ノードは存在せず、計算サーバ１００による解析処理は正常に進んでいるので、ステップ８０１に戻り、ジョブ監視部２０１が、再開用ファイルがＳＳＤ３００に書き込まれるのを待つ。この場合、今回の計算ステップにおける再開用ファイルは全て出力されているので、次にＳＳＤ３００に書き込まれる再開用ファイルは、次の計算ステップにおける再開用ファイルである。
【００４３】
ここで、並列処理においては、各計算ノード１２０に対して、処理の負担ができるだけ均等になるように、データの割り当てが行われる。しかし、実際の計算においては、各計算ノード１２０の計算時間は完全に同一ではなく多少のばらつきがある。そこで、全ての計算ノード１２０から再開用ファイルが出力と予測される時間を、待ち時間として予め設定しておく。ジョブ監視部２０１は、いずれかの計算ノード１２０から再開用ファイルが出力されていない場合（ステップ８０２でＮｏ）、設定されている待ち時間を経過したか否かを判断する。そして、待ち時間を経過していなければ（ステップ８０３でＮｏ）、ステップ８０１に戻り、ジョブ監視部２０１が、再開用ファイルがＳＳＤ３００に書き込まれるのを待つ。
【００４４】
いずれかの計算ノード１２０から再開用ファイルが出力されておらず（ステップ８０２でＮｏ）、かつ設定されている待ち時間を経過した場合（ステップ８０３でＹｅｓ）、計算サーバ１００による解析処理に異常が発生したものとみなす。そこで、次に、障害ノード特定部２０２が、障害の発生した計算ノード１２０（障害ノード）を特定する（ステップ８０４）。上記のように、再開用ファイルのファイル名により、いずれの計算ノード１２０が再開用ファイルを出力したかが分かるので、障害ノード特定部２０２は、再開用ファイルを出力していない計算ノード１２０を障害ノードとして特定する。
【００４５】
次に、再開制御部２０３が、再起動指示ファイルをＳＳＤ３００に出力する（ステップ８０５）。システムの設定により、計算サーバ１００が再起動処理として障害ノードのみを再起動させる場合、例えば、再起動指示ファイルに障害ノード特定部２０２により特定された障害ノードの識別情報を記述して、障害ノードを管理ノード１１０に報知する。計算サーバ１００が再起動処理として全ての計算ノード１２０を再起動させる場合は、障害ノードの識別情報を報知しても良いし、報知しなくても良い。このステップ８０５の動作以降、管理ノード１１０は、図７のステップ７０４において、ＳＳＤ３００に再起動指示ファイルが書き込まれている（Ｙｅｓ）と判断する。
【００４６】
次に、再開制御部２０３は、ＳＳＤ３００に再起動完了ファイルが出力されるのを待つ（ステップ８０６）。詳しくは後述するが、計算サーバ１００において、計算ノード１２０の再起動処理が完了したならば、管理ノード１１０により再起動完了ファイルがＳＳＤ３００に書き込まれる。再起動完了ファイルが出力されたならば、再開制御部２０３は、再開指示ファイルをＳＳＤ３００に出力する（ステップ８０７）。
【００４７】
次に、計算サーバ１００における障害時モードでの動作（図７のステップ７０４でＹｅｓの場合）について説明する。
図９は、障害時モードでの管理ノード１１０の動作を説明するフローチャートである。
図９に示すように、管理ノード１１０の再開処理部１１４は、ＳＳＤ３００に再起動指示ファイルが出力されているのを検知すると（図７のステップ７０４でＹｅｓ）、解析処理における今回の計算ステップのジョブを停止する（ステップ９０１）。そして、計算ノード１２０を再起動させる（ステップ９０２）。このとき、システムの設定により、障害ノードのみを再起動させても良いし、全ての計算ノード１２０を再起動させても良い。前者の場合、例えば、再起動指示ファイルに記述された情報に基づいて障害ノードを特定する。
【００４８】
計算ノード１２０（障害ノードまたは全ての計算ノード１２０）の再起動が完了すると、次に再開処理部１１４は、再起動完了ファイルをＳＳＤ３００に出力する（ステップ９０３、９０４）。そして、監視サーバ２００により再開指示ファイルがＳＳＤ３００に出力されるのを待つ（ステップ９０５）。
【００４９】
再開指示ファイルがＳＳＤ３００に出力されたならば、次に再開処理部１１４は、解析処理のジョブを実行可能な計算ノード１２０の数（計算ノード数）と、当該ジョブの実行に必要な計算ノード１２０の数（必要ノード数）とを比較する。ここで、「計算ノード数」は、障害が発生していない計算ノード１２０と再起動により復旧した計算ノード１２０の合計である。また、「必要ノード数」は、障害が発生する前に解析処理のジョブを実行していた計算ノード１２０の数である。「必要ノード数」は、図７のステップ７０１で取得した計算ノード１２０の数と等しいので、この値を用いても良いし、障害が発生する前の再開用ファイルの数とも等しいので、この値を用いても良い。
【００５０】
計算ノード数が必要ノード数以上である場合（ステップ９０６でＹｅｓ）、再開処理部１１４からデータ割り当て部１１１に処理が移行し、ジョブを実行可能な計算ノード１２０に再開用ファイルのデータを割り当てる（ステップ９０７）。そして、ジョブを実行可能な各計算ノード１２０が、割り当てられた再開用ファイルをＳＳＤ３００から読み込んで（ステップ９０８）、ジョブを再開する（動作は、図７のステップ７０４に戻る）。
【００５１】
一方、計算ノード数が必要ノード数よりも少ない場合（ステップ９０６でＮｏ）、再開用ファイルを全て割り当ててジョブを実行することができない。そのため、再開処理部１１４は、ジョブを実行可能な計算ノード１２０の数が不足しているために解析処理を再開できないことをシステムユーザに通知して（ステップ９０９）、処理を終了する。
【００５２】
なお、図９において、ステップ９０６の判断で、計算ノード数が必要ノード数よりも多い場合があるように記載されている。最初の割り当て（図７のステップ７０３）で、計算サーバ１００の全ての計算ノード１２０にデータを割り当てた場合、計算ノード数の最大値は必要ノード数に等しい。しかし、計算サーバ１００の構成に冗長性を持たせ、解析処理のジョブを実行しない計算ノード１２０を確保しておいた場合、この余剰分の計算ノード１２０を参加させることによって、計算ノード数が必要ノード数よりも多くなる場合があり得る。
【００５３】
以上のように、本実施形態では、各計算ノード１２０が、管理ノード１１０との間で共有設定されたＳＳＤ３００に再開用ファイルを出力する。このため、再開用ファイルをＳＳＤ３００以外の、磁気ディスク等の外部記憶装置に保存したり、各計算ノード１２０の再開用ファイルをネットワーク通信にて管理ノード１１０に集めて保存したりする場合と比較して、再開用ファイルの出力作業に要する時間が大幅に短縮される。また、本実施形態では、ＳＳＤ３００へ出力される再開用ファイルを監視することによって、各計算ノード１２０に障害が発生していないかを判断する。これにより、いずれかの計算ノード１２０に障害が発生した場合にも、自動的に計算サーバ１００を復旧し、解析処理を再開させる制御が実現される。
【００５４】
＜第２の実施形態＞
上記の第１の実施形態では、障害時モードにおいて、計算ノード１２０を再起動させた後、解析処理のジョブを実行可能な計算ノード１２０の数（計算ノード数）が当該ジョブの実行に必要な計算ノード１２０の数（必要ノード数）よりも少ない場合は、解析処理を再開せずに終了した（図９のステップ９０６、９０９を参照）。これに対し、第２の実施形態は、計算ノード数が必要ノード数よりも少ない場合、再開用ファイルのデータを結合し、計算ノード数に応じて再構成する。そして、再構成された計算ノード数分のデータを、ジョブを実行可能な計算ノード１２０に割り当てて、解析処理を再開する。なお、以下の実施形態では、再開用ファイルの再構成を監視サーバが行うこととしているが、計算サーバ１００の管理ノード１１０が行っても良い。
【００５５】
第２の実施形態による並列計算システムは、図１に示した第１の実施形態による並列計算システムと同様に構成される。すなわち、計算サーバ１００と、監視サーバ２１０と、ＳＳＤ３００とを備える。計算サーバ１００は、１台の管理ノード１１０と、複数台の計算ノード１２０とを備える。計算サーバ１００の各ノード（管理ノード１１０および計算ノード１２０）および監視サーバ２１０は、例えば図２に示したコンピュータで実現される。また、計算サーバ１００の各ノードは、ネットワーク接続されており、いわゆるクラスタコンピューティングを実現する。これらの構成のうち、計算サーバ１００の管理ノード１１０および計算ノード１２０、ＳＳＤ３００の構成は、上記の第１の実施形態における管理ノード１１０、計算ノード１２０およびＳＳＤ３００と同様である。したがって、同一の符号を付して、説明を省略する。
【００５６】
＜監視サーバの機能＞
図１０は、監視サーバ２１０の機能構成を示す図である。
図１０に示すように、監視サーバ２１０は、計算サーバ１００による解析処理におけるジョブの実行状況を監視するジョブ監視部２０１と、計算サーバ１００による解析処理に異常が発生した場合に異常の原因となった計算ノード１２０（障害ノード）を特定する障害ノード特定部２０２と、解析処理の再開のための制御を行う再開制御部２０３と、再開用ファイルを計算ノード１２０の数に応じて再構成する再構成部２０４とを備える。また、監視サーバ２１０は、ＳＳＤ３００を外部記憶装置（補助記憶手段）として用いる。これらの構成のうち、ジョブ監視部２０１、障害ノード特定部２０２および再開制御部２０３は、図５に示した第１の実施形態における監視サーバ２１０の対応する各構成と同様である。したがって、同一の符号を付して説明を省略する。
【００５７】
再構成部２０４は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。この再構成部２０４は、再開用ファイルのデータを計算ノード１２０の数に合わせて再分割する再構成処理を依頼するための再構成依頼ファイルがＳＳＤ３００へ出力された場合に、再開用ファイルのデータの再構成処理を行う。
【００５８】
再構成依頼ファイルは、障害時モードにおいて、計算ノード１２０の再起動後、計算ノード数が必要ノード数よりも少ない場合に、管理ノード１１０の再開処理部１１４により作成されて、ＳＳＤ３００へ出力される。この再構成依頼ファイルには、再構成処理を行うために必要となる計算ノード数が記述される。
【００５９】
＜並列計算システムの動作＞
次に、上記のように構成された並列計算システムの動作について説明する。
計算サーバ１００における通常モードでの解析処理の動作は、図７を参照して説明した第１の実施形態における計算サーバ１００の動作と同様である。したがって、図７を参照することとし、詳細な説明を省略する。
【００６０】
図１１は、監視サーバ２１０の動作を示すフローチャートである。
図１１において、ステップ１１０１からステップ１１０７までの動作は、図８に示した第１の実施形態における監視サーバ２００のステップ８０１からステップ８０７までの動作と同様である。
【００６１】
監視サーバ２１０の再開制御部２０３が再開指示ファイルをＳＳＤ３００に出力した後（ステップ１１０７）、計算サーバ１００の管理ノード１１０により再構成依頼ファイルがＳＳＤ３００に出力されると、再構成部２０４は、この再構成依頼ファイルに記述された計算ノード数を取得する（ステップ１１０８、１１０９）。そして、ＳＳＤ３００に書き込まれている再開用ファイルのデータを合成し、ステップ１１０９で取得した計算ノード数に応じて再分割する（ステップ１１１０）。再構成部２０４により再構成（合成、再分割）される対象となる再開用ファイルは、例えば、全ての計算ノード１２０から出力された（すなわち、障害が発生していないときに出力された）再開用ファイルのうちで、最後に出力されたものである。これは、通常、障害が検知された計算ステップの１つ前の計算ステップで出力された再開用ファイルである。
【００６２】
図１２は、第２の実施形態において、障害時モードでの管理ノード１１０の動作（図７のステップ７０４でＹｅｓの場合）を説明するフローチャートである。
図１２において、ステップ１２０１からステップ１２０８までの動作は、図９に示した第１の実施形態における管理ノード１１０のステップ９０１からステップ９０８までの動作と同様である。
【００６３】
解析処理のジョブを実行可能な計算ノード１２０の数（計算ノード数）が当該ジョブの実行に必要な計算ノード１２０の数（必要ノード数）よりも少ない場合（ステップ１２０６でＮｏ）、再開処理部１１４は、計算ノードを記述した再構成依頼ファイルをＳＳＤ３００に出力する（ステップ１２０９）。そして、監視サーバ２００により再分割された再開用ファイルがＳＳＤ３００に出力されたならば、再開処理部１１４からデータ割り当て部１１１に処理が移行し、再構成処理後の新たな再開用ファイルのデータを、ジョブを実行可能な計算ノード１２０に割り当てる（ステップ１２１０、１２０７）。そして、ジョブを実行可能な各計算ノード１２０が、割り当てられた再開用ファイルをＳＳＤ３００から読み込んで（ステップ１２０８）、通常モードの動作に戻り（図７を参照）、ジョブを再開する（動作は、ステップ７０４に戻る）。
【００６４】
＜第３の実施形態＞
第１の実施形態および第２の実施形態では、解析処理に異常が発生した場合、監視サーバ２００が障害の発生した計算ノード１２０（障害ノード）を特定し、障害が発生していない計算ノード１２０および復旧した計算ノード１２０を用いて解析処理を継続した。これに対し、第３の実施形態は、監視サーバにも並列分散処理を実行可能な複数台の計算ノードを接続しておく。そして、解析処理に異常が発生した場合、計算サーバ１００から監視サーバに引き継いで、残りの解析処理を行う。
【００６５】
図１３は、第３の実施形態による並列計算システムの全体構成を示す図である。
図１３に示す並列計算システムは、計算サーバ１００と、監視サーバ４００と、外部記憶装置であるＳＳＤ３００とを備える。計算サーバ１００は、１台の管理ノード１１０と、複数台の計算ノード１２０とを備える。また、監視サーバ４００は、１台の主ノード４１０と、複数台の副ノード４２０とを備える。計算サーバ１００の各ノード（管理ノード１１０および計算ノード１２０）および監視サーバ４００の各ノード（主ノード４１０および副ノード４２０）は、例えば図２に示したコンピュータで実現される。また、計算サーバ１００の各ノードおよび監視サーバ４００の各ノードは、それぞれネットワーク接続されており、いわゆるクラスタコンピューティングを実現する。これらの構成のうち、計算サーバ１００の管理ノード１１０および計算ノード１２０、ＳＳＤ３００の構成は、上記の第１の実施形態における管理ノード１１０、計算ノード１２０およびＳＳＤ３００と同様である。したがって、同一の符号を付して、説明を省略する。ただし、本実施形態では、解析処理に異常が発生した場合、計算サーバ１００において解析処理を再開しないので、管理ノード１１０の再開処理部１１４の機能は使用されない。
【００６６】
＜監視サーバの主ノードおよび副ノードの機能＞
図１４は、主ノード４１０の機能構成を示す図である。
主ノード４１０は、計算サーバ１００による解析処理の実行状況を監視する機能と、副ノード４２０による並列分散処理を管理する機能とを兼ね備える。図１４に示すように、主ノード４１０は、計算サーバ１００による解析処理におけるジョブの実行状況を監視するジョブ監視部４１１と、計算サーバ１００による解析処理に異常が発生した場合に異常の原因となった計算ノード１２０（障害ノード）を特定する障害ノード特定部４１２と、解析処理の再開のための処理を行う再開処理部４１３とを備える。また、副ノード４２０による解析処理を管理するための機能として、解析対象のデータを各副ノード４２０に割り当てるデータ割り当て部４１４と、各副ノード４２０による計算結果を受け取って解析対象のデータを更新するデータ更新部４１５と、各計算ノード４２０による計算が完了した後に終了処理を行う終了処理部４１６とを備える。これらの機能ブロックは、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。また、主ノード４１０は、ＳＳＤ３００を外部記憶装置（補助記憶手段）として用いる。
【００６７】
ジョブ監視部４１１は、計算サーバ１００の各計算ノード１２０によるジョブ（並列分散された個々の処理）の実行状況を監視する。上記のように、各計算ノード１２０による計算結果は、１回の計算ステップごとに、再開用ファイルとしてＳＳＤ３００に書き出される。また、上記のように、再開用ファイルのファイル名には、再開用ファイルを作成した計算ノード１２０の識別情報および何回目の計算ステップかを示す情報が含まれる。そこで、ジョブ監視部４１１は、ＳＳＤ３００にアクセスし、各計算ステップにおいて、各計算ノード１２０から再開用ファイルが出力されたか否かを監視する。
【００６８】
障害ノード特定部４１２は、ジョブ監視部４１１による監視結果に基づいて、計算サーバ１００による解析処理に異常が発生した場合に、障害ノードを特定する。ある計算ステップにおいて、いずれかの計算ノード１２０に障害が発生した場合には、その計算ノード１２０によるその計算ステップでの再開用ファイルがＳＳＤ３００に出力されない。したがって、障害ノード特定部４１２は、再開用ファイルが出力されなかった計算ノード１２０を障害ノードと特定する。
【００６９】
再開処理部４１３は、解析処理に異常が発生した場合に、解析処理を計算サーバ１００から監視サーバ４００に引き継いで再開するための処理を行う。解析処理を監視サーバ４００の副ノード４２０により並列実行するために、必要な場合には、計算サーバ１００の計算ノード１２０により出力された再開用ファイルの再構成処理を行う。再開処理部４１３による処理の詳細は後述する。
【００７０】
データ割り当て部４１４は、ＳＳＤ３００から解析対象である粒子情報のデータを読み込み、読み込んだデータを各副ノード４２０に割り当て、割り当てたデータを各副ノード４２０に送信する。この副ノード４２０へのデータの割り当ておよび送信は、計算サーバ１００における計算ノード１２０へのデータの割り当ておよび送信と同様である。すなわち、副ノード４２０に送られるデータには、粒子の位置や属性など副ノード４２０による計算に必要なデータが含まれる。データの割り当ては、例えば粒子分割法や領域分割法などの既存の手法にて行う。
【００７１】
データ更新部４１５は、各副ノード４２０の計算結果を受信して解析結果としてまとめ、ＳＳＤ３００に保持されている粒子情報を更新する。データ更新部４１５によるＳＳＤ３００に保持されているデータの更新方式は、計算サーバ１００の管理ノード１１０におけるデータ更新部１１２による更新方式と同様である。データ更新部４１５は、副ノード４２０から各計算ステップの計算結果を受信するたびに粒子情報の更新を行う。
【００７２】
終了処理部４１６は、各副ノード４２０による計算ステップが予め設定された回数に到達したならば、システムユーザに解析終了を通知する。また、データ更新部４１５によりＳＳＤ３００に書き込まれた最終的な解析結果（更新された情報）を出力しても良い。
【００７３】
図１５は、副ノード４２０の機能構成を示す図である。
図１５に示すように、各副ノード４２０は、それぞれ、主ノード４１０から解析対象のデータを受け付ける受け付け部４２１と、計算処理を行う計算部４２２と、計算部４２２による計算結果を主ノード４１０へ送信する送信部４２３と、再開用ファイルをＳＳＤ３００に出力する出力部４２４とを備える。受け付け部４２１、送信部４２３および出力部４２４は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行しネットワークＩ／Ｆ１０ｄを制御することで実現される。また、計算部４２２は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能である。このように、図１５に示す副ノード４２０の各機能ブロックは、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００７４】
受け付け部４２１は、主ノード４１０から送信された自ノードの計算に必要なデータを受け付ける。ここで、自ノードの計算に必要なデータとは、主ノード４１０により自ノードに割り当てられたデータおよびこのデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータである。
【００７５】
計算部４２２は、受け付け部４２１により読み込まれたデータに基づき、自ノードに割り当てられた粒子の挙動を解析する。
【００７６】
送信部４２３は、計算部４２２による計算結果を主ノード４１０へ送信する。計算部４２２による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。
【００７７】
出力部４２４は、主ノード４１０に接続されているＳＳＤ３００にアクセスし、自ノード（副ノード４２０）の再開用ファイルとして、計算部４２２による計算結果を書き込む。再開用ファイルの出力頻度は、特に限定しないが、本実施形態では、計算部４２２による１回の計算ステップが実行されるたびに出力するものとする。
【００７８】
＜並列計算システムの動作＞
次に、上記のように構成された並列計算システムの動作について説明する。
計算サーバ１００の解析処理の動作は、図７を参照して説明した第１の実施形態における計算サーバ１００の動作と同様である。したがって、図７を参照することとし、詳細な説明を省略する。ただし、第１の実施形態では、ステップ７０４で、再起動指示ファイルが書き込まれている場合は、障害時モードへ移行したが、本実施形態では、解析処理におけるジョブを停止し、処理を終了する。
【００７９】
図１６−１、１６−２は、監視サーバ４００の動作を示すフローチャートである。
図１６−１において、ステップ１６０１からステップ１６０５までの動作は、図８に示した第１の実施形態における監視サーバ２００のステップ８０１からステップ８０５までの動作と同様である。
【００８０】
ステップ１６０５で、再起動指示ファイルをＳＳＤ３００に出力した後、主ノード４１０の再開処理部４１３は、監視サーバ４００における副ノード４２０の数（副ノード数）と、当該ジョブの実行に必要な計算ノード（副ノード４２０）の数（必要ノード数）とを比較する。副ノード数が必要ノード数以上である場合（ステップ１６０６でＹｅｓ）、再開処理部４１３からデータ割り当て部４１４に処理が移行し、各副ノード４２０に再開用ファイルのデータを割り当てる（ステップ１６０８）。一方、副ノード数が必要ノード数よりも少ない場合（ステップ１６０６でＮｏ）、再開処理部４１３が、ＳＳＤ３００に書き込まれている再開用ファイルのデータを合成し、副ノード数に応じて再分割する（ステップ１６０７）。そして、再開処理部４１３からデータ割り当て部４１４に処理が移行し、各副ノード４２０に再開用ファイルのデータを割り当てる（ステップ１６０８）。
【００８１】
この後、各副ノード４２０が、データ割り当て部４１４により割り当てられた再開用ファイルをＳＳＤ３００から読み込んで（ステップ１６０９）、計算サーバ１００から引き継いだ解析処理のジョブを実行する。
【００８２】
次に、図１６−２を参照する。ステップ１６１０〜１６１３の動作は、各副ノード４２０において個別に実行される動作である。
各副ノード４２０では、計算部４２２が、まず各粒子について、磁気力（磁気的な相互作用力）、静電気力（静電気による相互作用力）、接触力（機械的な相互作用力）を計算する（ステップ１６１０）。このとき、計算された磁気力、静電気力、接触力は、内部キャッシュ等に一時的に保持される。次に計算部４２２は、内部キャッシュ等に保持されている磁気力、静電気力、接触力を読み込み、各作用力の和を求める（ステップ１６１１）。そして、ステップ１６１１で求まった作用力の和と粒子の位置情報および属性情報に基づいて運動方程式を解き、各粒子の位置情報（座標）を計算する（ステップ１６１２）。計算部４２２の計算が終了すると、出力部４２４が今回の計算ステップにおける自ノードの計算結果を再開用ファイルとしてＳＳＤ３００に書き込む（ステップ１６１３）。また、このとき、送信部４２３が主ノード４１０に計算が終了したことを通知する。
【００８３】
主ノード４１０のデータ更新部４１５は、全ての副ノード４２０から計算終了の通知を受け付けると、次に各副ノード４２０から計算結果を受信し、ステップ１６０８で各副ノード４２０に対して再開用ファイルのデータを割り当てた際にＳＳＤ３００から読み込んだデータを更新する(ステップ１６１４、１６１５)。そして、各副ノード４２０による次の計算ステップに用いるために、更新したデータを各副ノード４２０に送信する（ステップ１６１６）。全ての副ノード４２０に更新したデータを送信した後、データ更新部４１５は、各副ノード４２０の計算結果をＳＳＤ３００に書き込む（ステップ１６１７、１６１８）。
【００８４】
以下、計算サーバ１００の計算ノード１２０と監視サーバ４００の副ノード４２０によって実行された計算ステップの合計が、予め設定された回数に達するまでステップ１６１０〜ステップ１６１８の処理を繰り返す（ステップ１６１９）。そして、計算ステップの合計が設定数に到達したならば、終了処理部４１６が、ステップ１６１８で出力された計算結果を解析結果として終了処理を行う（ステップ１６２０）。
【符号の説明】
【００８５】
１００…計算サーバ、１１０…管理ノード、１１１…データ割り当て部、１１２…データ更新部、１１３…終了処理部、１２０…計算ノード、１２１…受け付け部、１２２…計算部、１２３…送信部、１２４…出力部、２００、２１０、４００…監視サーバ、３００…ＳＳＤ（Solid State Drive）
【図１】
2010231295.tif 000003
【図２】
2010231295.tif 000004
【図３】
2010231295.tif 000005
【図４】
2010231295.tif 000006
【図５】
2010231295.tif 000007
【図６】
2010231295.tif 000008
【図７】
2010231295.tif 000009
【図８】
2010231295.tif 000010
【図９】
2010231295.tif 000011
【図１０】
2010231295.tif 000012
【図１１】
2010231295.tif 000013
【図１２】
2010231295.tif 000014
【図１３】
2010231295.tif 000015
【図１４】
2010231295.tif 000016
【図１５】
2010231295.tif 000017
【図１６−１】
2010231295.tif 000018
【図１６−２】
2010231295.tif 000019