(57)【要約】【課題】何れかのノードの動作が停止した場合に、既存のノードで迅速に代替処理が行われるようにすること。【解決手段】第１のノード１１０−１は、第１のノード１１０−１に割り当てられている第１の処理に対応する第１の処理プログラムを実行中に、第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、生成された第１の通信データを第２のノード１１０−２に送り、第２のノード１１０−２は、第２のノード１１０−２に割り当てられている第２の処理に対応する第２の処理プログラムを実行中に第１の情報処理装置が故障した場合に、第１の通信データで特定される第１の処理プログラムの状態及び処理結果から、第１の処理プログラムの実行を引き継ぎ、第１の処理プログラム及び第２の処理プログラムを実行する。【選択図】図１
2019197302.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された第１の情報処理装置及び第２の情報処理装置を備え、前記第１の情報処理装置及び前記第２の情報処理装置により処理を実行する情報処理システムであって、
前記第１の情報処理装置は、
前記ネットワークと通信を行う第１の通信部と、
前記処理の内、前記第１の情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する第１の処理部と、
前記第１の処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記第１の通信部を介して、前記第１の通信データを前記第２の情報処理装置に送る第１のデータ処理部と、を備え、
前記第２の情報処理装置は、
前記ネットワークと通信を行う第２の通信部と、
前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムを実行する第２の処理部と、を備え、
前記第２の処理部は、前記第１の情報処理装置が故障した場合に、前記第１の通信データで特定される前記第１の処理プログラムの状態及び処理結果から、前記第１の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行すること
を特徴とする情報処理システム。
【請求項２】
前記第２の情報処理装置は、前記第２の処理部が前記第２の処理プログラムを実行中に、前記第２の処理部が実行している前記第２の処理プログラムの状態及び処理結果を特定することのできる第２の通信データを生成し、前記第２の通信部を介して、前記第２の通信データを前記第１の情報処理装置に送る第２のデータ処理部をさらに備え、
前記第１の処理部は、前記第２の情報処理装置が故障した場合に、前記第２の通信データで特定される前記第２の処理プログラムの状態及び処理結果から、前記第２の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行すること
を特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１の通信部は、前記第１の情報処理装置に付与されている第１の識別情報を用いて、前記ネットワークと通信を行い、
前記第２の通信部は、前記第２の情報処理装置に付与されている第２の識別情報を用いて、前記ネットワークと通信を行い、
前記第２の情報処理装置は、前記第１の情報処理装置が故障した場合に、前記第１の識別情報を用いて、前記第１の通信部の代わりに前記ネットワークと通信を行う第２の仮想通信部をさらに備えること
を特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記第１の通信部は、前記第１の情報処理装置に付与されている第１の識別情報を用いて、前記ネットワークと通信を行い、
前記第２の通信部は、前記第２の情報処理装置に付与されている第２の識別情報を用いて、前記ネットワークと通信を行い、
前記第１の情報処理装置は、前記第２の情報処理装置が故障した場合に、前記第２の識別情報を用いて、前記第２の通信部の代わりに前記ネットワークと通信を行う第１の仮想通信部をさらに備えること
を特徴とする請求項２に記載の情報処理システム。
【請求項５】
前記第１のデータ処理部は、
前記第１の処理プログラムの実行開始時に、前記第１の処理プログラムの状態を示す初期データを、前記第２の情報処理装置に送り、
前記第１の処理プログラムの実行中の複数の時点の最初の時点においては、前記最初の時点における前記第１の処理プログラムの状態及び処理結果と、前記初期データで示される前記第１の処理プログラムの状態との差分を示す差分データを前記第１の通信データとして、前記第２の情報処理装置に送り、
前記複数の時点における前記最初の時点以降の１つの時点においては、前記１つの時点における前記第１の処理プログラムの状態及び処理結果と、前記１つの時点の１つ前の時点における前記第１の処理プログラムの状態及び処理結果との差分を示す差分データを前記第１の通信データとして、前記第２の情報処理装置に送ること
を特徴とする請求項１から３の何れか一項に記載の情報処理システム。
【請求項６】
前記第２のデータ処理部は、
前記第２の処理プログラムの実行開始時に、前記第２の処理プログラムの状態を示す初期データを、前記第１の情報処理装置に送り、
前記第２の処理プログラムの実行中の複数の時点の最初の時点においては、前記最初の時点における前記第２の処理プログラムの状態及び処理結果と、前記初期データで示される前記第２の処理プログラムの状態との差分を示す差分データを前記第２の通信データとして、前記第１の情報処理装置に送り、
前記複数の時点における前記最初の時点以降の１つの時点においては、前記１つの時点における前記第２の処理プログラムの状態及び処理結果と、前記１つの時点の１つ前の時点における前記第２の処理プログラムの状態及び処理結果との差分を示す差分データを前記第２の通信データとして、前記第１の情報処理装置に送ること
を特徴とする請求項２又は４に記載の情報処理システム。
【請求項７】
ネットワークに接続された複数の情報処理装置を備え、前記複数の情報処理装置により処理を実行する情報処理システムであって、
前記複数の情報処理装置の内の第１の情報処理装置は、
前記ネットワークと通信を行う第１の通信部と、
前記処理の内、前記第１の情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する第１の処理部と、
前記第１の処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記第１の通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送る第１のデータ処理部と、を備え、
前記複数の情報処理装置の内の第２の情報処理装置は、
前記ネットワークと通信を行う第２の通信部と、
前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムを実行する第２の処理部と、を備え、
前記第２の処理部は、前記第１の情報処理装置が故障した場合に、前記第１の通信データで特定される前記第１の処理プログラムの状態及び処理結果から、前記第１の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行すること
を特徴とする情報処理システム。
【請求項８】
前記第２の情報処理装置は、前記第１の情報処理装置が故障した時に、前記複数の情報処理装置の内で最も処理負荷の低い情報処理装置であること
を特徴とする請求項７に記載の情報処理システム。
【請求項９】
前記第２の情報処理装置は、前記少なくとも１つの情報処理装置であること
を特徴とする請求項７又は８に記載の情報処理システム。
【請求項１０】
前記第２の処理部は、前記第１の情報処理装置が故障した時に、前記第２の通信部を介して、前記少なくとも１つの情報処理装置から、前記第１の通信データを取得すること
を特徴とする請求項７又は８に記載の情報処理システム。
【請求項１１】
ネットワークに接続された複数の情報処理装置により処理を実行する情報処理システムにおいて前記複数の情報処理装置の内の１つの情報処理装置として使用される情報処理装置であって、
前記ネットワークと通信を行う通信部と、
前記処理の内、前記情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する処理部と、
前記処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送るデータ処理部と、を備え、
前記通信部は、前記複数の情報処理装置の内の第２の情報処理装置から、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムの実行中に、前記第２の処理プログラムの状態及び処理結果を特定することのできる第２の通信データを受け取り、
前記処理部は、前記第２の情報処理装置が故障した場合に、前記第２の通信データで特定される前記第２の処理プログラムの状態及び処理結果から、前記第２の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行すること
を特徴とする情報処理装置。
【請求項１２】
コンピュータを、ネットワークに接続された複数の情報処理装置により処理を実行する情報処理システムにおいて前記複数の情報処理装置の内の１つの情報処理装置として使用される情報処理装置として機能させるプログラムであって、
前記コンピュータを、
前記ネットワークと通信を行う通信部、
前記処理の内、前記情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する処理部、及び、
前記処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送るデータ処理部、として機能させ、
前記通信部は、前記複数の情報処理装置の内の第２の情報処理装置から、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムの実行中に、前記第２の処理プログラムの状態及び処理結果を特定することのできる第２の通信データを受け取り、
前記処理部は、前記第２の情報処理装置が故障した場合に、前記第２の通信データで特定される前記第２の処理プログラムの状態及び処理結果から、前記第２の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行すること
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
大規模な計算を行う場合に、複数の計算機を並列にネットワークに接続し、各計算機に処理を割り当てることで、高速処理を行うことができる。しかし、並列に接続された計算機（以下、ノード）の何れかが故障等によって動作ができなくなった場合に、そのノードで実行していた処理結果が消失する、又は、そのノードで実行予定の処理が実行されない状況が生じる。
【０００３】
このような状況に対して、例えば、特許文献１には、冗長なノードを用意し、動作できなくなったノードの代わりに自動的に冗長なノードが割り当てられ、処理の実行を続けることのできるジョブ管理プログラムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−９５０７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたジョブ管理プログラムは、通常動作しているノードとは別に、代替となるノードがシステム内に存在し、そのような代替ノードが実行可能な状態で待機していなければならない。
【０００６】
さらに、代替ノードと通信を行うために、関係する全てのノードの通信部のプログラムを変更する必要があり、変更されなかったノードがあった場合はそのノードに関する処理が実行されず処理結果に不具合が生じてしまう。
【０００７】
そこで、本発明の１又は複数の態様は、何れかのノードの動作が停止した場合に、既存のノードで迅速に代替処理が行われるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様に係る情報処理システムは、ネットワークに接続された第１の情報処理装置及び第２の情報処理装置を備え、前記第１の情報処理装置及び前記第２の情報処理装置により処理を実行する情報処理システムであって、前記第１の情報処理装置は、前記ネットワークと通信を行う第１の通信部と、前記処理の内、前記第１の情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する第１の処理部と、前記第１の処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記第１の通信部を介して、前記第１の通信データを前記第２の情報処理装置に送る第１のデータ処理部と、を備え、前記第２の情報処理装置は、前記ネットワークと通信を行う第２の通信部と、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムを実行する第２の処理部と、を備え、前記第２の処理部は、前記第１の情報処理装置が故障した場合に、前記第１の通信データで特定される前記第１の処理プログラムの状態及び処理結果から、前記第１の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行することを特徴とする。
【０００９】
本発明の第２の態様に係る情報処理システムは、ネットワークに接続された複数の情報処理装置を備え、前記複数の情報処理装置により処理を実行する情報処理システムであって、前記複数の情報処理装置の内の第１の情報処理装置は、前記ネットワークと通信を行う第１の通信部と、前記処理の内、前記第１の情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する第１の処理部と、前記第１の処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記第１の通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送る第１のデータ処理部と、を備え、前記複数の情報処理装置の内の第２の情報処理装置は、前記ネットワークと通信を行う第２の通信部と、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムを実行する第２の処理部と、を備え、前記第２の処理部は、前記第１の情報処理装置が故障した場合に、前記第１の通信データで特定される前記第１の処理プログラムの状態及び処理結果から、前記第１の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行することを特徴とする。
【００１０】
本発明の一態様に係る情報処理装置は、ネットワークに接続された複数の情報処理装置により処理を実行する情報処理システムにおいて前記複数の情報処理装置の内の１つの情報処理装置として使用される情報処理装置であって、前記ネットワークと通信を行う通信部と、前記処理の内、前記情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する処理部と、前記処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送るデータ処理部と、を備え、前記通信部は、前記複数の情報処理装置の内の第２の情報処理装置から、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムの実行中に、前記第２の処理プログラムの状態及び処理結果を特定することのできる第２の通信データを受け取り、前記処理部は、前記第２の情報処理装置が故障した場合に、前記第２の通信データで特定される前記第２の処理プログラムの状態及び処理結果から、前記第２の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行することを特徴とする。
【００１１】
本発明の一態様に係るプログラムは、コンピュータを、ネットワークに接続された複数の情報処理装置により処理を実行する情報処理システムにおいて前記複数の情報処理装置の内の１つの情報処理装置として使用される情報処理装置として機能させるプログラムであって、前記コンピュータを、前記ネットワークと通信を行う通信部、前記処理の内、前記情報処理装置に割り当てられている第１の処理に対応する第１の処理プログラムを実行する処理部、及び、前記処理部が前記第１の処理プログラムを実行中に、前記第１の処理プログラムの状態及び処理結果を特定することのできる第１の通信データを生成し、前記通信部を介して、前記複数の情報処理装置の内の少なくとも１つの情報処理装置に送るデータ処理部、として機能させ、前記通信部は、前記複数の情報処理装置の内の第２の情報処理装置から、前記処理の内、前記第２の情報処理装置に割り当てられている第２の処理に対応する第２の処理プログラムの実行中に、前記第２の処理プログラムの状態及び処理結果を特定することのできる第２の通信データを受け取り、前記処理部は、前記第２の情報処理装置が故障した場合に、前記第２の通信データで特定される前記第２の処理プログラムの状態及び処理結果から、前記第２の処理プログラムの実行を引き継ぎ、前記第１の処理プログラム及び前記第２の処理プログラムを実行することを特徴とする。
【発明の効果】
【００１２】
本発明の１又は複数の態様によれば、何れかのノードの動作が停止した場合に、既存のノードで迅速に代替処理が行われるようになる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る並列計算機システムの構成を概略的に示すブロック図である。
【図２】実施の形態１におけるノードの構成を概略的に示すブロック図である。
【図３】データ処理部の構成を概略的に示すブロック図である。
【図４】記憶部の構成を概略的に示すブロック図である。
【図５】（Ａ）及び（Ｂ）は、ハードウェア構成例を示す概略図である。
【図６】第２のノードがデータを送信する動作を示すフローチャートである。
【図７】第１のノードがデータを受信する動作を示すフローチャートである。
【図８】第２のノードの動作が停止した場合に、第１のノードが第２のノードの処理を代替して行う動作を示すフローチャートである。
【図９】実施の形態２に係る並列計算機システムの構成を概略的に示すブロック図である。
【図１０】実施の形態２におけるノードの構成を概略的に示すブロック図である。
【図１１】第Ｎのノードが停止した場合に、第１のノード又は第２のノードが第Ｎのノードの処理を代替して行う動作を示すフローチャートである。
【図１２】実施の形態２の変形例を概略的に示すブロック図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、実施の形態１に係る情報処理システムとしての並列計算機システム１００の構成を概略的に示すブロック図である。
並列計算機システム１００は、複数の情報処理装置としての複数のノード１１０−１、１１０−２を備える。複数のノード１１０−１、１１０−２は、ネットワークを構成するネットワークハブ１０１に接続され、相互に通信を行うことができる。
【００１５】
実施の形態１では、複数のノード１１０−１、１１０−２として、第１のノード１１０−１と、第２のノード１１０−２とが備えられている。
ここで、第１のノード１１０−１及び第２のノード１１０−２は、同様に構成されているため、以下、特に各々を区別する必要がない場合には、ノード１１０という。
なお、並列計算機システム１００は、２台のノード１１０に限定されず、３台以上のノード１１０が備えられていてもよい。
また、ネットワークハブ１０１は、一つの機器であってもよいし、複数の機器の集合であってもよい。
【００１６】
各々のノード１１０は、並列計算機システム１００で実行される処理（演算）の内、割り当てられた処理を実行する。具体的には、各々のノード１１０は、並列計算機システム１００で実行されるプログラムの内、割り当てられたプログラムである処理プログラムを実行する。
なお、第１のノード１１０−１に割り当てられた処理を、第１の処理ともいい、第１のノード１１０−１に割り当てられた処理プログラムを、第１の処理プログラムともいう。また、第２のノード１１０−２に割り当てられた処理を、第２の処理ともいい、第２のノード１１０−２に割り当てられた処理プログラムを、第２の処理プログラムともいう。
【００１７】
ここで、処理プログラムは、ワーキングメモリに展開されて実行され、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタに一時的なデータが記憶される。このため、処理プログラムを実行する際にワーキングメモリに展開する実行形式の機械語と、ＣＰＵ内のレジスタに記憶される一時的なデータとのことを、処理プログラムの状態とする。処理プログラムの状態は、単なるデジタルデータであるので、一つ前のデジタルデータと、現在のデジタルデータとの差分を算出することができる。
また、処理プログラムで処理された処理結果についてもデジタルデータであるため、一つ前のデジタルデータと、現在のデジタルデータとの差分を算出することができる。
【００１８】
図２は、ノード１１０の構成を概略的に示すブロック図である。
ノード１１０は、通信インタフェース部（以下、通信Ｉ／Ｆ部）１１１と、通信制御部１１２と、データ処理部１１３と、仮想通信制御部１１４と、処理部１１５と、記憶部１１６とを備える。
【００１９】
なお、第１のノード１１０−１の通信Ｉ／Ｆ部１１１、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４、処理部１１５及び記憶部１１６のそれぞれを、それぞれ、第１の通信Ｉ／Ｆ部、第１の通信制御部、第１のデータ処理部、第１の仮想通信制御部、第１の処理部及び第１の記憶部ともいう。
また、第２のノード１１０−２の通信Ｉ／Ｆ部１１１、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４、処理部１１５及び記憶部１１６のそれぞれを、それぞれ、第２の通信Ｉ／Ｆ部、第２の通信制御部、第２のデータ処理部、第２の仮想通信制御部、第２の処理部及び第２の記憶部ともいう。
【００２０】
通信Ｉ／Ｆ部１１１は、ネットワークハブ１０１を介して、他のノード１１０とデータの送受信を行う。例えば、通信Ｉ／Ｆ部１１１は、通信インタフェースで実現することができる。
【００２１】
通信制御部１１２は、通信Ｉ／Ｆ部１１１を制御する。
通信制御部１１２には、自ノード１１０を示すユニークな識別情報としてＩＤが付与されている。例えば、第１のノード１１０−１が通信制御部１１２を介して、第２のノード１１０−２にデータを送信する場合は、第２のノード１１０−２の通信制御部１１２に付与されたＩＤを指定する。
なお、通信制御部１１２は、ネットワークハブ１０１に接続されている他のノード１１０に付与されたＩＤを既知とする。
【００２２】
ここで、ＩＤは、並列計算機システム１００内で各ノード１１０にユニークに割り当てられる情報である。各ノード１１０とネットワークハブ１０１との間がＥｔｈｅｒｎｅｔ（登録商標）による通信を行っているのであれば、ＩＤは、ＥｔｈｅｒｎｅｔにおけるＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを利用することができる。
また、ＩＤは、ノード１１０を識別するための番号が使用されてもよいし、そのための記号等が使用されてもよい。
なお、第１のノード１１０−１に付与されたＩＤを、第１の識別情報（第１のＩＤ）ともいい、第２のノード１１０−２に付与されたＩＤを、第２の識別情報（第２のＩＤ）ともいう。
【００２３】
なお、通信Ｉ／Ｆ部１１１及び通信制御部１１２により、ネットワークと通信を行う通信部１１７が構成される。
第１のノード１１０−１の通信部１１７を、第１の通信部ともいい、第２のノード１１０−２の通信部１１７を、第２の通信部ともいう。
【００２４】
データ処理部１１３は、処理部１１５が実行した処理プログラムの状態及び処理結果を、他のノード１１０へ通知する。例えば、データ処理部１１３は、処理部１１５が処理プログラムを実行中に、処理プログラムの状態及び処理結果を特定することのできる通信データを生成し、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、他のノード１１０に送る。
なお、第１のノード１１０−１で生成された通信データを第１の通信データともいい、第２のノード１１０−２で生成された通信データを第２の通信データともいう。
【００２５】
具体的には、まず、データ処理部１１３は、処理部１１５による処理プログラムの実行開始時に、処理プログラムの状態を示す初期データを送る。次に、データ処理部１１３は、処理プログラムの実行中の複数の時点の最初の時点において、その時点における処理プログラムの状態及び処理結果と、初期データで示される処理プログラムの状態との差分を示す差分データを通信データとして送る。さらに、データ処理部１１３は、複数の時点における最初の時点以降の時点においては、その時点における処理プログラムの状態及び処理結果と、１つ前の時点における処理プログラムの状態及び処理結果との差分を示す差分データを通信データとして送る。
【００２６】
なお、初期データには、処理結果の初期値が含まれていてもよい。例えば、処理プログラムの実行を開始する際に、他のノード１１０で処理された処理結果が必要な場合には、その処理結果を示す初期値が初期データに含まれる。また、処理結果がまだないことを示す値が初期値として、初期データに含まれていてもよい。なお、初期データに処理結果の初期値が含まれていない場合には、最初の時点における処理結果の差分は、その時点における処理結果そのものとなる。
【００２７】
仮想通信制御部１１４は、他のノード１１０の動作が停止する等の故障が発生した場合に、そのノード１１０の通信制御部１１２の代わりに処理を行う。
例えば、第２のノード１１０−２で故障が発生した場合に、第１のノード１１０−１の仮想通信制御部１１４は、第２のノード１１０−２の通信制御部１１２の代わりに処理を行う。具体的には、第１のノード１１０−１の仮想通信制御部１１４は、第２のノード１１０−２の通信制御部１１２に付与されたＩＤを用いて、第１のノード１１０の通信Ｉ／Ｆ部１１１を介して、通信を行う。これにより、第１のノード１１０−１を含む並列計算機システム１００のノードは、第２のノード１１０−２に対して通信する処理を実行したまま、実際には第１のノード１１０−１と通信を行うことができる。
【００２８】
なお、通信Ｉ／Ｆ部１１１及び仮想通信制御部１１４により、他のノード１１０の通信部１１７の代わりにネットワークと通信を行う仮想通信部１１８が構成される。
第１のノード１１０−１の仮想通信部１１８を、第１の仮想通信部ともいい、第２のノード１１０−２の仮想通信部１１８を、第２の仮想通信部ともいう。
【００２９】
処理部１１５は、ノード１１０での処理を実行する。例えば、処理部１１５は、ノード１１０に割り当てられた処理プログラムを読み出し実行する。
また、処理部１１５は、他のノード１１０が故障した場合に、そのノード１１０から送られてきた通信データで特定される処理プログラムの状態及び処理結果から、その処理プログラムの実行を引き継ぎ、自ノード１１０に割り当てられている処理プログラム及び故障したノード１１０に割り当てられている処理プログラムを実行する。
【００３０】
また、処理部１１５は、記憶部１１６に記憶されるデータを、データ処理部１１３、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、他のノード１１０に送り、及び、データ処理部１１３、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、他のノード１１０から取得したデータを記憶部１１６に記録する処理も行う。
【００３１】
記憶部１１６は、ノード１１０での処理に必要なプログラム及びデータを記憶する。例えば、記憶部１１６は、ノード１１０に割り当てられた処理プログラム、処理部１１５で実行された処理プログラムの処理結果、及び、他のノード１１０から受け取ったデジタルデータを記憶する。
なお、記憶部１１６は、主記憶装置により実現することができる。
【００３２】
なお、並列計算機システム１００には、図示しない外部記憶装置があり、その外部記憶装置には、実行するプログラムが格納されている。そして、並列計算機システム１００は、システムの起動時に、各ノード１１０に対してプログラムを分割して、分割されたプログラムを処理プログラムとして送信している。
【００３３】
プログラムの分割は、外部記憶装置に記憶される際に行われてもよく、第１のノード１１０−１、第２のノード１１０−２、又は、図示しない計算機（情報処理装置）としてのノードが、システムの起動後にプログラムの分割を行ってもよい。
【００３４】
図３は、データ処理部１１３の構成を概略的に示すブロック図である。
データ処理部１１３は、データ中継部１１３ａと、差分生成部１１３ｂと、差分復元部１１３ｃとを備える。
【００３５】
データ中継部１１３ａは、処理部１１５からの指示に従いデータを通信制御部１１２に送り、又は、通信制御部１１２で取得されたデータを処理部１１５へ受け渡す。また、データ中継部１１３ａが処理部１１５の指示に従って送信を行うデータは、処理部１１５だけでなく差分生成部１１３ｂからも取得する。
【００３６】
差分生成部１１３ｂは、処理部１１５で実行されている処理プログラムの状態及び処理結果と、一つ前に送信したデジタルデータとの差分を算出し、算出された差分を示す差分データをデータ中継部１１３ａに渡す。処理部１１５で実行される処理プログラムに関して初めてデジタルデータの送信を行う場合は、差分生成部１１３ｂは、処理プログラムの状態を示す初期データをデータ中継部１１３ａに渡す。
【００３７】
なお、差分生成部１１３ｂは、差分を算出するだけでなく、算出した差分を示す差分データに対し圧縮処理等を行い、データ量を削減してもよい。また、算出した差分を符号化してもよい。
【００３８】
差分復元部１１３ｃは、他のノード１１０から送られてくる差分データと、記憶部１１６に記憶されているそのノード１１０の処理プログラムの状態及び処理結果と照合し、そのノード１１０に割り当てられた処理プログラムの状態及び処理結果を復元し、復元された状態及び処理結果を記憶部１１６に記憶する。
【００３９】
なお、図３では、差分復元部１１３ｃは、処理部１１５を介して記憶部１１６を参照しているが、差分復元部１１３ｃから直接記憶部１１６を参照してもよい。
【００４０】
図４は、実施の形態１における記憶部１１６の構成を概略的に示すブロック図である。
記憶部１１６は、自ノード記憶領域１１６ａと、他ノード記憶領域１１６ｂとを備える。
【００４１】
自ノード記憶領域１１６ａは、自ノード１１０に割り当てられた処理プログラム及び処理部１１５がその処理プログラム実行中に発生する一時的に記憶されるデータ等からなる処理プログラムの状態、並びに、その処理プログラムの処理結果等、自ノード１１０に割り当てられた処理プログラムに関する情報が記憶される。
【００４２】
他ノード記憶領域１１６ｂは、他のノード１１０から送られてくるデータを元に、他のノード１１０の処理プログラムの状態と、その処理プログラムの処理結果とが記憶される。
【００４３】
以上に記載された通信制御部１１２、データ処理部１１３、仮想通信制御部１１４及び処理部１１５の一部又は全部は、例えば、図５（Ａ）に示されているように、メモリ１０と、メモリ１０に格納されているプログラムを実行するＣＰＵ等のプロセッサ１１とにより構成することができる。このようなプログラムは、ネットワークを通じて提供されてもよく、また、記録媒体に記録されて提供されてもよい。即ち、このようなプログラムは、例えば、プログラムプロダクトとして提供されてもよい。このような場合、ノード１１０は、コンピュータにより実現することができる。
【００４４】
また、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４及び処理部１１５の一部は、例えば、図５（Ｂ）に示されているように、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）又はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の処理回路１２で構成することもできる。
【００４５】
次に、実施の形態１に係る並列計算機システム１００の動作の概要を説明する。
以降の説明では、第２のノード１１０−２（送信プロセッシングユニット）のデータを第１のノード１１０−１（受信プロセッシングユニット）に対して送信する例を示すが、第１のノード１１０−１及び第２のノード１１０−２は、同様の動作が可能なため、第１のノード１１０−１と第２のノード１１０−２とを入れ替えてもよい。
【００４６】
図６は、実施の形態１における第２のノード１１０−２がデータを送信する動作を示すフローチャートである。
まず、第２のノード１１０−２の処理部１１５は、割り当てられた処理プログラムの実行を開始する（Ｓ１０）。
次に、第２のノード１１０−２のデータ処理部１１３は、実行開始時の処理プログラムの状態を示す初期データを生成し、その初期データを通信制御部１１２に与える。通信制御部１１２は、その初期データを、通信Ｉ／Ｆ部１１１を介して第１のノード１１０−１に送る（Ｓ１１）。
【００４７】
また、第２のノード１１０−２のデータ処理部１１３は、処理部１１５が割り当てられた処理プログラムの実行中に、処理結果を書き出すことのできるタイミングで、前回送信した初期データ又は差分データで示される処理プログラムの状態及び処理結果と、現在の処理プログラムの状態及び処理結果との差分を算出し、その差分を示す差分データを生成する（Ｓ１２）。
【００４８】
ここで、処理結果を書き出すことのできるタイミングは、例えば、処理結果を他のノード１１０に対し送信する場合、又は、処理結果を一定期間保持する必要がある場合等である。また、これらに限らず、差分を算出することで、処理プログラムの実行が妨げられないタイミングであれば、いずれのタイミングでもよい。
【００４９】
差分データが生成されると、第２のノード１１０−２の通信制御部１１２は、その差分データを、通信Ｉ／Ｆ部１１１を介して第１のノード１１０−１に送る（Ｓ１３）。
そして、処理はステップＳ１２に戻り、以降は、ステップＳ１２の処理とステップＳ１３の処理とが繰り返し行われる。
【００５０】
図７は、第１のノード１１０−１がデータを受信する動作を示すフローチャートである。
まず、第１のノード１１０−１の処理部１１５は、割り当てられた処理プログラムの実行を開始する（Ｓ２０）。
【００５１】
次に、第１のノード１１０−１のデータ処理部１１３は、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、第２のノード１１０−２から、図６のステップＳ１１で送信された初期データを取得する（Ｓ２１）。
そして、データ処理部１１３は、処理部１１５を介して、第２のノード１１０−２の処理プログラムの状態と、処理結果とを記憶する他ノード記憶領域１１６ｂを記憶部１１６に確保し、初期データで示される処理プログラムの状態をその領域に記憶する（Ｓ２２）。
【００５２】
次に、第１のノード１１０−１のデータ処理部１１３は、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、第２のノード１１０−２から、図６のステップＳ１３で送信された差分データを取得する（Ｓ２３）。
そして、データ処理部１１３は、記憶部１１６の他ノード記憶領域１１６ｂに記憶されている第２のノード１１０−２の処理プログラムの状態及び処理結果に対して、差分データを適用することで、新たに第２のノード１１０−２の処理プログラムの状態及び処理結果を復元し、復元された状態及び処理結果で他ノード記憶領域１１６ｂの状態及び処理結果を上書きして、記憶する（Ｓ２４）。
そして、処理はステップＳ２３に戻り、以降は、ステップＳ２３の処理とステップＳ２４の処理とが繰り返し行われる。
【００５３】
図８は、実施の形態１における第２のノード１１０−２の動作が停止した場合に、第１のノード１１０−１が第２のノード１１０−２の処理を代替して行う動作を示すフローチャートである。
まず、第２のノード１１０−２が故障したことを、第１のノード１１０−１の処理部１１５が検知する（Ｓ３０）。ここでは、第２のノード１１０−２の動作が停止したことを、第２のノード１１０−２の故障として検知する。
【００５４】
ここで、第２のノード１１０−２の動作が停止したことは、例えば、停止したことを通知する機能を第２のノード１１０−２が備えており、第１のノード１１０−１の処理部１１５がそのような通知を受けることで検知してもよい。
また、通信Ｉ／Ｆ部１１１が、図６のステップＳ１１で送信される初期データ又は図６のステップＳ１３で送信される差分データを、予め定められた期間受信しなかった場合に、第１のノード１１０−１の処理部１１５は、第２のノード１１０−２の動作が停止したと判断してもよい。
さらに、第２のノード１１０−２が、図６のステップＳ１１及びステップＳ１３とは別に定期的に第１のノード１１０−１に対し、動作していることを通知するデータを送信するようになっている場合には、このようなデータを、第１のノード１１０−１の通信Ｉ／Ｆ部１１１が予め定められた期間受信しなかった場合に、第１のノード１１０−１の処理部１１５は、第２のノード１１０−２の動作が停止したと判断してもよい。
【００５５】
次に、第１のノード１１０−１の処理部１１５は、記憶部１１６の他ノード記憶領域１１６ｂに記憶されている処理プログラムの状態と処理結果とを参照し、第１のノード１１０−１に割り当てられた処理プログラムと平行して、第２のノード１１０−２に割り当てられた処理プログラムを実行する（Ｓ３１）。
【００５６】
ここで、平行して処理プログラムを実行とは、処理部１１５が実行できるプログラムの最小単位で時分割して複数の処理プログラムを順に実行することを指す。
また、平行して処理プログラムを実行とは、処理部１１５が、処理プログラムを実行できる複数の処理装置から構成されている場合、各処理装置に各々の処理プログラムを割り当てて同時に実行することを指してもよい。
【００５７】
次に、第１のノード１１０−１の処理部１１５は、第２のノード１１０−２に付与されたＩＤが付与された状態で仮想通信制御部１１４を起動する（Ｓ３２）。通信Ｉ／Ｆ部１１１は、第１のノード１１０−１の通信制御部１１２に付与されたＩＤを有するデータを、第１のノード１１０−１の通信制御部１１２に与えるとともに、第２のノード１１０−２の仮想通信制御部１１４に付与されたＩＤを有するデータをネットワークハブ１０１から取得し、第１のノード１１０−１の仮想通信制御部１１４に与える。
【００５８】
ステップＳ３１及びステップＳ３２によって、第１のノード１１０−１は、並列計算機システム１００において、あたかも第２のノード１１０−２が動作を続けているように処理プログラムを実行することができる。
【００５９】
以上に記載された実施の形態１に係る並列計算機システム１００によれば、何れかのノード１１０で故障が発生した場合でも、速やかに、他のノード１１０が代替ノードとして引き続き処理を実行し、システム全体として処理の実行を続けることができる。
【００６０】
実施の形態１に係る並列計算機システム１００によれば、何れかのノード１１０で故障が発生した場合でも、追加のノードを準備することなく、故障したノード１１０に割り当てられている処理プログラムの実行を続けることができる。
【００６１】
実施の形態１に係る並列計算機システム１００によれば、何れかのノード１１０で故障が発生した場合に、故障したノード１１０と通信するノード１１０が、故障を検知していなくても、故障したノード１１０と同じＩＤを指定して、代替ノードと通信することができる。
【００６２】
実施の形態１に係る並列計算機システム１００によれば、何れかのノード１１０で故障が発生した場合に、故障したノード１１０との通信に用いられているＩＤを変更する必要がないため、通信に係るプログラム変更の必要がなく、処理負荷を削減でき、プログラム変更に伴うエラーの発生を抑制できる。
【００６３】
実施の形態１に係る並列計算機システム１００によれば、何れかのノード１１０が故障した場合に、故障したノード１１０の情報が他のノード１１０に記憶されているため、故障した原因の特定等が容易になる。
【００６４】
実施の形態１に係る並列計算機システム１００によれば、処理プログラムの状態及び処理結果の送信に差分データを用いているため、送信するデータ量が削減でき、ネットワーク負荷を削減することができる。
【００６５】
実施の形態１に係る並列計算機システム１００によれば、処理プログラムの状態及び処理結果を差分データとして受け取るため、記憶部１１６に書き込む量が差分だけでよいため記憶部１１６への書き込み負荷及び帯域の削減が可能となる。
【００６６】
実施の形態２．
以下、実施の形態２に係る並列計算機システムについて説明を行う。以下の説明では、実施の形態１と同様の部分については説明を省略又は簡略化し、実施の形態１と同一又は対応する要素については同一の符号を付す。
【００６７】
図９は、実施の形態２に係る並列計算機システム２００の構成を概略的に示すブロック図である。
並列計算機システム２００は、複数のノード２１０−１、２１０−２、・・・、２１０−Ｎ（Ｎは、２以上の整数）を備える。複数のノード２１０−１、２１０−２、・・・、２１０−Ｎは、ネットワークを構成するネットワークハブ１０１に接続され、相互に通信を行うことができる。
【００６８】
実施の形態２では、複数のノード２１０−１、２１０−２、・・・、２１０−Ｎとして、第１のノード２１０−１と、第２のノード２１０−２と、第Ｎのノード２１０−Ｎとが少なくとも備えられている。
ここで、第１のノード２１０−１、第２のノード２１０−２及び第Ｎのノード２１０−Ｎは、同様に構成されているため、以下、特に各々を区別する必要がない場合には、ノード２１０という。
【００６９】
図１０は、ノード２１０の構成を概略的に示すブロック図である。
ノード２１０は、通信Ｉ／Ｆ部１１１と、通信制御部１１２と、データ処理部１１３と、仮想通信制御部１１４と、処理部２１５と、記憶部１１６と、補助記憶部２１９とを備える。
なお、通信Ｉ／Ｆ部１１１及び通信制御部１１２により通信部１１７が構成され、通信Ｉ／Ｆ部１１１及び仮想通信制御部１１４により、仮想通信部１１８が構成される。
【００７０】
なお、第１のノード２１０−１の通信Ｉ／Ｆ部１１１、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４、処理部２１５、記憶部１１６、通信部１１７、仮想通信部１１８及び補助記憶部２１９のそれぞれを、それぞれ、第１の通信Ｉ／Ｆ部、第１の通信制御部、第１のデータ処理部、第１の仮想通信制御部、第１の処理部、第１の記憶部、第１の通信部、第１の仮想通信部及び第１の補助記憶部ともいう。
また、第２のノード２１０−２の通信Ｉ／Ｆ部１１１、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４、処理部２１５、記憶部１１６、通信部１１７、仮想通信部１１８及び補助記憶部２１９のそれぞれを、それぞれ、第２の通信Ｉ／Ｆ部、第２の通信制御部、第２のデータ処理部、第２の仮想通信制御部、第２の処理部、第２の記憶部、第２の通信部、第２の仮想通信部及び第２の補助記憶部ともいう。
さらに、第Ｎのノード２１０−Ｎの通信Ｉ／Ｆ部１１１、通信制御部１１２、データ処理部１１３、仮想通信制御部１１４、処理部２１５、記憶部１１６、通信部１１７、仮想通信部１１８及び補助記憶部２１９のそれぞれを、それぞれ、第Ｎの通信Ｉ／Ｆ部、第Ｎの通信制御部、第Ｎのデータ処理部、第Ｎの仮想通信制御部、第Ｎの処理部、第Ｎの記憶部、第Ｎの通信部、第Ｎの仮想通信部及び第Ｎの補助記憶部ともいう。
さらにまた、第１のノード２１０−１に付与されたＩＤを、第１の識別情報（第１のＩＤ）ともいい、第２のノード２１０−２に付与されたＩＤを、第２の識別情報（第２のＩＤ）ともいい、第Ｎのノード２１０−Ｎに付与されたＩＤを、第Ｎの識別情報（第ＮのＩＤ）ともいう。
また、第１のノード２１０−１で生成される通信データを、第１の通信データともいい、第２のノード２１０−２で生成される通信データを、第２の通信データともいい、第Ｎのノード２１０−Ｎで生成される通信データを、第Ｎの通信データともいう。
【００７１】
処理部２１５は、実施の形態１の処理部１１５と同様の処理を行うほか、以下のような処理を行う。
なお、第１のノード２１０−１に割り当てられた処理を、第１の処理ともいい、第１のノード２１０−１に割り当てられた処理プログラムを、第１の処理プログラムともいう。また、第２のノード２１０−２に割り当てられた処理を、第２の処理ともいい、第２のノード２１０−２に割り当てられた処理プログラムを、第２の処理プログラムともいう。さらに、第Ｎのノード２１０−Ｎに割り当てられた処理を、第Ｎの処理ともいい、第Ｎのノード２１０−Ｎに割り当てられた処理プログラムを、第Ｎの処理プログラムともいう。
また、処理部２１５は、データを記憶させる際に、記憶部１１６又は補助記憶部２１９に記録させる。
【００７２】
処理部２１５は、定期的に自ノード２１０の処理負荷を計測し、計測された処理負荷を、データ処理部１１３、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、他のノード２１０に通知するとともに、記憶部１１６又は補助記憶部２１９に記録する。ここでは、処理部２１５は、ネットワークハブ１０１に接続されている全てのノード２１０に通知するものとする。
【００７３】
また、処理部２１５は、データ処理部１１３、通信制御部１１２及び通信Ｉ／Ｆ部１１１を介して、他のノード２１０からの処理負荷を取得して、取得された処理負荷を、送信してきた他のノード２１０を識別できるように、記憶部１１６又は補助記憶部２１９に記憶する。
なお、処理部２１５は、他のノード２１０から、処理負荷が予め定められた期間送られてこない場合には、そのノード２１０に故障が発生したと判断する。
そして、処理部２１５は、他のノード２１０に故障が発生した場合には、記憶部１１６又は補助記憶部２１９に記憶されている処理負荷を参照することにより、自ノード２１０の処理負荷が最も低いか否かを判断する。自ノード２１０の処理負荷が最も低い場合には、実施の形態１の処理部１１５と同様に、故障したノード２１０で実行されていた処理プログラムの実行を引き継ぐ。
【００７４】
補助記憶部２１９は、ノード２１０での処理に必要なプログラム及びデータを記憶する。例えば、補助記憶部２１９は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等のように、低価格で大容量のデータを記憶することのできる記憶装置により実現することが望ましい。
【００７５】
次に、実施の形態２に係る並列計算機システム２００の動作の概要を説明する。
実施の形態２でも、各々のノード２１０は、図６に示されているデータを送信する動作、及び、図７に示されているデータを受信する動作を行う。
【００７６】
例えば、第Ｎのノード２１０−Ｎから初期データ及び差分データを送信する場合を例に説明する。
まず、第Ｎのノード２１０−Ｎの処理部２１５は、送信先のノードとして第１のノード２１０−１及び第２のノード２１０−２の２つのノード２１０を選択する。送信先のノード２１０の選択は、ここでは、ネットワークハブ１０１に接続されている全てのノード２１０であるものとする。
【００７７】
２つのノード２１０を選択したため、第Ｎのノード２１０−Ｎの処理部２１５は、初期データをコピーし、第１のノード２１０−１に送信する初期データと、第２のノード２１０−２に送信する初期データとを生成し、それぞれのデータを各ノード２１０に送信する。ここで、第１のノード２１０−１に送る初期データと、第２のノード２１０−２に送る初期データとは、同一のデータとする。
【００７８】
以後、第Ｎのノード２１０−Ｎのデータ処理部１１３は、差分データを生成し、他のノード２１０への送信を、上記と同様に繰り返し行う。なお、ここでは２つのノード２１０−１、２１０−２に対して差分データを送信する方法を説明したが、送信するノード２１０の数は、並列計算機システム２００の構成上可能な数のノード２１０に送信することができる。
【００７９】
また、第Ｎのノード２１０−Ｎが、初期データ及び差分データを送信する場合について説明したが、並行して第１のノード２１０−１及び第２のノード２１０−２も初期データ及び差分データを送信する。
【００８０】
第Ｎのノード２１０−Ｎのように複数のノード２１０に対しデータ送信した場合、受信したノード２１０は、複数のノード２１０のデータを記憶しなければならない。このため、記憶部１１６で容量が不足した場合には、補助記憶部２１９にデータが記憶される。
【００８１】
次に、第Ｎのノード２１０−Ｎに故障が発生した場合の第１のノード２１０−１及び第２のノード２１０−２の動作を説明する。
【００８２】
図１１は、実施の形態２における第Ｎのノード２１０−Ｎが停止した場合に、第１のノード２１０−１又は第２のノード２１０−２が第Ｎのノード２１０−Ｎの処理を代替して行う動作を示すフローチャートである。
まず、第Ｎのノード２１０−Ｎが故障したことを、第１のノード２１０−１の処理部２１５及び第２のノード２１０−２の処理部２１５が検知する（Ｓ４０）。ここでは、第Ｎのノード２１０−Ｎの動作が停止したことを、第Ｎのノード２１０−Ｎの故障として検知する。
【００８３】
次に、第１のノード２１０−１の処理部２１５及び第２のノード２１０−２の処理部２１５は、自ノード２１０の記憶部１１６又は補助記憶部２１９に記憶されている処理負荷を参照することで、最も処理負荷が低いノード２１０を特定し、特定されたノード２１０を、第Ｎのノード２１０−Ｎの処理を引き継ぐノード２１０である代替ノード２１０として選択する（Ｓ４１）。
【００８４】
次に、代替ノード２１０の処理部２１５は、記憶部１１６又は補助記憶部２１９の他ノード記憶領域１１６ｂに記憶されている処理プログラムの状態と処理結果とを参照し、自ノード２１０に割り当てられた処理プログラムと平行して、第Ｎのノード２１０−Ｎに割り当てられた処理プログラムを実行する（Ｓ４２）。
【００８５】
次に、代替ノード２１０の処理部２１５は、第Ｎのノード２１０−Ｎに付与されたＩＤが付与された状態で仮想通信制御部１１４を起動する（Ｓ４３）。通信Ｉ／Ｆ部１１１は、通信制御部１１２に付与されたＩＤを有するデータを通信制御部１１２に与えるとともに、仮想通信制御部１１４に付与されたＩＤを有するデータをネットワークハブ１０１から取得し、仮想通信制御部１１４に与える。
【００８６】
ステップＳ４２及びステップＳ４３によって、代替ノード２１０は、並列計算機システム２００において、あたかも第Ｎのノード２１０−Ｎが動作を続けているように処理プログラムを実行することができる。
【００８７】
以上に記載された実施の形態２に係る並列計算機システム２００によれば、何れかのノード２１０が停止し、そのノード２１０の処理プログラムの状態と処理結果とを記憶していたノード２１０も同時に動作を停止しても、他の何れかのノード２１０が停止したノード２１０の処理プログラムの状態と処理結果とを記憶しているため、確実に停止したノード２１０の処理を引き続いて実行することができる。
【００８８】
実施の形態２に係る並列計算機システム２００によれば、何れかのノード２１０の動作が停止し、そのノード２１０の処理プログラムの状態と処理結果とを記憶していたノード２１０の中で処理負荷の低いノード２１０が代替ノード２１０として選択されるため、代替ノード２１０の処理負荷の増加による処理遅延を抑制することができる。
【００８９】
なお、代替ノード２１０の選択の方法は、上記に限られない。例えば、各ノード２１０に付与されているＩＤが番号である場合には、番号の小さいものから順に代替ノード２１０として選択することもできる。
【００９０】
実施の形態２では、各ノード２１０は、他の全てのノード２１０に、初期データ及び差分データを送信するようにしているが、他の全てのノード２１０ではない、１又は複数のノード２１０に、初期データ及び差分データを送信するようにしてもよい。このような場合、初期データ及び差分データを送信する１又は複数のノード２１０は、予め定められていてもよく、また、処理の開始時に、全てのノード２１０で処理負荷を計測して、他の全てのノード２１０に通知し、処理負荷の低いものから順に、初期データ及び差分データを送信する１又は複数のノード２１０が決定されてもよい。
このような場合、代替ノード２１０は、故障が発生したノード２１０から直接初期データ及び差分データを受信していなくてもよく。代替ノード２１０として選択された時点で、故障が発生したノード２１０から直接初期データ及び差分データを受信していたノード２１０から、故障が発生したノード２１０の処理プログラムの状態及び処理結果を受信して、処理を引き継げばよい。
【００９１】
また、各々のノード２１０が初期データ及び差分データを送信するノード２１０を選択する際には、例えば、図１２に示されている並列計算機システム２００＃のように、複数のノード２１０−１、２１０−２、・・・、２１０−Ｎ、２１０−Ｎ＋１、２１０−Ｎ＋２、・・・、２１０−Ｌ（Ｌは、Ｎよりも大きい整数）を複数のグループに分けて、グループ内の１又は複数のノード２１０に初期データ及び差分データを送信するようにしてもよい。なお、図１２では、複数のグループは、第１のグループと第２のグループの２つのグループであるが、３以上のグループであってもよい。
【００９２】
また、各々のノード２１０が、初期データ及び差分データを送信する際に、全ての初期データ及び差分データを同じノード２１０に送信しなくてもよい。例えば、各々のノード２１０は、第１の処理を行うための初期データ及び差分データをあるノード２１０に送信し、第１の処理とは異なる第２の処理を行うための初期データ及び差分データを別のノード２１０に送信してもよい。
【００９３】
以上の実施の形態１及び実施の形態２では、通信制御部１１２及び仮想通信制御部１１４が、通信Ｉ／Ｆ部１１１を共用しているが、実施の形態１及び実施の形態２は、このような例に限定されない。例えば、通信制御部１１２が通信Ｉ／Ｆ部１１１を使用して通信を行い、仮想通信制御部１１４が図示されていない仮想通信Ｉ／Ｆ部を使用して通信を行うようにしてもよい。ここで、仮想通信Ｉ／Ｆ部は、通信Ｉ／Ｆ部１１１と同様に、ネットワークハブ１０１に接続されているものとする。
【符号の説明】
【００９４】
１００，２００  並列計算機システム、  １０１  ネットワークハブ、  １１０，２１０  ノード、  １１１  通信Ｉ／Ｆ部、  １１２  通信制御部、  １１３  データ処理部、  １１４  仮想通信制御部、  １１５，２１５  処理部、  １１６  記憶部、  １１７  通信部、  １１８  仮想通信部、  ２１９  補助記憶部。
【図１】
2019197302.tif 000003
【図２】
2019197302.tif 000004
【図３】
2019197302.tif 000005
【図４】
2019197302.tif 000006
【図５】
2019197302.tif 000007
【図６】
2019197302.tif 000008
【図７】
2019197302.tif 000009
【図８】
2019197302.tif 000010
【図９】
2019197302.tif 000011
【図１０】
2019197302.tif 000012
【図１１】
2019197302.tif 000013
【図１２】
2019197302.tif 000014