(57)【要約】【課題】同期処理の回数を削減し、ベクトル演算機能を有する並列計算機上で非ゼロパターンが不規則でスパースな係数行列に対する前処理付き反復解法における前処理を高速に実行できる前処理方法およびそれに用いる行列リオーダリング方法を提供する。【解決手段】ステップＳ１で圧縮形式の係数行列、定数ベクトルを入力し、ステップＳ２で前処理の並列化に適した行列に変換するリオーダリング情報を作成し、更にステップＳ３〜Ｓ５で各プロッセッサにおいて独立に前処理を行なう行列の各部分をベクトル演算に適したものに変換するリオーダリング情報を作成する。次に、ステップＳ６でリオーダリング情報により、行列、定数ベクトルの各成分を並べ替え、リオーダリング及びその関連情報、リオーダリング後の行列、定数ベクトルを出力する。【選択図】図１
2007133710.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で連立一次方程式の解を求めるための前処理付き反復解法における前処理演算方法であって、係数行列を縁付き対角ブロック行列に変換した上でベクトル計算向けリオーダリングにより並べ替えるステップと、並べ替えられた前記係数行列の各ブロックに対応する部分の前処理を前記並列計算機の複数のプロセッサで並列に行わせるよう制御するステップとを有し、前記係数行列に対して縁付き対角ブロック行列への変換とベクトル計算向けリオーダリングの二段階で並べ替えを行ない、リオーダリング情報と並列計算を制御するインデクスリストと前処理のベクトル計算順序を示すリストベクトルとリオーダリング後の係数行列および右辺定数ベクトルの情報を出力することを特徴とする前処理演算方法。
【請求項２】
複数のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で連立一次方程式の解を求めるための前処理付き反復解法における前処理演算において参照する係数行列を並べ替えるためのリオーダリング方法であって、係数行列を縁付き対角ブロック行列に変換した上でベクトル計算向けリオーダリングにより並べ替えるステップを有し、前記係数行列に対して縁付き対角ブロック行列への変換とベクトル計算向けリオーダリングの二段階で並べ替えを行ない、リオーダリング情報と並列計算を制御するインデクスリストと前処理のベクトル計算順序を示すリストベクトルとリオーダリング後の係数行列および右辺定数ベクトルの情報を出力することを特徴とする行列リオーダリング方法。
【請求項３】
前記ベクトル計算向けリオーダリングは、ＲＣＭ（Ｒｅｖｅｒｓｅ  Ｃｕｔｈｉｌｌ−ＭｃＫｅｅ）オーダリング後にＨｙｐｅｒｐｌａｎｅオーダリングを施すことで行うようにしたことを特徴とする請求項２記載の行列リオーダリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列計算機システムを用いた連立一次方程式の前処理付き反復解法における前処理方法およびそれに用いる行列リオーダリング方法に関し、特に２台以上のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で係数行列の非ゼロパターンが不規則でスパースな連立一次方程式の求解を高速に実行するための方法に関する。
【背景技術】
【０００２】
物理現象を表現する偏微分方程式の初期値、境界値問題を数値的に解くための代表的な離散化方式の一つとして有限要素法がある。有限要素法により離散化、生成された連立一次方程式の係数行列は一般的にその非ゼロパターンが不規則でスパースな行列になる。このような係数行列をもつ連立一次方程式の求解法としては、反復法が広く用いられている。実用的な問題では行列サイズが非常に大きくなる場合が多く、そうしたケースでは並列計算機がしばしば用いられる。また、行列はそのスパース性を利用してＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｔｏｒａｇｅ）形式、ＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  Ｓｔｏｒａｇｅ）形式またはその簡易型等の圧縮型データ構造で保持されるのが一般的である（例えばR.Barrett, M.Berry, T.F.Chan, J.Demmel, J.Donato, J.Dongarra, V.Eijkhout, R.Pozo, C Romine, and H.Van der Vorst: “Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods”. SIAM Publications, pp.64-68 (1993) 参照）。
【０００３】
反復法としてはクリロフ部分空間法に収束性を改善するための前処理を施したものが広く用いられている。その前処理の代表的なものとして不完全ＬＵ分解がある。これを前処理として用いたクリロフ部分空間法では、前処理、具体的には不完全ＬＵ分解後の行列をＬ，Ｕ、ある既知ベクトルをｑ、未知ベクトルをｐとしてＬＵｐ＝ｑを解く処理が、解法全体を並列化し解を求めるための計算時間を短縮する上でのボトルネックとなることが知られており、不完全ＬＵ分解前処理をいかに効率よく並列化するかが大きな技術課題となっている。
【０００４】
これを解決する方法として従来用いられてきたのが、Ｈｙｐｅｒｐｌａｎｅオーダリングにより行列の要素を並べ替えることで、ＬＵｐ＝ｑを解く際の前進消去、後退代入計算におけるベクトル長を長大化し、最内側ループにおける計算を並列に行なうというものである（例えばI.S.Duff and H.A.van der Vorst: ”Preconditioning and parallel preconditioning”. Technical Report TR/PA/98/23, CERFACS, France (1998); S.Ma and Y Saad: ”Distributed ILU(0) and SOR preconditioners for unstructured sparse linear systems. Technical Report 94-027, Army High Performance Computing Research Center, University of Minnesota, Minneapolis, MN (1994).参照）。
【０００５】
図６に従来の行列並べ替えの手順を示す。従来の行列並べ替えでは、圧縮形式の行列および定数ベクトルが入力されると（図６ステップＳ４１）、Ｈｙｐｅｒｐｌａｎｅオーダリングにより、リオーダリング情報およびリストベクトルが作成される（図６ステップＳ４２）。リオーダリング情報とはもともとの行列における各行をリオーダリング後の何行目に配置するかを示すものである。また、リストベクトルはリオーダリング後の行列における前処理のベクトル計算順序を示すもので、何行目から何行目の行を参照する前進消去および後退代入計算が同時に計算可能かを表している。続いて、作成されたリオーダリング情報にもとづいて圧縮形式の行列、定数ベクトルの並べ替えが行なわれ（図６ステップＳ４３）、リオーダリング情報、リストベクトル、リオーダリング後の圧縮形式の行列、リオーダリング後の定数ベクトルが出力される（図６ステップＳ４４）。
【０００６】
図７に並べ替え後の行列の非ゼロパターンとこれに対応するリストベクトルの例を示す。リオーダリング後の行列３１では、行列の対角部分が対角成分のみを有する小行列ブロックで構成される。個々の小行列ブロック部分を参照する不完全ＬＵ分解前処理すなわち前進消去、後退代入計算はそれぞれ並列実行可能である。この行列に対応するリストベクトル３２には、小行列ブロックの数（並列計算可能な行グループの数）と各小行列ブロックの先頭を示す行番号を記憶する。
【０００７】
図８に従来の行列並べ替えを用いた場合における共有メモリ型並列計算機上での不完全ＬＵ分解前処理演算方法の詳細なフローを示す。前進消去計算では、最初の小行列ブロックから順に最後の小行列ブロックまで以下の処理を逐次的に行なう（図８ステップＳ５１）。リストベクトルに記憶された情報から着目している小行列ブロックの行番号の範囲を求め（図８ステップＳ５２）、その行範囲における各行の前進消去計算を並列に行なう（図８ステップＳ５３〜Ｓ５５）。後退代入計算では、最後の小行列ブロックから逆順に最初の小行列ブロックまで同様の処理を逐次的に行なう（図８ステップＳ５６〜Ｓ６０）。
【０００８】
ベクトル演算機能を有する並列計算機上で上述の計算を行なう場合には、前進消去、後退代入いずれの場合にも個々の小行列ブロックに相当する部分の計算（図８ステップＳ５３，Ｓ５４およびＳ５７，Ｓ５８）を複数のプロセッサに分配した上で、分配後の計算をベクトル演算機能により行なう。この時、１小行列ブロックに相当する計算毎にプロセッサ間の同期をとる必要があり（図８ステップＳ５５，Ｓ６０）、１回の前処理計算当たり、（小行列ブロックの個数）×２−１回の同期処理を行なわなければならない。連立一次方程式の次元数をＮとすると、この小行列ブロックの個数は、２次元解析の場合にはＮ1/2、３次元解析の場合でもＮ1/3に比例する大きな数になるため、一般に同期処理のオーバーヘッドが顕在化し、前処理演算の並列化効率は低下してしまう。
【０００９】
【非特許文献１】R.Barrett, M.Berry, T.F.Chan, J.Demmel, J.Donato, J.Dongarra, V.Eijkhout, R.Pozo, C Romine, and H.Van der Vorst: “Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods”. SIAM Publications, pp.64-68 (1993)
【００１０】
【非特許文献２】I.S.Duff and H.A.van der Vorst: ”Preconditioning and parallel preconditioning”. Technical Report TR/PA/98/23, CERFACS, France (1998)
【非特許文献３】S.Ma and Y Saad: ”Distributed ILU(0) and SOR preconditioners for unstructured sparse linear systems. Technical Report 94-027, Army High Performance Computing Research Center, University of Minnesota, Minneapolis, MN (1994)
【発明の開示】
【発明が解決しようとする課題】
【００１１】
非ゼロパターンが不規則でスパースな係数行列を持つ連立一次方程式の解法として代表的な不完全ＬＵ分解前処理付きクリロフ部分空間法において前処理をベクトル演算機能を有する並列計算機上で高速に実行する方法として、行列をＨｙｐｅｒｐｌａｎｅオーダリングにより並べ替えた後に前処理を行なう方法が知られている。
【００１２】
ところが、この方法では並べ替え後の行列においてその対角部分に形成される対角成分のみを有する小行列ブロックのそれぞれに対応する前進消去、後退代入計算毎にプロセッサ間の同期処理が必要となる。このため、１回の前処理計算当たり、（小行列ブロックの個数）×２−１回の同期処理が必要となる。不完全ＬＵ分解前処理演算を行なう場合、その処理に要する時間は個々のプロセッサにおける前処理の演算時間とプロセッサ間の同期処理に要する時間とからなるが、上記の通り同期処理に要する時間が大きくなってしまうことから、前処理演算の処理に要するトータルの時間が増加してしまう。つまり並列計算機の特性を十分に生かした高速計算を行なうことができない。
【００１３】
そこで、本発明の目的は、上記の問題を解決し、従来法と同程度の反復解法の収束性を維持しかつ実数演算部分のベクトル演算機能による実行を可能とした上で、同期処理の回数を削減し、ベクトル演算機能を有する並列計算機上で非ゼロパターンが不規則でスパースな係数行列に対する前処理を高速に実行できる前処理方法およびそれに用いる行列リオーダリング方法を提供することにある。
【課題を解決するための手段】
【００１４】
本発明による前処理演算方法は、複数のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で連立一次方程式の解を求めるための前処理付き反復解法における前処理演算方法であって、係数行列を縁付き対角ブロック行列に変換した上でベクトル計算向けリオーダリングにより並べ替えるステップと、並べ替えられた前記係数行列を参照する前処理を前記複数のプロセッサ各々に演算させるよう制御するステップとを有し、前記係数行列に対して縁付き対角ブロック行列への変換とベクトル計算向けリオーダリングの二段階で並べ替えを行なうようにしている。
【００１５】
本発明による行列リオーダリング方法は、複数のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で連立一次方程式の解を求めるための前処理付き反復解法における前処理演算において参照する係数行列を並べ替えるためのリオーダリング方法であって、係数行列を縁付き対角ブロック行列に変換した上でベクトル計算向けリオーダリングにより並べ替えるステップを有し、前記係数行列に対して縁付き対角ブロック行列への変換とベクトル計算向けリオーダリングの二段階で並べ替えを行なうようにしている。
さらに、ベクトル計算向けリオーダリングは、ＲＣＭ（Ｒｅｖｅｒｓｅ  Ｃｕｔｈｉｌｌ−ＭｃＫｅｅ）オーダリング後にＨｙｐｅｒｐｌａｎｅオーダリングを施すことで行うようにしている。
【発明の効果】
【００１６】
本発明によれば、複数のプロセッサからなり個々のプロセッサがベクトル演算機能を有する並列計算機上で連立一次方程式の解を求めるための前処理付き反復解法における前処理演算において、一回の前処理に必要となるプロセッサ間の同期処理の回数を大幅に削減できる。また、従来法と同程度の反復解法の収束性を維持しかつ実数演算部分のベクトル演算機能による実行を可能としている。これにより、前処理付き反復解法によって連立一次方程式の解を求める計算において大きな部分を占める前処理演算に要する時間を大幅に削減できる。
【発明を実施するための最良の形態】
【００１７】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例による行列リオーダリングの制御方法を示すフローチャートである。この図１を参照して行列リオーダリングの方法について説明する。
【００１８】
そのスパース性を利用して圧縮型データ構造で保持された係数行列、と定数ベクトルが入力されると（図１ステップＳ１）、その情報からＮｅｓｔｅｄ  Ｄｉｓｓｅｃｔｉｏｎ（以下、ＮＤと呼ぶ）オーダリング（例えばE.G.Boman and B.Hendrickson:”A Multi-level Algorithm for Reducing the Envelope of Sparse Matrices”, Technical Report SCCM-96-14, Stanford University (1996).参照）により行列を縁付き対角ブロック行列に変換するリオーダリング情報を作成する（図１ステップＳ２）。ＮＤオーダリングにおいては、計算に使用する並列計算機のプロセッサ数をＮpeとすると段数log2(Ｎpe)のＮＤを施す。例えばプロセッサ数が４のときには、２段のＮＤを施すことになる。次のステップの説明に入る前に、行列にＮＤオーダリングを施したときの行列の構造と、これを不完全ＬＵ分解したときに得られる下三角行列Ｌの構造について図２、図３を用いて説明する。
【００１９】
図２はプロセッサ数が４のときに作成されるリオーダリング情報により行列の並べ替えを行なった場合の行列の構造を示したものである。行列の対角部分にはプロセッサ数と同数の対角ブロック１，２，４，５が形成される。各対角ブロック部分を参照する不完全ＬＵ分解前処理すなわち前進消去、後退代入計算は互いに独立に実行可能である。また、対角ブロック１，２及びこれらを縁取る非ゼロ要素の領域（以下では縁取りブロックと呼ぶ）３の部分を一つの対角ブロック、対角ブロック４，５及び縁取りブロック６の部分を一つの対角ブロックと見るこの二つの対角ブロック部分を参照する前処理も互いに独立に実行可能である。
【００２０】
図３は図２の行列を不完全ＬＵ分解した際に求められる下三角行列Ｌの構造を示したものである。前進消去計算Ｌｙ＝ｑにおいては、対角ブロック１１，１２，１４，１５を参照する計算は互いに独立に実行可能であり、４プロセッサで並列に計算することができる。対角ブロック１１，１２を参照する計算がともに終了した時点で縁取りブロック１３を参照する計算が実行可能となる。同様に、縁取りブロック１６を参照する計算も対角ブロック１４，１５を参照する計算がともに終了した時点で実行可能となる。縁取りブロック１３と１６を参照する計算も互いに独立に実行可能であり、２プロセッサで並列に計算することができる。縁取りブロック１３、１６を参照する計算が終了した時点で縁取りブロック１７を参照する計算が実行可能となり、このブロックを参照する計算が終わると行列全体の前進消去計算が完了する。大規模行列に対してＮｅｓｔｅｄ  Ｄｉｓｓｅｃｔｉｏｎオーダリングを用いている場合、対角ブロック１１，１２，１３，１４に属する行が行列の大部分を占め、また各対角ブロックのサイズがほぼ均一になる。しかも、プロセッサ間の同期処理は高々Ｎｅｓｔｅｄ  Ｄｉｓｓｅｃｔｉｏｎの段数log2(Ｎpe)回行なえばよいため、同期処理のオーバーヘッドも小さい。したがって、高い並列化効率（ほぼプロセッサ台数倍の並列化加速率）が得られる。
後退代入計算の場合も、上述の前進消去計算と同様にして、高い並列化効率が得られる。
【００２１】
次に、図１のステップＳ３以降について説明する。図１ステップＳ２においてＮＤオーダリングにより行列を縁付き対角ブロック行列に変換するリオーダリング情報を作成したら、続いて、リオーダリング情報により並べ替えを行なった行列のあるブロック（対角ブロックまたは縁取りブロック）に着目して、当該ブロックを参照する前進消去、後退代入計算がベクトル演算可能となるように、並べ替えの範囲を当該ブロックに限定した更なるリオーダリングを施し、その部分リオーダリング情報と、リオーダリング後の行列において前処理のベクトル計算順序を示す部分リストベクトルを作成する（図１ステップＳ３）。ＮＤオーダリング自体は、もともと大規模疎行列の直接解法において演算量を削減するための手法として考案されたものであり、反復解法の前処理に適用する場合の解の収束性やベクトル化を考慮したオーダリングではないため、各ブロックを参照する前進消去、後退代入計算を、並列計算機のベクトル演算機能を活用して高速に行なうためには、図１ステップＳ３のようなリオーダリングを付加する事が必要になる。
【００２２】
ベクトル化のためのリオーダリングとしてはＨｙｐｅｒｐｌａｎｅオーダリングが広く用いられているが、不完全ＬＵ分解前処理にＨｙｐｅｒｐｌａｎｅオーダリングを用いた場合のクリロフ部分空間法の収束性は、リオーダリング前の行列における元々の番号付けに大きく影響される。この行列における元々の番号付けとして、差分法により離散化、生成された連立一次方程式の場合、いわゆるナチュラルオーダリングがクリロフ部分空間法の収束性の点で優れていることが知られている。
【００２３】
そこで、図１ステップＳ３におけるベクトル化向けリオーダリングでは、有限要素法により離散化、生成された連立一次方程式の場合にナチュラルオーダリングと収束性の点で同等の効果をもつＲＣＭオーダリング（例えばM.Benzi, D.B.Szyld and A.van Duin;“Orderings for incomplete factorization preconditioning of nonsymmetric problems”.SIAM J. Scientific Computing,20,pp.1652-1670 (1999).参照）をまず行なってクリロフ部分空間法の収束性改善を図った上で、Ｈｙｐｅｒｐｌａｎｅオーダリングを適用するようにした。これにより、並列化のためにＮＤオーダリングを適用したことによるクリロフ部分空間法の収束性劣化を抑えた上で前処理をベクトル化することが可能である。
図１ステップＳ３の処理は、すべてのブロックに対して処理が完了するまで繰り返す（図１ステップＳ４）。
【００２４】
続いて、行列の各ブロックに対して求めた部分リオーダリング情報、部分リストベクトルから全体行列に対するリオーダリング情報、前処理のベクトル計算順序を示すリストベクトルを合成する。また、これと同時に、各ブロックの先頭行を指し示すリストベクトルのインデクスを記憶するインデクスリストを作成する（図１ステップＳ５）。
【００２５】
最後に、全体行列に対するリオーダリング情報により圧縮型データ構造で保持された行列と定数ベクトルの成分を実際に並べ替え（図１ステップＳ６）、ブロックの先頭行インデクスリスト、リオーダリング情報、前処理のベクトル計算順序を示すリストベクトル、リオーダリング後の圧縮型データ構造で保持された行列、リオーダリング後の定数ベクトルを出力する（図１ステップＳ７）。
【００２６】
図４に本実施例にもとづいて作成したブロックの先頭行インデクスリスト、前処理のベクトル計算順序を示すリストベクトルおよびリオーダリング後の行列の一例を示す。ただし、リオーダリング後の行列については、説明のわかりやすさを考慮して行列の一部分のみを拡大して示した。リーオーダリング後の行列２１は、全体の構造としては図２で示したように縁付き対角ブロック行列になるが、各対角ブロックの中を見ると図７の行列３１と同様に行列の対角部分が対角成分のみを有する小行列ブロックで構成されている。これは縁取りブロックの対角部分でも同様である。この対角成分のみを有する各小行列ブロックを参照する前処理（前進消去、後退代入）がベクトル演算可能な処理の単位になる。行列２１に対応するリストベクトル２２には、行列全体の中に含まれる対角成分のみを有する小行列ブロックの数（ベクトル演算可能なループの数）と各小行列ブロックの先頭を示す行番号が記憶されている。ブロックの先頭行インデクスリスト２３には、図３における１１〜１７の各ブロックの先頭行番号を指し示しているリストベクトル２２上のインデクスが記憶されている。
【００２７】
図５に本実施例にもとづいて作成したデータを用いた不完全ＬＵ分解前処理を共有メモリ型並列計算機上で実行する場合の演算方法の詳細なフローを示す。
【００２８】
まず初めに、前進消去計算においてブロックの先頭行インデクスリスト２３に記憶されたインデクスを参照する順序を示すリストＮＣを定義する（図５ステップＳ１１）。プロセッサ数Ｎpeが４のときには、前進消去計算において、図３の対角ブロック１１，１２，１４，１５を参照する計算を最初に行い、続いて縁取りブロック１３，１６を参照する計算、最後に縁取りブロック１７を参照する計算を行なう。したがって、各ブロック１１〜１７をそれぞれ通し番号１〜７で表すとすると、各ブロックの参照順序は１，２，４，５，３，６，７となる。この情報を記憶するのがリストＮＣである。続いてＮＤの段数ＮＥ（＝log2(Ｎpe)）を求め、リストＮＣを参照する際に用いるインデクスｉｃを初期化する（図５ステップＳ１２）。
【００２９】
次に、前進消去計算を、並列実行可能なプロセッサ数により、ＮＥ＋１段階の処理に分けて行なう。以下では、Ｎpe台のプロセッサで並列実行可能な前進消去計算の最初の処理を第ＮＥ段の処理、Ｎpe／２台のプロセッサでプロセッサで並列実行可能な次の処理を第ＮＥ−１段の処理、以下同様にして最後の１プロセッサで実行する処理を第０段の処理と呼ぶ。前進消去計算では第ＮＥ段の処理から降順に計算を進め（図５ステップＳ１３）、当該段目の処理を分担する各プロセッサに対して（図５ステップＳ１４）、そのプロセッサが参照するブロックをリストＮＣから特定し（図５ステップＳ１５）、当該ブロックに含まれている小行列ブロックの先頭行が記憶されているリストベクトル２２の範囲を先頭行インデクスリスト２３から求める（図５ステップＳ１６）。
【００３０】
次に当該ブロックに含まれている小行列ブロックの昇順に（図５ステップＳ１７）、当該小行列ブロックの行列における行番号の範囲をリストベクトル２２から求め（図５ステップＳ１８）、その行範囲にある各行の前進消去計算をベクトル演算により行なう（図５ステップＳ１９，Ｓ２０）。各プロセッサにおける当該段目の前進消去計算が終了したら、プロセッサ間の同期処理を行い（図５ステップＳ２１）、インデクスｉｃをアップデートする（図５ステップＳ２２）。
【００３１】
続いて、後退代入計算を行なう。インデクスｉｃを再初期化（図５ステップＳ２３）後、後退代入計算では第０段の処理から昇順に計算を進め（図５ステップＳ２４）、当該段目の処理を分担する各プロセッサに対して（図５ステップＳ２５）、そのプロセッサが参照するブロックをリストＮＣから特定し（図５ステップＳ２６）、当該ブロックに含まれている小行列ブロックの先頭行が記憶されているリストベクトル２２の範囲を先頭行インデクスリスト２３から求める（図５ステップＳ２７）。ただし、リストベクトル２２の最後の部分に格納された情報に対応する小行列ブロックでは後退代入計算が不要のため、この小行列ブロックは処理の対象から除く（図５ステップＳ２８）。
【００３２】
次に当該ブロックに含まれている小行列ブロックの降順に（図５ステップＳ２９）、当該小行列ブロックの行列における行番号の範囲をリストベクトル２２から求め（図５ステップＳ３０）、その行範囲にある各行の後退代入計算をベクトル演算により行なう（図５ステップＳ３１，Ｓ３２）。各プロセッサにおける当該段目の後退代入計算が終了したら、プロセッサ間の同期処理を行い（図５ステップＳ３３）、インデクスｉｃをアップデートする（図５ステップＳ３４）。
以上で不完全ＬＵ分解の前処理演算が終了するが、プロセッサ間の同期処理（図５ステップＳ２１，Ｓ３３）は一回の前処理当たりlog2(Ｎpe)×２回行なうだけでよい。このため、同期処理のオーバーヘッドは従来方式の場合に比べ大幅に削減され、前処理演算の並列化効率が向上する。
【００３３】
以上では、本発明による前処理演算を共有メモリ型並列計算機上で実現する方法を示したが、本発明の方法では前処理を複数のプロセッサに分散して独立に実行させるため、本発明の方法を分散メモリ型並列計算機にも同様に適用できることは明らかである。
【産業上の利用可能性】
【００３４】
以上説明したように、本発明によれば、前処理付き反復解法によって連立一次方程式の解を求める計算において一回の前処理に必要となるプロセッサ間の同期処理の回数を削減でき、前処理演算に要する時間を大幅に削減できるので、並列計算機システムを用いた連立一次方程式の求解処理の処理速度向上に有効であり、この分野での実施が見込まれる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施例による行列リオーダリング方法を示すフローチャートである。
【図２】図１のＮＤオーダリングにより並べ替えられた後の行列の構造の例を示す図である。
【図３】図２の行列を不完全ＬＵ分解した際に求められる下三角行列Ｌの構造を示す図である。
【図４】図１にもとづいて作成したブロックの先頭行インデクスリスト、前処理のベクトル計算順序を示すリストベクトルおよびリオーダリング後の行列の一例を示す図である。
【図５】図１にもとづいて作成したデータを用いた共有メモリ型並列計算機上での不完全ＬＵ分解前処理演算方法の詳細を示すフローチャートである。
【図６】従来法による行列リオーダリング方法を示すフローチャートである。
【図７】従来法にもとづいて作成した前処理のベクトル計算順序を示すリストベクトルおよびリオーダリング後の行列の一例を示す図である。
【図８】従来法にもとづいて作成したデータを用いた共有メモリ型並列計算機上での不完全ＬＵ分解前処理演算方法の詳細を示すフローチャートである。
【符号の説明】
【００３６】
１，２：対角ブロック、３：縁取りブロック、４，５：対角ブロック、６，７：縁取りブロック、１１，１２：下三角行列の対角ブロック、１３：下三角行列の縁取りブロック、１４，１５：下三角行列の対角ブロック，１６，１７：下三角行列の縁取りブロック、２１：本発明によるリオーダリング後の係数行列、２２：前処理のベクトル計算順序を示すリストベクトル、２３：ブロックの先頭行インデクスリスト、３１：従来法によるリオーダリング後の係数行列、３２：前処理のベクトル計算順序を示すリストベクトル、Ｓ１〜Ｓ７：本発明の一実施例による行列リオーダリングの処理単位、Ｓ１１〜Ｓ３４：本発明の一実施例による共有メモリ型並列計算機上での不完全ＬＵ分解前処理演算の処理単位、Ｓ４１〜Ｓ４４：従来法による行列リオーダリングの処理単位、Ｓ５１〜Ｓ６０：従来法による共有メモリ型並列計算機上での不完全ＬＵ分解前処理演算の処理単位。
【図１】
2007133710.tif 000003
【図２】
2007133710.tif 000004
【図３】
2007133710.tif 000005
【図４】
2007133710.tif 000006
【図５】
2007133710.tif 000007
【図６】
2007133710.tif 000008
【図７】
2007133710.tif 000009
【図８】
2007133710.tif 000010