(57)【要約】      （修正有）【課題】並列数を増やした場合でも、演算精度が向上し、反復回数の増加を抑えることにより高速な計算が可能とする。【解決手段】代数的マルチグリッド法による演算並列処理で、Ｃ点又はＦ点を決定する際に、行列データを一部重なるように分割した分割行列データを生成し、分割行列データを各ノードに送信し、ノード毎に、分割行列データから評価値行列データを生成し、ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、ノード毎に、受信した重なり部分の要素を評価値行列データの要素に加算して加算評価データを算出し、ノード毎に、加算評価データを互いに接続している各ノードに送信し、ノード毎に、受信した加算評価データを評価値行列データに入力し、ノード毎に、更新した評価値行列データを基にＣ点又はＦ点を算出する。【選択図】図１０
2018206076.tif 000002
【特許請求の範囲】
【請求項１】
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列処理装置において、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成する部分領域の評価値算出処理部と、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力する評価値更新処理部と、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出する部分領域のＣＦ設定部と、
を有することを特徴とする並列処理装置。
【請求項２】
前記並列処理装置は更に、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードに送信し、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードから受信し、
ノード毎に、受信した前記Ｃ点又はＦ点の情報に対応するＣ点又はＦ点で前記重なり部分の要素におけるＣ点又はＦ点を更新するＣＦ更新処理部を有する請求項１に記載の並列処理装置。
【請求項３】
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列演算方法において、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力し、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出することを特徴とする並列演算方法。
【請求項４】
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列演算プログラムにおいて、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力し、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出する、
処理をコンピュータに実行させることを特徴とする並列演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置、並列演算方法、及び並列演算プログラムに関する。
【背景技術】
【０００２】
有限要素法や有限体積法などの手法を用いて流体解析や電磁場解析を行う場合、その多くが連立一次方程式を解く問題に帰着する。連立一次方程式を数値的に解く際に、共役勾配法（ｃｏｎｊｕｇａｔｅ  ｇｒａｄｉｅｎｔ  ｍｅｔｈｏｄ；ＣＧ法）などの非定常反復法が用いられることが多い。
【０００３】
ところが、連立一次方程式を表す係数行列の性質によっては、ＣＧ法をそのまま適用しただけでは、解を得るまでの反復回数が多くなってしまうことや、場合によっては解が得られないこともある。このような場合、係数行列に対して前処理を施すことによって解の収束性を改善できることが知られている。
【０００４】
前処理の一つとして、係数行列の構造及び性質を用いて階層的に計算格子を粗視化し、各階層で収束性を悪化させる誤差成分を除去する処理（スムージング）を施す代数的マルチグリッド（Ａｌｇｅｂｒａｉｃ  Ｍｕｌｔｉｇｒｉｄ；ＡＭＧ）法がある（例えば、非特許文献１参照）。このＡＭＧ法は、現在最も優れた、即ち、解の収束性改善効果が高い前処理として知られている。
【０００５】
ＡＭＧ法の概要について図１及び図２に示す。
図１に示す計算モデルの計算メッシュの頂点（格子点）を階層的に粗くする。即ち、格子点を間引いた空間で、階層ごとに連立一次方程式をガウスザイデル法などで解くことにより、反復法の収束性を改善することがＡＭＧ法の目的である。
具体的には、図２に示すように、レベル０→レベル１→レベル２→レベル３と階層的にスムージングを行い、逆をたどって、レベル３→レベル２→レベル１→レベル０とスムージングを行う。このため、次階層に残すＣ点の選択と、逆にたどる場合のＣ点からＦ点を復元するための補間行列が必要となる。なお、次の階層に残す格子点をＣ点、間引かれる格子点をＦ点と呼ぶ。
ＡＭＧ法では、複数のサイズの格子を併用してあらゆる波長の誤差成分を迅速に減少させることができるので、計算精度及び収束性が向上する。
【０００６】
一方、計算で取り扱う計算モデルが大きくなると、単体の計算機ではメモリ容量の不足により、計算することができない。そのため、計算モデルを複数の領域に分割し、その各領域を複数の計算機に割り当てて並列に計算することが求められる。
複数の計算機におけるそれぞれのメモリを利用する並列計算は、分散メモリ型並列計算と呼ばれる。
分散メモリ型並列計算を行う場合、図３に示すように、計算メッシュを領域０、領域１、領域２、及び領域３に分割し、それぞれの領域を担当する計算機（プロセス）に割り当てる。
分散メモリ型並列計算の場合、ＡＭＧ法の階層構造は、それぞれの領域ごとに生成することになる。
【０００７】
分散メモリ型並列計算におけるＡＭＧ法の階層生成の従来の技術は、分割された領域の情報のみを用いる、つまり領域の境界での格子点間の接続関係を考慮することなく階層構造を生成している（例えば、非特許文献２参照）。
即ち、図３の網掛けの部分で示す領域の境界部分は、本来は隣接する領域の格子点の接続関係まで考慮してＣ点又はＦ点の設定を行うべきであるが、従来の技術はそのような手段になっていない。
例えば、図４に示す領域０においては、黒塗りの格子点が領域１、領域２、及び領域３との境界部分になる。この黒塗りの領域を「袖領域」と言い、袖領域の格子点が本来属している領域をその格子点の「主担当領域」と言う。
【０００８】
本来、ＡＭＧ法は、計算モデル全体の係数行列が表す格子点間の接続関係を用いてＣ点又はＦ点の設定、補間行列生成、及び次階層の係数行列生成の階層化処理を行う。各階層に特有な誤差成分を、スムージングを行い除去することにより、連立一次方程式の解の収束性の改善を図るものである。
従来手法は、袖領域での格子点間の接続関係を考慮せずＣ点又はＦ点の設定を行うため、その後の補間行列生成、及び次階層の係数行列生成処理において、本来の計算モデル全体の情報が反映されなくなる。このことは、領域を分割して並列計算を実行する場合に演算精度及び解の収束性を悪化させる原因となる。
更に、分割数の増加、即ち、並列数が増加するにつれて、分割された領域は全体から見て小さくなっていくため、前述の演算精度及び解の収束性の悪化傾向は一層顕著に表れる。一方、計算モデル全体の情報をすべてのプロセスで保持することは、前述したようにメモリ容量の観点から現実的ではない。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Ｋ．Ｓｔｕｂｅｎ，“Ａｌｇｅｂｒａｉｃ  Ｍｕｌｔｉｇｒｉｄ  （ＡＭＧ）：  Ａｎ  Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｗｉｔｈ  Ａｐｐｌｉｃａｔｉｏｎｓ”，ＧＭＤ−Ｒｅｐｏｒｔ  ７０，Ｎｏｖｅｍｂｅｒ  １０，１９９９，［ｏｎｌｉｎｅ］，＜ｈｔｔｐｓ：／／ｗｗｗ．ｓｃａｉ．ｆｒａｕｎｈｏｆｅｒ．ｄｅ／ｃｏｎｔｅｎｔ／ｄａｍ／ｓｃａｉ／ｄｅ／ｄｏｃｕｍｅｎｔｓ／ＡｌｌｇｅｍｅｉｎｅＤｏｋｕｍｅｎｔｅｎｓａｍｍｌｕｎｇ／Ｓｃｈｎｅｌｌｅｏｅｓｔｅｒ／ＳＡＭＧ／ＡＭＧ＿Ｉｎｔｒｏｄｕｃｔｉｏｎ．ｐｄｆ＞
【非特許文献２】Ｄａｖｉｄ  Ｍ．Ａｌｂｅｒ  ａｎｄ  Ｌｕｋｅ  Ｎ．Ｏｌｓｏｎ，  Ｎｕｍｅｒ．Ｌｉｎｅａｒ  Ａｌｇｅｂｒａ  Ａｐｐｌ．，２００７，１４，６１１−６４３
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、並列でＡＭＧ法の階層構造を生成していく場合、各領域のＣ点とＦ点を計算モデル全体の係数行列と矛盾しないように設定することが、演算精度を向上させると共に、解の収束性を保ち、解を得るまでの反復回数を増加させないためには重要である。
【００１１】
一つの側面では、並列数を増やした場合でも、演算精度が向上し、反復回数の増加を抑えることにより高速な計算が可能となる並列処理装置、並列演算方法、及び並列演算プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
一つの実施態様では、代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、行列データを一部重なるように分割した分割行列データを生成する並列処理装置において、
分割行列データを各ノードに送信し、ノード毎に、分割行列データから評価値行列データを生成する部分領域の評価値算出処理部と、
ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した重なり部分の要素を評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した加算評価データを評価値行列データに入力する評価値更新処理部と、
ノード毎に、更新した評価値行列データを基にＣ点又はＦ点を算出する部分領域のＣＦ設定部と、を有する並列処理装置である。
【発明の効果】
【００１３】
一つの側面では、並列数を増やした場合でも、演算精度が向上し、反復回数の増加を抑えることにより高速な計算が可能となる並列処理装置、並列演算方法、及び並列演算プログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、代数的マルチグリッド（ＡＭＧ）法の概要の一例を示す図である。
【図２】図２は、ＡＭＧ法の概要の処理の流れの一例を示す図である。
【図３】図３は、分散メモリ型並列計算における計算モデルを表す計算メッシュの分割の一例を示す図である。
【図４】図４は、図３における領域０の拡大図である。
【図５】図５は、ＡＭＧ法の処理の流れの一例を示すフローチャートである。
【図６】図６は、ＡＭＧ法における粗視化処理部の処理の一例を示すブロック図である。
【図７】図７は、粗視化処理部における評価値λの算出処理の流れの一例を示すフローチャートである。
【図８】図８は、ＣＦ設定部における処理の流れの一例を示すフローチャートである。
【図９】図９は、本発明の並列処理装置のハードウェア構成の一例を示す図である。
【図１０】図１０は、並列粗視化処理部における処理の一例を示すブロック図である。
【図１１】図１１は、１２個の計算メッシュを２プロセスで分割する場合の一例を示す模式図である。
【図１２】図１２は、図１１で分割された計算メッシュから、プロセス０及びプロセス１で生成した係数行列の一例を示す図である。
【図１３】図１３は、図１２のプロセス０とプロセス１のテーブルの一例を示す図である。
【図１４】図１４は、評価値更新処理部における処理の一例を示す図である。
【図１５】図１５は、袖領域の評価値λの送受信処理（Ａ１）の一例を示す図である。
【図１６】図１６は、評価値λの足し合わせ処理（Ａ２）の一例を示す図である。
【図１７】図１７は、足し合わせた評価値λの送受信処理（Ａ３）の一例を示す図である。
【図１８】図１８は、評価値λ更新処理（Ａ４）の一例を示す図である。
【図１９】図１９は、各点のＣＦ設定処理の一例を示す図である。
【図２０】図２０は、評価値更新処理部における処理の流れの一例を示すフローチャートである。
【図２１】図２１は、ＣＦ更新処理部における処理の一例を示すブロック図である。
【図２２】図２２は、ＣＦ更新処理部における袖領域のグローバル番号の送受信処理（Ｂ１）の一例を示す図である。
【図２３】図２３は、ＣＦ更新処理部におけるＣ点又はＦ点の設定の送り返し処理（Ｂ２）の一例を示す図である。
【図２４】図２４は、ＣＦ更新処理部におけるＣＦ設定更新処理（Ｂ３）の一例を示す図である。
【図２５】図２５は、ＣＦ更新処理部における処理の流れの一例を示すフローチャートである。
【図２６】図２６は、本発明と従来手法とのＣ点又はＦ点の設定の差異の一例を示す図である。
【図２７】図２７は、本発明による袖領域のＣ点又はＦ点の設定の一例を示す図である。
【図２８】図２８は、従来手法による袖領域のＣ点又はＦ点の設定の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態について説明するが、本発明は、これらの実施形態に何ら限定されるものではない。
【００１６】
本発明の並列処理装置は、代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、行列データを一部重なるように分割した分割行列データを生成する並列処理装置において、並列粗視化処理部としての部分領域の評価値算出処理部と、評価値更新処理部と、部分領域のＣＦ設定部とを有し、ＣＦ更新処理部を有することが好ましく、更に必要に応じてその他の部を有する。
【００１７】
＜代数的マルチグリッド法＞
代数的マルチグリッド法（ＡＭＧ法）は、ａｌｇｅｂｒａｉｃ（代数的）という通り、係数行列の性質及び構造を用いて階層的に計算格子を粗視化し、各階層で収束性を悪化させる誤差成分を除去する処理である。係数行列は、格子点間の接続関係を表している。
ＡＭＧ法では、設定したＣ点又はＦ点を元にしてＣ点からＦ点を復元する補間行列Ｐと次階層の係数行列Ａを生成する。
ＡＭＧ法の演算精度及び収束性に直接関係するため、Ｃ点又はＦ点の設定（並列粗視化処理）が重要である。即ち、次階層に残すＣ点と、間引くＦ点とを決めると、Ｃ点からＦ点を復元する補間行列Ｐが生成でき、補間行列Ｐから次階層の係数行列Ａが生成される。
Ｃ点とＦ点を適切に設定すれば、Ｆ点を復元するための補間行列が生成される。続いて、次階層の係数行列を生成することができる。
【００１８】
ここで、図５は、ＡＭＧ法の処理の流れの一例を示すフローチャートである。
ステップＳ１では、並列処理装置は、計算モデルを離散化することで得られる係数行列Ａを入力として、ｎ＝０に設定すると、処理をＳ２に移行する。
【００１９】
ステップＳ２では、粗視化処理部１０は、階層ごとの格子点を設定（Ｃ点又はＦ点を設定）すると、処理をＳ３に移行する。
【００２０】
ステップＳ３では、粗視化処理部１０は、各階層の補間行列Ｐｎ（レベルｎからレベルｎ−１の格子点を復元する行列）、及び係数行列Ａを生成すると、処理をＳ４に移行する。
【００２１】
ステップＳ４では、粗視化処理部１０は、次階層の係数行列Ａｎ＋１が、補間行列Ｐｎとその転置行列ＴＰ及び現階層の係数行列Ａｎから、行列積ＴＰｎＡｎＰｎとして算出されると、処理をＳ５に移行する。
【００２２】
ステップＳ５では、粗視化処理部１０は、ｎ＝ｎｍａｘ又はＡｎ＋１の次元＜Ｎｍｉｎを満たさない場合には、ｎ＝ｎ＋１とし、処理をＳ２に移行する。一方、粗視化処理部１０は、ｎ＝ｎｍａｘ又はＡｎ＋１の次元＜Ｎｍｉｎを満たすと、本処理を終了する。即ち、粗視化処理部１０は、これら一連の処理を、あらかじめ決めた階層数まで、又は係数行列の行数が決められた数になるまで繰り返し実行する。粗視化処理部１０は、階層数や係数行列の最小行数は任意に決めることができる。また、粗視化処理部１０は、次階層に残すＣ点が取られなくなるまで続けてもよい。
【００２３】
計算モデルデータから係数行列を並列に生成する処理、補間行列Ｐｎの生成処理、及び次階層の係数行列Ａｎ＋１の生成処理は、既存の手段を用いて実行することができる。
【００２４】
次に、図６は、ＡＭＧ法における粗視化処理部の処理の一例を示すブロック図である。
入力としては、各階層の係数行列Ａが用いられる。
粗視化処理部１０は、Ｃ点とＦ点を決めるために必要な評価値λの算出を行う評価値算出処理部１１と、それに基づいて格子点であるＣ点又はＦ点の設定を行うＣＦ設定部１２とを有している。
出力としては、Ｃ点又はＦ点が設定される。
【００２５】
ここで、図７は、評価値算出処理部１１の処理の流れの一例を示すフローチャートである。以下、図６を参照して、評価値λの算出処理の流れについて説明する。
【００２６】
ステップＳ１１では、評価値算出処理部１１は、各階層の係数行列Ａ（ｉ＝０、λｉ＝０（ｉ＝０、・・・、Ｎ−１））が入力されると、処理をＳ１２に移行する。
【００２７】
ステップＳ１２では、評価値算出処理部１１は、係数行列Ａの要素ａｉｊから点ｉと点ｊが強い接続関係を持つか否かを判定し、係数行列のｉ行目の非ゼロ要素のうち、絶対値が最大となる要素ａｉ，ｍａｘ（ｉ≠ｊ）を抽出すると、処理をＳ１３に移行する。
【００２８】
ステップＳ１３では、評価値算出処理部１１は、要素ａｉｊ（ｉ≠ｊ）の絶対値が、最大の絶対値を持つ要素ａｉ，ｍａｘに閾値εを乗じた値よりも大きければ、即ち、｜ａｉｊ｜（ｉ≠ｊ）≧ε＊｜ａｉ，ｍａｘ｜ならば、λｊ＝λｊ＋１とすると、処理をＳ１４に移行する。
閾値εは０＜ε＜１の定数であり、閾値ε＝０．２５が用いられることが多いが、閾値εは利用者が任意に決定してもよい。
【００２９】
ステップＳ１４では、評価値算出処理部１１は、ｉがＮより小さいか否かを判定する。評価値算出処理部１１は、ｉがＮよりも小さいと判定すると、ｉ＝ｉ＋１とし、処理をＳ１２に戻す。一方、評価値算出処理部１１は、ｉがＮ以上と判定すると、本処理を終了する。
格子点が強く接続する格子点の数が評価値λであり、この評価値λの値を用いて続く、Ｃ点又はＦ点の設定処理を行う。
【００３０】
次に、図８は、ＣＦ設定部１２におけるＣ点又はＦ点の設定処理の流れの一例を示すフローチャートである。以下、図６を参照して、ＣＦ設定部１２におけるＣ点又はＦ点の設定処理の流れについて説明する。
【００３１】
ステップＳ２１では、ＣＦ設定部１２は、評価値λの最大値λｍａｘを決定すると、処理をＳ２２に移行する。
【００３２】
ステップＳ２２では、ＣＦ設定部１２は、評価値λの最大値λｍａｘが０より小さいか否かを判定する。ＣＦ設定部１２は、最大値λｍａｘが０より大きいと判定すると、処理をＳ２３に移行する。一方、ＣＦ設定部１２は、最大値λｍａｘが０より小さいと判定すると、本処理を終了する。即ち、すべての格子点がＣ点又はＦ点に設定されると、粗視化処理は完了する。
【００３３】
ステップＳ２３では、ＣＦ設定部１２は、λｉ＝０、・・・、Ｎ−１でλｉ＝λｍａｘとなる点ｉｍａｘをＣ点に設定する。即ち、ＣＦ設定部１２は、格子点ｊの評価値λｊが最大となる点をＣ点に設定すると、処理をＳ２４に移行する。
【００３４】
ステップＳ２４では、ＣＦ設定部１２は、ａｊｉｍａｘ（ｊ＝０、・・・、Ｎ−１）がゼロでなければ、点ｊをＦ点とする。即ち、ＣＦ設定部１２は、Ｃ点が接続している点をＦ点とし、λｊ＝λｊ＋１とすると、処理をＳ２５に移行する。
【００３５】
ステップＳ２５では、ＣＦ設定部１２は、ａｉｍａｘｊ（ｊ＝０、・・・、Ｎ−１）がゼロでなければ、λｊ＝λｊ−１とすると、処理をＳ２１に移行する。
【００３６】
なお、ＣＦ設定部１２における、Ｃ点とＦ点の取り方には任意性がある。即ち、ＣＦ設定部１２は、評価値λが最大の格子点をＣ点と設定するわけであるが、評価値λが最大となる点が複数ある場合、格子点番号が最も若い点をＣ点と取ることが多い。
しかし、ＣＦ設定部１２は、例えば、格子点番号が後ろのものからＣ点とすることも可能であり、この場合、上記とは異なるＣ点とＦ点が設定されることもありうる。
【００３７】
＜部分領域の評価値算出処理部＞
部分領域の評価値算出処理部は、分割行列データを各ノードに送信し、ノード毎に、分割行列データから評価値行列データを生成する。
部分領域の評価値算出処理部は、図７に示す評価値算出処理部１１の処理と、並列処理を行う以外は同様である。
【００３８】
＜評価値更新処理部＞
評価値更新処理部は、ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、評価値行列データの重なり部分の要素を互いに接続している各ノードから受信する。
ノード毎に、受信した重なり部分の要素を評価値行列データの要素に加算して加算評価データを算出し、ノード毎に、加算評価データを互いに接続している各ノードに送信し、ノード毎に、受信した加算評価データを評価値行列データに入力する。
「互いに接続している」とは、行列データを一部重なるように分割した分割行列データにおいて、分割行列データ間の接続関係を考慮することを意味する。
評価値更新処理部により得られる評価値λは、隣接する各領域の重なり部分の行列要素の接続関係を考慮した値となっているため、各プロセスで並列に実行しても、全体でＣ点又はＦ点の設定をした場合と矛盾しない。
【００３９】
＜部分領域のＣＦ設定部＞
部分領域のＣＦ設定部は、ノード毎に、更新した評価値行列データを基にＣ点又はＦ点を算出する。
部分領域のＣＦ設定部は、図８に示すＣＦ設定部１２における処理と、並列処理を行う以外は同様である。
【００４０】
＜ＣＦ更新処理部＞
袖領域の格子点のＣ点又はＦ点は、部分領域では設定されているが、主担当領域で設定したものと異なる場合がある。その後に続く補間行列生成処理、及び次階層係数行列生成処理で矛盾が生じ、ＡＭＧ階層生成が正しく行われない場合がある。
そこで、ＣＦ更新処理部は、正しい設定に合わせるようにＣ点又はＦ点を更新する。
【００４１】
ＣＦ更新処理部は、ノード毎に、重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードに送信する
次に、ＣＦ更新処理部は、ノード毎に、重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードから受信し、ノード毎に、受信したＣ点又はＦ点の情報に対応するＣ点又はＦ点で重なり部分の要素におけるＣ点又はＦ点を更新する。
「算出したＣ点又はＦ点の情報」としては、算出したＣ点又はＦ点のグローバル番号などが挙げられる。
【実施例】
【００４２】
以下に、本発明の実施例について図面を用いて具体的に説明するが、本発明は、この実施例に何ら限定されるものではない。
【００４３】
（実施例１）
図９は、並列処理装置のハードウェア構成の一例を示す図である。この図９の並列処理装置１００の後述する主記憶装置及び記憶装置には、本発明の並列演算プログラムが記録されており、後述の演算装置が当該プログラムを読出して実行することにより、後述の部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４として動作する。
【００４４】
この図９の並列処理装置１００は、ネットワークスイッチ１０１により互いに接続される、計算機１  １０２、計算機２  １０３、・・・、計算機ｎ  １０４を備え、入力部１０５及び出力部１０６が接続されている。
【００４５】
計算機１  １０２は、演算装置１  １０２１、主記憶装置１  １０３１、及び記憶装置１  １０４１を備えている。
計算機２  １０３は、演算装置２  １０２２、主記憶装置２  １０３２、及び記憶装置２  １０４２を備えている。
計算機ｎ  １０４は、演算装置ｎ  １０２３、主記憶装置ｎ  １０３３、及び記憶装置ｎ  １０４３を備えている。
【００４６】
演算装置１  １０２１、演算装置２  １０２２、・・・、演算装置ｎ  １０２３は、主記憶装置１  １０３１、主記憶装置２  １０３２、・・・、主記憶装置ｎ  １０３３や記憶装置１  １０４１、記憶装置２  １０４２、・・・、記憶装置ｎ  １０４３などに格納された部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４の各種プログラムを実行するユニットである。
【００４７】
主記憶装置１  １０３１、主記憶装置２  １０３２、・・・、主記憶装置ｎ  １０３３は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を含み、並列処理装置１００を構成する各処理のプログラムとデータが格納される。
【００４８】
記憶装置１  １０４１、記憶装置２  １０４２、・・・、記憶装置ｎ  １０４３としては、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置などが挙げられる。これらの記憶装置１  １０４１、記憶装置２  １０４２、・・・、記憶装置ｎ  １０４３に上述の各処理のプログラムとデータを保存しておき、必要に応じて、それらを主記憶装置１  １０３１、主記憶装置２  １０３２、・・・、主記憶装置ｎ  １０３３にロードして使用することもできる。
【００４９】
ネットワークスイッチ１０１は、複数の機器がケーブルなどを介して接続され、これらの間でデータの中継及び転送を行い、機器間で通信ができるように制御する装置である。
【００５０】
入力部１０５としては、例えば、キーボード、マウス、ポインティングデバイス、タッチパネルなどが挙げられ、利用者からの指示の入力に用いられる。また、可搬記録媒体を駆動してその記録内容の入力に用いられる。
【００５１】
出力部１０６としては、例えば、ディスプレイやプリンタ等であり、並列処理装置１００の利用者への処理結果等の表示に用いられる。
【００５２】
なお、図９には示していないが、演算処理の高速化のために、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのアクセラレータを利用できる構成としてもよい。
【００５３】
次に、図１０に示すように、本発明の並列処理装置は、Ｃ点又はＦ点を設定する処理を行う並列粗視化処理部１１０を備える。
並列粗視化処理部１１０は、部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４を有する。
なお、部分領域の評価値算出処理部１１１、及び部分領域のＣＦ設定部１１３における処理は、それぞれ図７及び図８に示した処理により実行される。
【００５４】
ここで、部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４の構成は、本発明の並列処理装置に該当する。部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４を実施する処理は、本発明の並列演算方法に該当する。部分領域の評価値算出処理部１１１、評価値更新処理部１１２、部分領域のＣＦ設定部１１３、及びＣＦ更新処理部１１４の処理をコンピュータに実行させるプログラムは、本発明の並列演算プログラムに該当する。
【００５５】
＜評価値更新処理部＞
図１１に示すように、１２個の計算メッシュを２プロセスで２分割する場合を考える。
図１１中の黒塗りの点は袖領域の格子点を表す。白塗りの点は主担当領域の格子点を表す。
各格子点に振られた番号は、括弧なしがローカル番号、即ち、プロセス内に閉じた格子点番号である。括弧ありがグローバル番号、即ち、計算メッシュ全体での格子点番号である。
図１１に示す計算メッシュから、プロセス０及びプロセス１で並列に生成された係数行列が並列粗視化処理部１１０の入力となる。
この分割された計算メッシュから、プロセス０及びプロセス１で生成した係数行列の例を図１２に示す。
【００５６】
図１２に示すように、実線枠で囲まれた部分が係数行列であり、行及び列にそれぞれ番号が振られている。
ローカル番号は、各プロセス内の行番号及び列番号である。グローバル番号は、計算モデル全体から見たときの行番号及び列番号である。
係数行列が生成される際に、ローカル番号だけでなく、グローバル番号も割り振られることが行われている。
プロセス０の第６列及び第７列（点線枠で囲まれた部分）は、プロセス０の袖領域を表し、同様にプロセス１の第６列及び第７列はプロセス１の袖領域を表す。
この行列を入力として、図１０の部分領域の評価値算出処理部１１１において、図７で示す処理フローに従って評価値λを算出すると、図１２に示すようになる。
例えば、プロセス０のローカル０行目に注目すると、ローカル第１列目と第３列目が条件を満たすため、λ１＝λ１＋１及びλ３＝λ３＋１となる。
この処理を行について順次実行すると、図１３に示すテーブルが得られる。
【００５７】
図１３において，点線枠で囲まれた部分がそれぞれのプロセスにおける袖領域である。
従来技術では、ここで算出された評価値λをそのまま、ＣＦ設定処理に用いており、袖領域の格子点との接続関係は考慮されていなかった。
【００５８】
ここで、図１４は、評価値更新処理部１１２における処理パターンを示すブロック図である。図１４中のＧ３、Ｇ８などの、Ｇのつく番号は、グローバル番号を表す。
部分領域の評価値算出処理部１１１において、各プロセスで評価値λを算出した後、評価値更新処理部１１２において、評価値更新処理を実行する。
【００５９】
評価値更新処理部１１２は、袖領域の評価値λの送受信処理（Ａ１）、評価値λの足し合わせ処理（Ａ２）、足し合わせた評価値λの送受信処理（Ａ３）、及び評価値λ更新処理（Ａ４）を実行する。
評価値更新処理部１１２は、袖領域のλの送受信処理（Ａ１）では、各領域を担当する計算機（プロセス）で求めた袖領域の評価値λを、主担当領域のプロセスにネットワークを通じて送信する。
評価値更新処理部１１２は、評価値λの足し合わせ処理（Ａ２）では、主担当領域のプロセスは、受信した評価値λを、各格子点について足し上げる。
評価値更新処理部１１２は、足し合わせた評価値λの送受信処理（Ａ３）では、主担当領域のプロセスは、足し上げた評価値λを送信元に送り返す。
評価値更新処理部１１２は、評価値λ更新処理（Ａ４）では、各領域のプロセスは、格子点の評価値λを主担当領域のプロセスから受信した評価値λに更新する。
【００６０】
それぞれの処理における、データの更新のされ方を以下に説明する。
袖領域の評価値λの送受信処理（Ａ１）では、図１５に示すように、部分領域の評価値算出処理において各プロセスで評価値λを算出した後、袖領域のグローバル番号及び評価値λを抽出する。
抽出した評価値λを送信バッファに格納し、主担当領域のプロセスに送信する。
つまり、プロセス０はグローバル番号３及び９の評価値λをプロセス１に、プロセス１はグローバル番号２及び８の評価値λをプロセス０に送信する。
プロセス０及びプロセス１は、送信されてきた評価値λをグローバル番号と対応させて受信バッファλ’に格納する。
【００６１】
評価値λの足し合わせ処理（Ａ２）では、図１６に示すように、各プロセスは、λ’と、プロセスごとに算出した評価値λを、同一グローバル番号について足し合わせる。即ち、プロセス０では、プロセス１から送信されたグローバル番号２及び８の評価値λと、プロセス０自身で算出したグローバル番号２及び８の評価値λを足し合わせる。
プロセス１でも同様にグローバル番号３及び９の評価値λを足し合わせる。
評価値λの値を、それぞれのプロセスで足し合わせた値に更新する。
【００６２】
足し合わせた評価値λの送受信処理（Ａ３）では、図１７に示すように、各プロセスは、受信したグローバル番号に対応する評価値λの値を送信バッファに格納し、送信元に足し合わされたλの値を送り返す。
プロセス０では、プロセス１からグローバル番号２及び８の評価値λを要求されているため、それらの番号に対応する足し合わせた評価値λの値を送信バッファに格納し、プロセス０に送り返す。
プロセス１でも同様に送り返す処理を実行する。
送り返された評価値λは、受信バッファλ”に格納される。
【００６３】
評価値λ更新処理（Ａ４）では、図１８に示すように、受信バッファλ”の値で，各プロセスの評価値λの値を更新する。
【００６４】
以上説明したように、評価値更新処理部１１２における評価値更新処理によって、プロセスごとに生成された係数行列から、格子点の接続関係をすべて考慮した評価値λを得ることができる。
更新された評価値λを用いて、部分領域のＣＦ設定部１１３により、図８に示される処理フローで各点のＣ点又はＦ点の設定を各プロセスで実行する。
図８で示される処理フローは、ＡＭＧ法で行われているものであり、評価値λが格子点の接続関係をすべて考慮した値になっているため、各プロセスで並列に実行しても、全体でＣ点又はＦ点の設定をした場合と矛盾しない。
すると、図１９に示すように、各点のＣ点又はＦ点の設定が行われる。
【００６５】
ここで、図２０は、評価値更新処理部１１２における評価値更新処理の流れの一例を示すフローチャートである。以下、図１４〜図１８を参照して、評価値更新処理の流れについて説明する。
【００６６】
ステップＳ３１では、評価値更新処理部１１２は、袖領域の評価値λとグローバル番号を配列に格納すると、処理をＳ３２に移行する。
【００６７】
ステップＳ３２では、評価値更新処理部１１２は、格納した評価値λとグローバル番号を主担当プロセスに送信すると、処理をＳ３３に移行する。
【００６８】
ステップＳ３３では、評価値更新処理部１１２は、自プロセスが主担当の評価値λとグローバル番号を受信すると、処理をＳ３４に移行する。
【００６９】
ステップＳ３４では、評価値更新処理部１１２が、通信同期をとると、処理をＳ３５に移行する。
【００７０】
ステップＳ３５では、評価値更新処理部１１２は、受信したグローバル番号と対応する点の評価値λを足し合わせると、処理をＳ３６に移行する。
【００７１】
ステップＳ３６では、評価値更新処理部１１２は、評価値λを足し合わせた値で更新すると、処理をＳ３７に移行する。
【００７２】
ステップＳ３７では、評価値更新処理部１１２は、受信したグローバル番号とそれに対応する評価値λを送信元に返信すると、処理をＳ３８に移行する。
【００７３】
ステップＳ３８では、評価値更新処理部１１２は、主担当プロセスからグローバル番号と対応する評価値λを受信すると、処理をＳ３９に移行する。
【００７４】
ステップＳ３９では、評価値更新処理部１１２が、通信同期を行うと、処理をＳ４０に移行する。
【００７５】
ステップＳ４０では、評価値更新処理部１１２は、受信した値で評価値λを更新すると、本処理を終了する。
【００７６】
（実施例２）
実施例２は、実施例１において、部分領域のＣＦ設定部１１３により各格子点のＣ点又はＦ点の設定を行った後、ＣＦ更新処理部１１４により、袖領域の格子点のＣ点又はＦ点の設定を主担当領域の設定に合わせるように更新する以外は、実施例１と同様である。このため、既に説明した実施例１と同一の構成については、その説明を省略する。
【００７７】
＜ＣＦ更新処理部＞
図２１は、ＣＦ更新処理部１１４における処理パターンを示すブロック図である。
袖領域の格子点のＣ点又はＦ点は、部分領域では設定されているが、主担当領域で設定したものと異なる場合がある。これは、Ｃ点とＦ点の取り方には任意性があるからである。
袖領域の格子点のＣ点又はＦ点の設定が主担当領域と異なる場合、この後に続く補間行列生成処理、及び次階層係数行列生成処理で矛盾が生じ、ＡＭＧ階層生成が正しく行われない。そこで、ＣＦ更新処理部１１４により袖領域の格子点のＣ点又はＦ点の設定を主担当領域の設定に合わせるように更新する。
【００７８】
図２１中のＧ３、Ｇ９などのＧがつく番号はグローバル番号を表す。
各プロセスは、袖領域のグローバル番号を主担当領域に送信する。例えば、プロセス０では、Ｇ３及びＧ９が袖領域にあたるため、プロセス１にＧ３及びＧ９を送信する。
同様に、プロセス１では、Ｇ２及びＧ８をプロセス０に送信する。
次に、受信したグローバル番号にあたる点のＣ点又はＦ点の設定を送信元に送り返す。
各プロセスは、送り返されたＣ点又はＦ点の設定で、袖領域の設定を更新する。
【００７９】
ＣＦ更新処理部１１４は、袖領域のグローバル番号の送受信処理（Ｂ１）、Ｃ点又はＦ点の設定の送り返し処理（Ｂ２）、及びＣＦ設定更新処理（Ｂ３）を実行する。
ＣＦ更新処理部１１４は、袖領域のグローバル番号の送受信処理（Ｂ１）では、各領域のプロセスは、袖領域の格子点のＣ点又はＦ点の情報を主担当領域にネットワークを通じて問い合わせる。
ＣＦ更新処理部１１４は、Ｃ点又はＦ点の設定の送り返し処理（Ｂ２）では、主担当領域のプロセスは、受信した格子点番号のＣ点又はＦ点の情報を送信元に送り返す。
ＣＦ更新処理部１１４は、ＣＦ設定更新処理（Ｂ３）では、各領域のプロセスは、袖領域の格子点のＣ点又はＦ点の情報を主担当領域から受信したＣ点又はＦ点の情報に更新する。
【００８０】
袖領域のグローバル番号の送受信処理（Ｂ１）では、図２２に示すように、袖領域のグローバル番号を主担当領域に送信する。
プロセス０では、グローバル番号３及び９をプロセス１に、プロセス１ではグローバル番号２及び８をプロセス０に送信する。
【００８１】
Ｃ点又はＦ点の設定の送り返し処理（Ｂ２）では、図２３に示すように、各プロセスは、要求されたグローバル番号のＣ点又はＦ点（Ｃ／Ｆ）の設定を送信バッファに格納し、送信元に送り返す。
プロセス０ではグローバル番号２及び８のＣ点又はＦ点（Ｃ／Ｆ）の設定をプロセス１に、プロセス１ではグローバル番号３及び９のＣ点又はＦ点（Ｃ／Ｆ）の設定をプロセス０に送り返す。
送り返されたＣ点又はＦ点（Ｃ／Ｆ）の設定は、受信バッファＣ／Ｆ’に格納される。
【００８２】
ＣＦ設定更新処理（Ｂ３）では、図２４に示すように、各点のＣ点又はＦ点（Ｃ／Ｆ）の設定をＣ／Ｆ’で置き換える。
図２４の場合は、袖領域のＣ点又はＦ点の設定は主担当領域と同じであるが、異なる場合もあり、異なる場合には主担当領域を優先させることで補間行列生成、及び次階層係数行列生成において矛盾が生じない。
【００８３】
以上説明したように、各プロセスで並列に粗視化処理を行い、次階層に残すＣ点と間引かれるＦ点の設定が終了する。
続く、補間行列生成処理、及び次階層係数行列生成処理は、ＡＭＧ法の手法を用いることができる。
なお、従来手法では、評価値更新処理、及びＣＦ更新処理は実行せずにＣ点又はＦ点（Ｃ／Ｆ）の設定処理を行っていた。
【００８４】
ここで、図２５は、ＣＦ更新処理部１１４におけるＣＦ更新処理の流れの一例を示すフローチャートである。以下、図２１〜図２４を参照して、ＣＦ更新処理の流れについて説明する。
【００８５】
ステップＳ４１では、ＣＦ更新処理部１１４は、袖領域のグローバル番号を配列に格納すると、処理をＳ４２に移行する。
【００８６】
ステップＳ４２では、ＣＦ更新処理部１１４は、格納したグローバル番号を主担当プロセスに送信すると、処理をＳ４３に移行する。
【００８７】
ステップＳ４３では、ＣＦ更新処理部１１４は、自プロセスが主担当のグローバル番号を受信すると、処理をＳ４４に移行する。
【００８８】
ステップＳ４４では、ＣＦ更新処理部１１４が、通信同期を行うと、処理をＳ４５に移行する。
【００８９】
ステップＳ４５では、ＣＦ更新処理部１１４は、受信したグローバル番号に対応する点のＣ点又はＦ点（Ｃ／Ｆ）を送信元に返信すると、処理をＳ４６に移行する。
【００９０】
ステップＳ４６では、ＣＦ更新処理部１１４は、主担当プロセスから袖領域のＣ点又はＦ点（Ｃ／Ｆ）を受信すると、処理をＳ４７に移行する。
【００９１】
ステップＳ４７では、ＣＦ更新処理部１１４が、通信同期を行うと、処理をＳ４８に移行する。
【００９２】
ステップＳ４８では、ＣＦ更新処理部１１４は、袖領域のＣ点又はＦ点（Ｃ／Ｆ）を受信した設定に更新すると、本処理を終了する。
【００９３】
ここで、本発明と従来手法のＣ点又はＦ点（Ｃ／Ｆ）の設定の差異について、図２６〜図２８を参照して説明する。
従来手法では、袖領域のＣ点又はＦ点の設定は行わない。なお、従来手法の中には、プロセス０におけるローカル番号２及び５（グローバル番号２及び８）、プロセス１におけるローカル番号０及び３（グローバル番号３及び９）を強制的にＣ点とする、つまり境界領域の点は次階層に残す、というものがある。
この従来手法であると、計算モデル全体の係数行列が表す接続関係を無視していることになり、解の収束性が保たれないだけでなく、残される点（Ｃ点）が増加するため、演算処理が増え、解を得るまでの反復回数が増加してしまう。このことは、並列計算において、並列数を増やしても期待する計算速度の向上が見込めないということになる。
本発明では、この問題を回避できるため、袖領域での格子点間の接続を考慮してＣ点又はＦ点の設定を行うことにより、解を得るまでの反復回数の増加を抑えることができるので、並列計算において、並列数を増やした場合の計算速度の向上が実現できる。
【００９４】
このように本発明では、袖領域での格子点間の接続関係を考慮してＣ点又はＦ点の設定を行うことにより、本来の計算モデル全体の情報が反映されるため、従来手法に比べて、分割した各領域の演算精度が向上する。
また、本発明では、袖領域での格子点間の接続関係を考慮するため、従来手法に比べて、演算対象の行列が大きくなり、分割した各領域の計算量は増加する。しかし、本発明は、袖領域での格子点間の接続関係を考慮してＣ点又はＦ点の設定を行うことにより、解の収束性を保ち、解を得るまでの反復回数が少なくて済むため、計算モデル全体としてみると、計算量が減少するので、計算速度の向上が実現できる。
また、本発明では、袖領域での格子点間の接続関係を考慮してＣ点又はＦ点の設定処理を行うことにより、計算モデル全体から得られる係数行列を基にＣ点又はＦ点の設定を実行した場合と矛盾することがない。このため、本発明は、部分領域の情報のみを用いる従来手法に比べて、並列数を増やした場合でも演算精度が向上し、反復回数の増加を抑えることにより、高速な計算が可能となる。
【００９５】
以上説明したとおり、本発明の並列処理装置、並列演算方法、及び並列演算プログラムは、有限要素法や有限体積法等を用いて電磁場、流体運動などを計算機上で数値的に解析する際に好適に用いることができる。
【００９６】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列処理装置において、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成する部分領域の評価値算出処理部と、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力する評価値更新処理部と、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出する部分領域のＣＦ設定部と、
を有することを特徴とする並列処理装置。
（付記２）
前記並列処理装置は更に、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードに送信し、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードから受信し、
ノード毎に、受信した前記Ｃ点又はＦ点の情報に対応するＣ点又はＦ点で前記重なり部分の要素におけるＣ点又はＦ点を更新するＣＦ更新処理部を有する付記１に記載の並列処理装置。
（付記３）
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列演算方法において、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力し、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出することを特徴とする並列演算方法。
（付記４）
前記並列演算方法は更に、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードに送信し、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードから受信し、
ノード毎に、受信した前記Ｃ点又はＦ点の情報に対応するＣ点又はＦ点で前記重なり部分の要素におけるＣ点又はＦ点を更新する付記３に記載の並列演算方法。
（付記５）
代数的マルチグリッド法による演算並列処理で、行列データを処理し、Ｃ点又はＦ点を決定する際に、前記行列データを一部重なるように分割した分割行列データを生成する並列演算プログラムにおいて、
前記分割行列データを各ノードに送信し、ノード毎に、前記分割行列データから評価値行列データを生成し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードに送信し、
ノード毎に、前記評価値行列データの重なり部分の要素を互いに接続している各ノードから受信し、
ノード毎に、受信した前記重なり部分の要素を前記評価値行列データの要素に加算して加算評価データを算出し、
ノード毎に、前記加算評価データを互いに接続している各ノードに送信し、
ノード毎に、受信した前記加算評価データを前記評価値行列データに入力し、
ノード毎に、更新した前記評価値行列データを基にＣ点又はＦ点を算出する
処理をコンピュータに実行させることを特徴とする並列演算プログラム。
（付記６）
前記並列演算プログラムは更に、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードに送信させ、
ノード毎に、前記重なり部分の要素における算出したＣ点又はＦ点の情報を互いに接続している各ノードから受信させ、
ノード毎に、受信した前記Ｃ点又はＦ点の情報に対応するＣ点又はＦ点で前記重なり部分の要素におけるＣ点又はＦ点を更新させる付記５に記載の並列演算プログラム。
【符号の説明】
【００９７】
１００      並列処理装置
１０１      ネットワークスイッチ
１０２      計算機１
１０３      計算機２
１０４      計算機ｎ
１０５      入力部
１０６      出力部
１１０      並列粗視化処理部
１１１      部分領域の評価値算出処理部
１１２      評価値更新処理部
１１３      部分領域のＣＦ設定部
１１４      ＣＦ更新処理部
１０２１      演算装置１
１０２２      演算装置２
１０２３      演算装置ｎ
１０３１      主記憶装置１
１０３２      主記憶装置２
１０３３      主記憶装置ｎ
１０４１      記憶装置１
１０４２      記憶装置２
１０４３      記憶装置ｎ
【図１】
2018206076.tif 000003
【図２】
2018206076.tif 000004
【図３】
2018206076.tif 000005
【図４】
2018206076.tif 000006
【図５】
2018206076.tif 000007
【図６】
2018206076.tif 000008
【図７】
2018206076.tif 000009
【図８】
2018206076.tif 000010
【図９】
2018206076.tif 000011
【図１０】
2018206076.tif 000012
【図１１】
2018206076.tif 000013
【図１２】
2018206076.tif 000014
【図１３】
2018206076.tif 000015
【図１４】
2018206076.tif 000016
【図１５】
2018206076.tif 000017
【図１６】
2018206076.tif 000018
【図１７】
2018206076.tif 000019
【図１８】
2018206076.tif 000020
【図１９】
2018206076.tif 000021
【図２０】
2018206076.tif 000022
【図２１】
2018206076.tif 000023
【図２２】
2018206076.tif 000024
【図２３】
2018206076.tif 000025
【図２４】
2018206076.tif 000026
【図２５】
2018206076.tif 000027
【図２６】
2018206076.tif 000028
【図２７】
2018206076.tif 000029
【図２８】
2018206076.tif 000030