(57)【特許請求の範囲】
【請求項１】
複数の送信ノードのうち異常のある送信ノードの個数が３以上である場合に、前記個数に対応する方程式の係数を、前記異常のある送信ノードの状態情報と前記異常のある送信ノードを識別する識別情報とを含む数値に、前記異常のある送信ノードの個数に応じた数の異なる定数を加算した値から演算する演算部と、
前記係数を用いる前記方程式の解から前記数値を抽出する受信ノードに、前記係数を送信する送信部と、を備える
ことを特徴とする演算装置。
【請求項２】
複数の送信ノードのうち異常のある送信ノードの個数が３以上である場合に、前記個数に対応する方程式の係数を、前記異常のある送信ノードの状態情報と前記異常のある送信ノードを識別する識別情報とを含む数値に、前記異常のある送信ノードの個数に応じた数の異なる定数を加算した値から演算し、
前記係数を用いる前記方程式の解から前記数値を抽出する受信ノードに、前記係数を送信する処理を、演算装置に実行させる
ことを特徴とするプログラム。
【請求項３】
演算装置が行う情報処理方法であって、
複数の送信ノードのうち異常のある送信ノードの個数が３以上である場合に、前記個数に対応する方程式の係数を、前記異常のある送信ノードの状態情報と前記異常のある送信ノードを識別する識別情報とを含む数値に、前記異常のある送信ノードの個数に応じた数の異なる定数を加算した値から演算し、
前記係数を用いる前記方程式の解から前記数値を抽出する受信ノードに、前記係数を送信する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードから情報を収集する情報収集システムに関する。
【背景技術】
【０００２】
分散システムでは、複数の送信ノードと、複数の送信ノードを管理するための受信ノードを備える。情報集約型通信を実現する受信ノードは、複数の送信ノードの状態を管理するため、定期的に複数の送信ノードの状態情報を収集する。受信ノードは、複数の送信ノードから定期的に状態情報を受信することで、異常が発生した送信ノードを検知することができる。
【０００３】
データの転送処理を高速化する技術が知られている。並列計算機を構成する各ノードは、まずｎ分割したデータを他のノードに転送し、各ノードは、１／ｎずつのデータを集約して、演算し、次に、複数のノードが、それぞれの演算結果を、集約ノードに転送する。全ノードが、それぞれ分割されたデータの演算を実行するため、高速に転送処理を実現できる（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２４９８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
分散システムにおける受信ノードは、複数の送信ノードの状態を管理するため、定期的に複数の送信ノードの状態情報を収集する。これらの状態情報を一斉に受信する場合、複数の送信ノードの数に応じて、通信データ量が大きくなり、通信時間がかかる。
【０００６】
本発明は１つの側面において、分散システムにおける情報集約型通信において、通信データ量を低減することを目的とする。
【課題を解決するための手段】
【０００７】
演算装置は、演算部と送信部を備える。演算部は、複数の送信ノードのうち異常のある送信ノードの個数が３以上である場合に、前記個数に対応する方程式の係数を、前記異常のある送信ノードの状態情報と前記異常のある送信ノードを識別する識別情報とを含む数値に、前記異常のある送信ノードの個数に応じた数の異なる定数を加算した値から演算する。送信部は、前記係数を用いる前記方程式の解から前記数値を抽出する受信ノードに、前記係数を送信する。
【発明の効果】
【０００８】
本発明によれば、分散システムにおける情報集約型通信において、通信データ量を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る分散システムの例を説明する図である。
【図２】異常のある送信ノードが２以下の場合の分散システムの処理の例を説明する図である。
【図３】異常のある送信ノードが３以上の場合の分散システムの処理の例を説明する図である。
【図４】分散システムの構成の例を説明する図である。
【図５】分散システムに設置される各種装置のハードウェア構成の例を説明する図である。
【図６】受信ノードの処理の例を説明するフローチャートである。
【図７】受信ノードの処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
本発明に係る演算装置は、各送信ノードからの状態情報をリダクション演算と、所定の方程式の根の係数の関係を用いて、通信データ量を低減させることができる。
【００１１】
図１は、本実施形態に係る分散システムの例を説明する図である。分散システム１００は、複数の送信ノード１１０ａ〜１１０ｎ、演算装置１２０、受信ノード１３０を含む。受信ノード１３０は、複数の送信ノード１１０ａ〜１１０ｎを管理するため、複数の送信ノード１１０ａ〜１１０ｎから状態情報を収集する。複数の送信ノード１１０ａ〜１１０ｎの各々は、処理部１１１と送受信部１１２を備える。演算装置１２０は、受信部１２１、演算部１２２、送信部１２３を備える。受信ノード１３０は、抽出部１３１を備える。
【００１２】
処理部１１１は、まず、自送信ノード１１０に異常があるか否かを判定する。その後、送受信部１１２は、送信ノード１１０ａ〜１１０ｎ間で異常があるか否かの情報を共有する。処理部１１１は、自送信ノード１１０を識別する識別情報と状態情報の対を変換して整数（リダクションに用いられる引数）を生成する。送受信部１１２は、整数及び整数を用いた演算命令を演算装置１２０に送信する。
【００１３】
演算装置１２０の受信部１２１は、各送信ノード１１０（１１０ａ〜１１０ｎ）から整数及び演算命令を受信する。演算装置１２０の演算部１２２は、受信した整数（引数）を用いて「方程式」の係数を算出する方法を用いたリダクション処理（演算）を実行する。リダクション処理の結果算出される係数は、識別情報と状態情報の対である整数よりも、データ量が少ない。演算装置１２０の送信部１２３は、算出した係数を受信ノード１３０に送信する。
【００１４】
受信ノード１３０の抽出部１３１は、受信した係数から「方程式」を解き、識別情報と状態情報の対である整数を抽出する。
【００１５】
すると、演算装置１２０から受信ノード１３０に送信される係数は、識別情報と状態情報の対である整数よりもデータ量が少ない。そのため、演算装置１２０は、受信ノード１３０に送信する通信データ量を低減させることができる。
【００１６】
＜異常のある送信ノードが２以下の場合＞
図２は、異常のある送信ノードが２以下の場合の分散システムの処理の例を説明する図である。パラメータ２０１は、送信ノード１１０ａ〜１１０ｎ間で異常があるか否かの情報を共有するために用いられる。パラメータ２０１は、受信ノード１３０にも通知される。複数の送信ノード１１０ａ〜１１０ｎの各々は、引数２０２、引数２０３を演算装置１２０に送信する。表２００は、複数の送信ノード１１０ａ〜１１０ｎに「異常がある」場合と「異常がない」場合の、パラメータ２０１、引数２０２、引数２０３の例である。
【００１７】
パラメータ２０１は、送信ノード１１０が、異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の個数をカウントするために用いられる。異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の処理部１１１は、パラメータ２０１として異常があることを示す「１」を設定する。異常のない送信ノード１１０ａ〜１１０ｎは、パラメータ２０１として異常がないことを示す「０」を設定する。
【００１８】
ここで、送信ノード１１０（１１０ａ〜１１０ｎ）の送受信部１１２は、ノード間でパラメータ２０１を共有する。送信ノード１１０（１１０ａ〜１１０ｎ）の処理部１１１は、異常のある送信ノード１１０の数が２個以下である場合、引数２０２と引数２０３を生成する。
【００１９】
引数２０２は、演算装置１２０の係数（加法）を算出する際に用いられる引数である。異常のない送信ノード１１０の処理部１１１は、引数２０２として異常がないことを示す「０」を設定する。異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の処理部１１１は、エラーコード（状態情報）と異常のある送信ノードを識別する識別情報を対とした情報を引数２０２に設定する。
【００２０】
引数２０３は、演算装置１２０の係数（乗法）を算出する際に用いられる引数である。異常のない送信ノード１１０の処理部１１１は、引数２０３として異常がないことを示す「１」を設定する。異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の処理部１１１は、エラーコード（状態情報）と異常のある送信ノードを識別する識別情報を対とした情報を引数２０３として設定する。
【００２１】
送信ノード１１０の送信部１１２は、異常のある送信ノードの数が２以下であるため、引数２０２と引数２０３、及びこれらの引数を用いた演算命令を演算装置１２０に送信する。
【００２２】
演算装置１２０は、引数２０２、引数２０３を受信すると、「方程式」の係数を算出する方法を用いたリダクション処理を実行する。リダクション処理の例を順に説明する。
【００２３】
送信ノード１１０（１１０ａ〜１１０ｎ）のうち、送信ノード１１０ＸＸの１つに異常があるとする。演算装置１２０の演算部１２２は、異常のある送信ノード１１０が１つの場合、演算部１２２は、異常のある送信ノード１１０ＸＸのエラーコードと識別情報を表す整数を冗長させた、２つの係数とする。
【００２４】
送信ノード１１０（１１０ａ〜１１０ｎ）のうち、送信ノード１１０ＸＸと送信ノード１１０ＹＹの１つに異常があるとする。演算装置１２０の演算部１２２は、異常のある送信ノード１１０ＸＸのエラーコードと識別情報を表す整数を、「α」に設定する。処理部１２２は、異常のある送信ノード１１０ＹＹのエラーコードと識別情報を表す整数を、「β」に設定する。
【００２５】
演算部１２２は、引数２０２と引数２０３に基づいて設定されるαとβから、以下に示す式１、式２を用いて係数Ｖ（１）、Ｖ（２）を算出する。
Ｖ（１）＝α＋β  ・・・式１
Ｖ（２）＝α×β  ・・・式２
【００２６】
演算装置１２０の送信部１２３は、係数Ｖ（１）、係数（Ｖ２）を受信ノード１３０に送信する。
【００２７】
受信ノード１３０の抽出部１３１は、受信した係数Ｖ（１）、Ｖ（２）に基づいて、ｘ２＋Ｖ（１）ｘ＋Ｖ（２）の2次方程式を解くことで、α及びβを抽出できる。α及びβは、夫々がエラーコードと送信ノード１１０の識別情報を含む。そのため、抽出部１３１がαとβを抽出することで、受信ノード１３０は、異常のある送信ノード１１０を特定し、エラーコードを取得できる。
【００２８】
表２１０は、複数の送信ノード１１０ａ〜１１０ｎが送信する引数２０２、引数２０３の例である。なお、送信ノード１１０ＸＸ、送信ノード１１０ＹＹの２つは、異常があるノードである。そのため、演算装置１２０は、送信ノード１１０ＸＸ、送信ノード１１０ＹＹ以外の送信ノードからは、引数２０２に０、引数２０３に１が設定された引数を受信する。
【００２９】
表２１０の例において、演算装置１２０の受信部１２１は、異常のある送信ノード１１０ＸＸから、ｐが設定された引数２０２と引数２０３を受信する。演算装置１２０の受信部１２１は、異常のある送信ノード１１０ＹＹから、ｑが設定された引数２０２と引数２０３を受信する。
【００３０】
演算部１２２は、引数２０２と引数２０３に設定されているｐとｑから、式１、式２を用いて係数Ｖ（１）、Ｖ（２）を算出する。演算装置１２０の送信部１２３は、係数Ｖ（１）、Ｖ（２）を受信ノード１３０に送信する。
【００３１】
受信ノード１３０の抽出部１３１は、受信した係数Ｖ（１）、Ｖ（２）に基づいて、ｘ２＋Ｖ（１）ｘ＋Ｖ（２）の2次方程式を解くことで、ｐ及びｑを抽出できる。具体的には、式３を算出すればよい。
【００３２】
ｘ２＋Ｖ（１）ｘ＋Ｖ（２）＝ｘ２＋（ｐ＋ｑ）ｘ＋（ｐ＊ｑ）＝（Ｘ＋ｐ）（Ｘ＋ｑ）・・・式３
この２次方程式の解を求めることで、受信ノード１３０の抽出部１３１は、エラーコードと識別情報の対であるｐ及びｑを抽出できる。
【００３３】
演算装置１２０から受信ノード１３０に送信される係数は、識別情報と状態情報の対である整数よりもデータ量が少ない。そのため、演算装置１２０は、受信ノード１３０に送信する通信データ量を低減させることができる。
【００３４】
＜異常のある送信ノードが３以上の場合＞
図３は、異常のある送信ノードが３以上の場合の分散システムの処理の例を説明する図である。パラメータ２０１は、送信ノード１１０ａ〜１１０ｎ間で異常があるか否かの情報を共有するために用いられる。パラメータ２０１は、受信ノード１３０にも通知される。異常のある送信ノードが３以上の場合、複数の送信ノード１１０ａ〜１１０ｎの各々は、引数３０２に定数を加算した送信データ（複数個）を演算装置１２０に送信する。表３００は、複数の送信ノード１１０ａ〜１１０ｎに「異常がある」場合と「異常がない」場合の、パラメータ２０１、引数３０２の例である。
【００３５】
パラメータ２０１は、送信ノード１１０が、異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の個数（異常のあるノード数をｋ個とする）をカウントするために用いられる。異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の処理部１１１は、パラメータ２０１として異常があることを示す「１」を設定する。異常のない送信ノード１１０ａ〜１１０ｎは、パラメータ２０１として異常がないことを示す「０」を設定する。
【００３６】
ここで、送信ノード１１０（１１０ａ〜１１０ｎ）の送受信部１１２は、ノード間でパラメータ２０１を共有する。送信ノード１１０（１１０ａ〜１１０ｎ）の処理部１１１は、異常のある送信ノード１１０の数が３個以上である場合、引数３０２に定数を加算した送信データ（複数個）を生成する。
【００３７】
引数３０２は、演算装置１２０の係数（乗法）を算出する際に用いられる引数である。異常のない送信ノード１１０の処理部１１１は、引数３０２として異常がないことを示す「１」を設定する。異常のある送信ノード１１０（１１０ａ〜１１０ｎの何れか）の処理部１１１は、エラーコード（状態情報）と異常のある送信ノードを識別する識別情報を対とした情報（整数）に、ｋ個の異なる定数（０〜（ｋ−１））を加算し、ｋ種類の引数３０２を設定する。
【００３８】
異常のある送信ノード（１１０ａ〜１１０ｎの何れか）の送受信部１１２は、ｋ種類の引数３０２（送信データ）を演算装置１２０に送信する。さらに、処理部１１１は、異常のある送信ノードｋ個から任意のｊ個を選択する。ｊ個は、ｋ個よりも小さい数である。送受信部１１２は、演算装置１２０に、ｊ次方程式に用いられる係数を算出する命令を送信する。
【００３９】
表３１０は、ｋ及びｊを3個とした場合に複数の送信ノード１１０ａ〜１１０ｎから演算装置１２０に送信される送信データ（引数３０２に定数が加算された値）の例である。ここで、送信ノード１１０ＸＸ、送信ノード１１０ＹＹ、送信ノード１１０ＺＺの３つ（ｋ個）は、異常があるノードである。そのため、演算装置１２０は、送信ノード１１０ＸＸ、送信ノード１１０ＹＹ、送信ノードＺＺ以外の送信ノードから、１が設定された引数３０２を受信する。
【００４０】
送信ノード１１０ＸＸ、送信ノード１１０ＹＹ、送信ノードＺＺは、エラーコードと識別情報を対とした情報に異なる定数ｄ、ｅ、ｆを加算した３種の送信データを演算装置１２０に送信する。定数の数は、異常のある送信ノードの数に対応する。
【００４１】
具体的に演算装置１２０は、異常のある送信ノード１１０ＸＸから、引数３０２にｄ、ｅ、ｆが加算された「ｐ＋ｄ」「ｐ＋ｅ」「ｐ＋ｆ」を受信する。ｐは、エラーコードと送信ノード１１０ＸＸの識別情報の対を表す整数である。演算装置１２０は、異常のある送信ノード１１０ＹＹから、引数３０２にｄ、ｅ、ｆが加算された「ｑ＋ｄ」「ｑ＋ｅ」「ｑ＋ｆ」を受信する。ｑは、エラーコードと送信ノード１１０ＹＹの識別情報の対を表す整数である。演算装置１２０は、異常のある送信ノード１１０ＺＺから、引数３０２にｄ、ｅ、ｆを加算した「ｒ＋ｄ」「ｒ＋ｅ」「ｒ＋ｆ」を受信する。ｒは、エラーコードと送信ノード１１０ＺＺの識別情報の対を表す整数である。
【００４２】
演算装置１２０の処理部１２２は、異常のある送信ノードからリダクション処理の引数を受信すると、式４〜式６を用いて係数Ｖ（１）、Ｖ（２）、Ｖ（３）を算出する。この例では、ｊが３個と選択されているため、処理部１２２は、係数を３つ算出する。
【００４３】
Ｖ（１）＝（ｐ＋ｄ）＊（ｑ＋ｄ）＊（ｒ＋ｄ）  ・・・式４
Ｖ（２）＝（ｐ＋ｅ）＊（ｑ＋ｅ）＊（ｒ＋ｅ）  ・・・式５
Ｖ（３）＝（ｐ＋ｆ）＊（ｑ＋ｆ）＊（ｒ＋ｆ）  ・・・式６
その後、送信部１２３は、算出した係数を、受信ノード１３０に送信する。
【００４４】
受信ノード１３０の抽出部１３１は、受信した係数Ｖ（１）〜Ｖ（３）に基づいて、ｐ、ｑ、ｒを抽出する。式4〜式６は、例えば、Ｐ（ｄ）＝Ｖ（１）、Ｐ（ｅ）＝Ｖ（２）、Ｐ（ｆ）＝Ｖ（３）と仮定した場合、式７に置き換えることができる。
【００４５】
Ｐ（ｘ）＝（ｘ＋ｐ）＊（ｘ＋ｑ）＊（ｘ＋ｒ）
＝ｘ３＋（ｐ＋ｑ＋ｒ）ｘ２＋（ｐｑ＋ｑｒ＋ｒｐ）ｘ＋ｐ＊ｑ＊ｒ
＝ｘ３＋Ａｘ２＋Ｂｘ＋Ｃ  ・・・式７
ここで、式７では、ｐ＋ｑ＋ｒをＡとし、ｐｑ＋ｑｒ＋ｒｐをＢとし、ｐ＊ｑ＊ｒをＣとしている。ここで、式７のｘに、ｄ、ｅ、ｆを代入すると、式８〜式１０となる。
【００４６】
Ｐ（ｄ）＝ｄ３＋Ａｄ２＋Ｂｄ＋Ｃ＝Ｖ（１）  ・・・式８
Ｐ（ｅ）＝ｅ３＋Ａｅ２＋Ｂｅ＋Ｃ＝Ｖ（２）  ・・・式９
Ｐ（ｆ）＝ｆ３＋Ａｆ２＋Ｂｆ＋Ｃ＝Ｖ（３）  ・・・式１０
【００４７】
次に、式８〜１０におけるＡ〜Ｃを未知数とする３元連立方程式として解く。式８〜１０内の定数項を右辺に移項した式は、式１１〜式１３のようになる。
【００４８】
Ａｄ２＋Ｂｄ＋Ｃ＝Ｖ（１）―ｄ３  ・・・式１１
Ａｅ２＋Ｂｅ＋Ｃ＝Ｖ（２）―ｅ３  ・・・式１２
Ａｆ２＋Ｂｆ＋Ｃ＝Ｖ（３）―ｆ３  ・・・式１３
式１１〜式１３を行列ベクトルとすると、式１４、式１５となる。
【数１４】
0006597231.tif 000002
【００４９】
【数１５】
0006597231.tif 000003
【００５０】
ここで、ｄ、ｅ、ｆが全て異なることから、行列式は０とならないことが、行列式の基本性質で知られている。行列の基本性質は、ある列に他の列の定数倍を加えても値が変わらない事、及び、１つの列を定数倍すると値が定数倍されることである。
【数１６】
0006597231.tif 000004
【００５１】
こうして求められたＰ（ｘ）を０とすることで、（−ｐ）、（−ｑ）、（−ｒ）が根として求められる。そのため、受信ノード１３０の抽出部１３１は、ｐ、ｑ、ｒを抽出できる。
【００５２】
なお、ｊが4以下であれば、ｊ次方程式は、根の公式で解くことができる。ｊが５以上の場合は、数値的に解くことができる。
【００５３】
演算装置１２０から受信ノード１３０に送信される係数は、識別情報と状態情報の対である整数よりもデータ量が少ない。そのため、分散システムにおけるは、演算装置１２０と受信ノード１３０間の通信データ量を低減させることができる。
【００５４】
図４は、分散システムの構成の例を説明する図である。分散システム１００において、送信ノード１１０ａ〜１１０ｆと受信ノード１３０が、スイッチまたはルータである中継装置４０１と通信線４０２を含むネットワークにより相互接続されている。更に、分散システム１００は、リダクション機能を備えた独立筐体型のノード間演算装置４０３がノード外の中継装置４０１に接続される。
【００５５】
なお、図４は、分散システム１００の例示であり、このシステムに含まれる送信ノード１１０（１１０ａ〜１１０ｎ）、中継装置４０１、独立筐体型のノード間演算装置４０３の数は、任意であってよい。送信ノード１１０（１１０ａ〜１１０ｎ）は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）１１０−１、メモリ１１０−２、およびネットワーク・インターフェースであるＮｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ（ＮＩＣ）１１０−３を備える。メモリ１１０−２は、各送信ノード１１０の識別情報及び状態情報が記憶する。また、受信ノード１３０は、ＣＰＵ１３０−１、メモリ１３０−２、およびＮＩＣ１３０−３を備える。メモリ１３０−２は、受信したリダクション結果の係数及び、該係数から抽出された状態情報及び識別情報を記憶する。
【００５６】
本実施形態では、リダクション処理を、送信ノード１１０のＣＰＵ１１０−１や受信ノード１３０のＣＰＵ１３０−１ではなく、Ａｔｏｍｉｃ  Ｏｐｅｒａｔｉｏｎやネットワークのリダクション機能等のノード間演算装置４０３を用いて実現する。
【００５７】
ノード間演算装置４０３が実現するリダクションの機能は、例えば、ＭｅｓｓａｇｅＰａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＭＰＩ）規格でＭＰＩ  Ｒｅｄｕｃｅという名のＡＰＩで定義される処理を指し、個別のデータを指定した２項演算の反復により演算前と同じ型の１つのデータに縮約することを指す。例えば、指定する２項演算が加法であれば、対応するリダクションの結果は、全ノードのデータの総和となる。ＭＰＩ規格では、ＭＰＩ  Ｒｅｄｕｃｅによるリダクションで指定可能な演算として、加法以外にも乗法、ｂｉｔｗｉｓｅ  ｏｒ、「最大値と場所の対」等を指定するマクロが定義されている。
【００５８】
分散システム１００の環境における上記のリダクションの性能は、ノード間の通信時間によって決まり、演算の所要時間は、無視できる割合になる。しかしながら、システム規模の増大に伴って、リダクションは、入力情報を持つ全ノード間での、複数段階の中継動作を伴う処理になり得る。
【００５９】
ノード間の通信時間の相当部分は、ネットワーク装置の主記憶装置へのアクセスオーバヘッド、すなわち、ＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）バスをデータが通過する時間と、ＩＯ処理を制御し演算を行うためのＣＰＵ時間である。ＣＰＵ上で演算を行うためには、まずメモリに格納された演算対象のデータをＣＰＵに取り込む必要があり、演算結果をメモリに再び格納する必要がある。さらに、ネットワーク上で複数段の中継処理をしながらリダクションの演算をＣＰＵ上で行う場合には、ＩＯバスとメモリバスをデータが各段の中継について２回通過することになる。これに対し、ノード間演算機能を有するネットワーク装置の内部で演算が行われれば、ＩＯバスとメモリバスをデータが通過することによるオーバヘッドは削減され、リダクション性能は、大幅に向上する。
【００６０】
図５は、分散システムに設置される各種装置のハードウェア構成の例を説明する図である。送信ノード１１０と受信ノード１３０は、プロセッサ１１、メモリ１２、バス１５、外部記憶装置１６、ネットワーク接続装置１９を備える。さらにオプションとして、送信ノード１１０と受信ノード１３０は、入力装置１３、出力装置１４、媒体駆動装置１７を備えても良い。送信ノード１１０と受信ノード１３０は、例えば、コンピュータなどで実現されることがある。
【００６１】
プロセッサ１１は、ＣＰＵを含む任意の処理回路とすることができる。送信ノード１１０におけるプロセッサ１１は、図４のＣＰＵ１１０−１であり、図１の処理部１１１として動作する。受信ノード１３０におけるプロセッサ１１は、図４のＣＰＵ１３０−１であり、図１の抽出部１３１として動作する。なお、プロセッサ１１は、例えば、外部記憶装置１６に記憶されたプログラムを実行することができる。
【００６２】
送信ノード１１０におけるメモリ１２は、メモリ１１０−２である。受信ノード１３０におけるメモリ１２は、メモリ１３０−２である。さらに、メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。
【００６３】
送信ノード１１０におけるネットワーク接続装置１９は、図４のＮＩＣ１１０−３であり、図１の送受信部１１２として動作する。受信ノード１３０におけるネットワーク接続装置１９は、図４のＮＩＣ１３０−３である。ネットワーク接続装置１９は、他の装置との通信に使用され動作する。入力装置１３は、例えば、ボタン、キーボード、マウス等として実現され、出力装置１４は、ディスプレイなどとして実現される。バス１５は、プロセッサ１１、メモリ１２、入力装置１３、出力装置１４、外部記憶装置１６、媒体駆動装置１７、ネットワーク接続装置１９の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置１６は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１１などに提供する。媒体駆動装置１７は、メモリ１２や外部記憶装置１６のデータを可搬記憶媒体１８に出力することができ、また、可搬記憶媒体１８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１８は、フロッピイディスク、Ｍａｇｎｅｔ-Ｏｐｔｉｃａｌ（ＭＯ）ディスク、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００６４】
ここで、ノード間演算装置４０３のハードウェア構成の例についても説明する。ノード間演算装置４０３は、プロセッサ１１、メモリ１２及びネットワーク接続装置１９を備える。プロセッサ１１は、演算部１２２として動作する。メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１９は、受信部１２１、送信部１２２として動作し、他の装置との通信に使用され動作する。
【００６５】
図６は、送信ノードの処理の例を説明するフローチャートである。送信ノード１１０の処理部１１１は、自送信ノード１１０で異常があるか否かを判定する（ステップＳ１０１）。送信ノード１１０に異常がある場合（ステップＳ１０１でＹＥＳ）、処理部１１１は、パラメータ２０１に０を設定する（ステップＳ１０２）。処理部１１１は、引数２０２にエラーコードと自送信ノード１１０の識別情報を対応づけた整数を設定する（ステップＳ１０３）。処理部１１１は、引数２０３と引数３０２にエラーコードと自送信ノード１１０の識別情報を対応づけた整数を設定する（ステップＳ１０４）。
【００６６】
一方、送信ノード１１０に異常がない場合（ステップＳ１０１でＮＯ）、処理部１１１は、パラメータ２０１に１を設定する（ステップＳ１０５）。処理部１１１は、引数２０２に０を設定する（ステップＳ１０６）。処理部１１１は、引数２０３と引数３０２に０を設定する（ステップＳ１０７）。
【００６７】
送受信部１１２は、パラメータ２０１をＡＰＩコマンドであるMPI_Allrecudeで全送信ノードに送信し、併せて他の送信ノード１１０のパラメータ２０１を受信する（ステップＳ１０８）。処理部１１１は、パラメータ２０１に基づいて、異常のある送信ノード１１０の個数が２個以下であるか否かを判定する（ステップＳ１０９）。
【００６８】
異常のある送信ノード１１０が2個以下である場合（ステップＳ１０９でＹＥＳ）、処理部１１１は、引数２０２を用いたＭＰＩ＿Ｒｅｄｕｃｅを実行する（ステップＳ１１０）。ステップＳ１１０の処理で引数２０２が演算装置１２０に送信され、演算装置１２０は、加法（式１）によるリダクション処理を実行し、演算結果の係数を受信ノード１３０に送信する。続いて、処理部１１１は、引数２０３を用いたＭＰＩ＿Ｒｅｄｕｃｅを実行する（ステップＳ１１１）。ステップＳ１１１の処理で引数２０３が演算装置１２０に送信され、演算装置１２０は、乗法（式２）によるリダクション処理を実行し、演算結果の係数を受信ノード１３０に送信する。ステップＳ１１１が終了すると、処理部１１１は、異常を通知する処理を終了する。
【００６９】
異常のある送信ノード１１０が3個以上である場合（ステップＳ１０９でＮＯ）、処理部１１１は、引数３０２に定数を加算する（ステップＳ１１２）。処理部１１１は、引数３０２に定数を加算した値を用いたＭＰＩ＿Ｒｅｄｕｃｅを実行する（ステップＳ１１３）。ステップＳ１１３の処理で引数３０２に定数を加算した値が演算装置１２０に送信され、演算装置１２０は、乗法（式４〜６など）によるリダクション処理を実行し、演算結果の係数を受信ノード１３０に送信する。処理部１１１は、異常のある送信ノードの数だけ、ステップＳ１１２とステップＳ１１３の処理を実行したか否かを判定する（ステップＳ１１４）。異常のある送信ノードの数だけ処理が完了していない場合（ステップＳ１１４でＮＯ）、処理部１１１は、ステップＳ１１２から処理を繰り返す。異常のある送信ノードの数分のステップＳ１１２とＳ１１３の処理を実行している場合（ステップＳ１１４でＹＥＳ）、処理部１１１は、異常を通知する処理を終了する。
【００７０】
図７は、受信ノードの処理の例を説明するフローチャートである。抽出部１３１は、パラメータ２０１をＡＰＩコマンドであるMPI_Allrecudeで全送信ノードに送信し、併せて他の送信ノード１１０のパラメータ２０１を受信する（ステップＳ２０１）。抽出部１３１は、ＭＰＩ＿Ｒｅｄｕｃｅを実行し、乗法によるリダクションの結果を整数で取得する（ステップＳ２０２）。抽出部１３１は、異常のある送信ノード１１０の数分の整数（係数）を取得したか否かを判定する（ステップＳ２０３）。異常のある送信ノード１１０の数分の整数（係数）を取得していない場合（ステップＳ２０３でＮＯ）、抽出部１３１は、処理をステップＳ２０２から繰り返す。
【００７１】
異常のある送信ノード１１０の数分の整数（係数）を取得済みの場合（ステップＳ２０３でＹＥＳ）、抽出部１３１は、異常のある送信ノードの数が２以下か否かを判定する（ステップＳ２０４）。異常のある送信ノードの数が２以下でない場合（ステップＳ２０４でＮＯ）、抽出部１３１は、係数の値（Ｎ個）を用いた方程式の解からエラーコードと識別情報の対を表す整数を抽出する（ステップＳ２０５）。
【００７２】
異常のある送信ノードの数が２以下である場合（ステップＳ２０４でＹＥＳ）、抽出部１３１は、係数の値１と係数の値２が同じ値であるか否かを判定する（ステップＳ２０６）。係数の値１と値２が同じ値でない場合（ステップＳ２０６でＮＯ）、抽出部１３１は、異常のある送信ノードが２つあると判定し、係数の値１と値２を用いた2次方程式の解からエラーコードと識別情報の対を表す整数を抽出する（ステップＳ２０７）。係数の値１と値２が同じ値である場合（ステップステップＳ２０６でＹＥＳ）、ステップＳ２０５、ステップ２０７が終了すると、抽出部１３１は、整数からエラーコードと識別情報を抽出する（ステップＳ２０８）。
【００７３】
なお、値１と値２が同じ値である場合（ステップＳ２０６でＹＥＳ）は、異常のある送信ノードが１つの場合であるため、係数の値１及び値２のそれ自体が、エラーコード及び識別情報である。
【００７４】
演算装置１２０から受信ノード１３０に送信される係数は、識別情報と状態情報の対である整数よりもデータ量が少ない。そのため、分散システムにおけるは、演算装置１２０と受信ノード１３０間の通信データ量を低減させることができる。
【符号の説明】
【００７５】
１１０ａ〜１１０ｎ  送信ノード
１２０  並列演算装置
１２１  受信部
１２２  処理部
１２３  送信部
１３０  受信ノード
１３１  抽出部
【図１】
0006597231.tif 000005
【図２】
0006597231.tif 000006
【図３】
0006597231.tif 000007
【図４】
0006597231.tif 000008
【図５】
0006597231.tif 000009
【図６】
0006597231.tif 000010
【図７】
0006597231.tif 000011