(57)【特許請求の範囲】
【請求項１】
偏微分方程式を離散化し、格子点上の変数に関する連立一次方程式の係数を並列に求める偏微分並列離散化装置において、
偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てられた値を格納する作業域と、
偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てられた値を上記作業域に格納する格納手段と、
上記作業域中の割り当てられた値を用いて離散化の重みを計算する手段と、
上記計算する手段が求めた上記離散化された重みを用いて１階偏微分の式から係数を求める第１の手段と、
上記計算する手段が求めた上記離散化された重みを用いて２階偏微分の式から係数を求める第２の手段と、
上記偏微分方程式の変数Ｕの係数を求める第３の手段と、
上記第１、第２の手段および第３の手段によって求めた係数を各プロセッサで共有する配列を記憶する領域に格納する手段と
を各プロセッサに設けたことを特徴とする偏微分並列離散化装置。
【請求項２】
上記格納手段が、偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てる際に、一部を重複して割り当てて隣接する格子点の値を、他のプロセッサから転送を受けることなく並列に独立して計算した値を格納することを特徴とする請求項１記載の偏微分並列離散化装置。
【請求項３】
コンピュータを、
偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てられた値を作業域に格納する格納手段と、
上記作業域中の割り当てられた値を用いて離散化の重みを計算する手段と、
上記計算する手段が求めた上記離散化された重みを用いて１階偏微分の式から係数を求める第１の手段と、
上記計算する手段が求めた上記離散化された重みを用いて２階偏微分の式から係数を求める第２の手段と、
上記偏微分方程式の変数Ｕの係数を求める第３の手段と、
上記第１、第２の手段および第３の手段によって求めた係数を各プロセッサで共有する配列を記憶する領域に格納する手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、偏微分方程式の係数を並列に求める偏微分並列離散化装置および記録媒体に関するものである。
【０００２】
【従来の技術】
従来、２階偏微分方程式を離散化して、連立一次方程式を生成するときには、隣接する格子点の値（中心、１つ前、１つ後というように隣接する格子点の値）を取り込み、当該格子点で関数の値を評価しながら変数の係数を決めるようにしていた。
【０００３】
【発明が解決しようとする課題】
このため、離散化したときの変数の各係数を格子点で関数の値を評価しながら決めるようなインタフェースを設定すると、格子点ごとに評価関数を呼び出すことになり評価を行うときの計算機のオーバーヘッドが増えたり、計算機の並列特性を利用して高速化することが難しくなってしまうという問題があった。
【０００４】
本発明は、これらの問題を解決するため、２階偏微分方程式について各プロセッサに割り当てた範囲内で離散化の重みを計算し、これらをもとに各ＰＥで変数の１階偏微分、２階偏微分の式から係数をそれぞれ並列に求めて作業域にそれぞれ格納および変数の係数を格納し、２階偏微分方程式の係数を並列計算で高速に求めることを目的としている。
【０００５】
【課題を解決するための手段】
図１を参照して課題を解決するための手段を説明する。
図１において、▲２▼は、偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てたりなどするものである。
【０００６】
▲３▼は、作業域中の割り当てられた値を用いて離散化の重みを計算したりなどするものである。
▲５▼は、離散化された重みを用いて１階偏微分の式から係数を求めたりなどするものである。
【０００７】
▲６▼は、離散化された重みを用いて２階偏微分の式から係数を求めたりなどするものである。
▲７▼は、偏微分方程式の変数Ｕの係数を求めたりなどするものである。
【０００８】
▲８▼は、求めた係数を各プロセッサで共有する配列に格納したりなどするものである。
次に、動作を説明する。
【０００９】
▲２▼のステップで偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てられた値を作業域に格納し、▲３▼のステップで作業域中の割り当てられた値を用いて離散化の重みを計算し、▲５▼のステップで離散化された重みを用いて１階偏微分の式から係数を求め、▲６▼のステップで離散化された重みを用いて２階偏微分の式から係数を求め、▲７▼のステップで偏微分方程式の変数Ｕの係数を求め、▲８▼のステップで求めた係数を各プロセッサで共有する配列に格納するようにしている。
【００１０】
この際、偏微分方程式の各係数を３次元あるいは２次元でプロセッサ数に分割して割り当てる際に、一部を重複して割り当てて隣接する格子点の値を、他のプロセッサから転送を受けることなく並列に独立して計算するようにしている。
【００１１】
従って、２階偏微分方程式について各プロセッサに割り当てた範囲内で離散化の重みを計算し、これらをもとに各ＰＥで変数の１階偏微分、２階偏微分の式から係数をそれぞれ並列に求めて作業域にそれぞれ格納および変数Ｕの係数を格納することにより、２階偏微分方程式の係数を並列計算で高速に求めることが可能となる。
【００１２】
【実施例】
次に、図１から図５を用いて本発明の実施の形態および動作を順次詳細に説明する。
【００１３】
図１は、本発明のシステム構成図を示す。
図１において、▲１▼は、２階偏微分方程式を指定する。これは、係数を求める対象の２階偏微分方程式および境界条件を指定、例えば後述する図２の（ａ）の２階微分方程式および図２の（ｂ）の境界条件を指定する。
【００１４】
▲２▼は、偏微分方程式の係数及び境界条件などの係数およびＸ、Ｙ、Ｚごとの格子の間隔巾（異なった巾でもよい）を格納する配列を分散配置し、必要な値を設定する。Ａ３およびＸ３は各ＰＥ（プロセッサ）で幅１だけ重ねて分割する。これは、▲１▼で指定した図２の（ａ）の２階偏微分方程式、（ｂ）の境界条件の係数を格納する配列を、各ＰＥに分散配置、例えば均等に分割して分散配置し、必要な値を設定する、この際、図３の（ａ），（ｃ）に示すように、Ａ３およびＸ３について隣接する格子点の値を、他のＰＥから転送を受けなくて、各ＰＥでそれぞれ独立に計算できるように１幅分重複してそれぞれのＰＥに図示のように割り当てる。
【００１５】
▲３▼は、各ＰＥで作業域に対して、各ＰＥで必要な係数（ω’、ω"、η、π）の値（離散化の重みの値）を計算する。これは、後述する図４の（ａ），（ｂ），（ｃ），（ｄ）に示す式により各ＰＥで計算するために必要な係数（ω’、ω"、η、π）を計算して求める。
【００１６】
▲４▼は、各ＰＥで、ｎ１×ｎ２×ｎ３の中で１つを計算対象として決める。尚、ベクトル計算機で複数を同時に計算する場合には、１度にベクトル計算する対象の範囲を決める。
【００１７】
▲５▼は、１階偏微分の式から係数を求め、配列ＤＩＡＧに格納する。これは、後述する図５の（ａ）に示す式により、１階偏微分の式の係数の値として、図中に示す係数の値を求める。
【００１８】
▲６▼は、２階偏微分の式から係数を求め、配列ＤＩＡＧに格納する。これは、後述する図５の（ｂ）に示す式により、２階偏微分の式の係数の値として、図中に示す係数の値を求める。
【００１９】
▲７▼は、ＤＩＡＧに格納された対応する場所にＵの係数Ｃを加える。右辺はｆを配列Ｒに格納する。これは、後述する図５の（ｃ）に示すように、変数Ｕの係数Ｃを求め（取り出し）、▲５▼と▲６▼で係数を格納した配列ＤＩＡＧの対応する場所にＵの求めた係数Ｃを加える。また、右辺のｆの値を次の▲８▼で配列Ｒ（一次元配列Ｒ）に格納する。
【００２０】
▲８▼は、▲５▼と▲６▼と▲７▼の結果を配列Ａ、Ｒに転送を利用して格納する。
▲９▼は、終わりか判別する。ＹＥＳの場合には、終了する。ＮＯの場合には、▲４▼に戻り繰り返す。
【００２１】
以上によって、２階偏微分方程式について各ＰＥに割り当てた範囲内で離散化の重み（係数（ω’、ω"、η、π））を計算し、これらをもとに各ＰＥで変数の１階偏微分、２階偏微分の式から係数をそれぞれ並列に求めて作業域にそれぞれ格納および変数Ｕの係数Ｃを格納、ｆの値を格納などすることにより、２階偏微分方程式の係数を複数のＰＥで並列計算（更に、ベクトル計算機で複数を同時に計算）して高速に求めることが可能となる。
【００２２】
図２は、本発明の説明図（指定、▲１▼）を示す。
図２の（ａ）は、２階偏微分方程式の例を示す。この２階偏微分方程式は、既述した図１の▲１▼で指定した係数を求める対象のものであって、良く使われる公知の２階偏微分方程式である。
【００２３】
図２の（ｂ）は、境界条件の例を示す。
以上のような、２階偏微分方程式および境界条件を既述した図１の▲１▼で指定したときに、当該指定した図示の２階偏微分方程式の係数などを以下に説明する式で求めることができる。
【００２４】
図３は、本発明の説明図（分散配置、▲２▼）を示す。これは、既述した図１の▲２▼で複数のＰＥに分散配置するときの様子を模式的に表したものである。
（１）  配列Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２，Ｂ３，Ｃ，Ｆ，Ｘ１，Ｘ２，Ｘ３，Ａ，Ｒの分散配置について説明する。
【００２５】
（２）  Ａ１，Ａ２，Ｂ１，Ｂ２，Ｂ３，Ｃ，Ｆは、３次元目を均等に分割して各ＰＥに分散配置する。
例えばＡ１（２０，２０，２０）をＰＥ１からＰＥ４に分散配置する場合、
・Ａ１（２０，２０，１：５）をＰＥ１
・Ａ１（２０，２０，６：１０）をＰＥ２
・Ａ１（２０，２０，１１：１５）をＰＥ３
・Ａ１（２０，２０，１６：２０）をＰＥ４
にそれぞれ分散配置する。
【００２６】
（３）  (∂／∂ｘ3)ａ3の離散化に関係するＡ３は、ＰＥ間で１幅重ねて配置、例えば図３の（ａ）、（ｂ）に示すように１幅重ねて配置する。従って、３次元目の添字範囲は、図３の（ａ）、（ｂ）に示すように、図示の下記のようになる。
【００２７】
・Ａ３（２０，２０，１：６）をＰＥ１
・Ａ３（２０，２０，５：１１）をＰＥ２
・Ａ３（２０，２０，１０：１６）をＰＥ３
・Ａ３（２０，２０，１５：２０）をＰＥ４
にそれぞれ分散配置する。ここで、ＰＥ間で重複する部分の値は事前に同じ値を設定しておく（図１の▲２▼）。
【００２８】
（４）  配列Ｘ１，Ｘ２は、各ＰＥに重複して割り付けて、同じ値を持たせる。Ｘ３については、各ＰＥに分散して配置する（但し、大きさ１だけ隣りのＰＥと重複した値を持つ）。例えばＸ３（２０）を４ＰＥに配置すると、Ａ３の３次元目と同じように、図３の（ｃ）に示すように、
・Ｘ３（１：６）をＰＥ１
・Ｘ３（５：１１）をＰＥ２
・Ｘ３（１０：１６）をＰＥ３
・Ｘ３（１５：２０）をＰＥ４
にそれぞれ分散配置する。重複した部分の値は同じ値を入れておく。
【００２９】
（５）  生成された係数行列を格納する配列Ａは、１次元目を均等に分割することで、各ＰＥに分散配置する。
（６）  右辺ベクトルを格納する配列Ｒは、同じく均等に一次元目を分割して配置する。
【００３０】
以上のように、各ＰＥに配置および一部分を重複して配置することにより、各ＰＥ内で境界部分の格子点の演算を行うときに必要な隣接する格子点の値を各ＰＥに予め分散配置してあるため、隣接するＰＥに隣の格子点の値の転送を受ける必要なしに、各ＰＥが独立かつ並列に演算を行うことが可能となる。
【００３１】
図４は、本発明の説明図（重み算出、▲３▼）を示す。これは、既述した図１の▲３▼で離散化の重み（係数、ω’、ω”、η、π）を算出する式をそれぞれ示す。
図４の（ａ）は、ω’を算出する式を示す。この重み（係数）ω’は、変数ｘｎに関する１階微分を隣接する格子点の値で近似するときの重みであって、上から順に
・ｍ＝−１（１つ前の格子点）のとき
・ｍ＝０（真中の格子点）のとき
・ｍ＝１（次の格子点）のとき
のそれぞれの重みを求める式である。図中のｈは隣接する格子点間の距離であって、添字でその隣接する格子点を表す。
【００３２】
図４の（ｂ）は、ω”を算出する式を示す。この重み（係数）ω”は、変数ｘｎに関する２階微分を隣接する格子点の値で近似するときの重みであって、上から順に
・ｍ＝−１（１つ前の格子点）のとき
・ｍ＝０（真中の格子点）のとき
・ｍ＝１（次の格子点）のとき
のそれぞれの重みを求める式である。図中のｈは隣接する格子点間の距離であって、添字でその隣接する格子点を表す。
【００３３】
図４の（ｃ）は、ηを算出する式を示す。この重み（係数）ηは、変数ｘｎに関する１階微分を右に隣接する格子点の値で近似するときの重みであって、上から順に
・ｍ＝−１（１つ前の格子点）のとき
・ｍ＝０（真中の格子点）のとき
・ｍ＝１（次の格子点）のとき
のそれぞれの重みを求める式である。図中のｈは隣接する格子点間の距離であって、添字でその隣接する格子点を表す。
【００３４】
図４の（ｄ）は、πを算出する式を示す。この重み（係数）πは、変数ｘｎに関する１階微分を左に隣接する格子点の値で近似するときの重みであって、上から順に
・ｍ＝−１（１つ前の格子点）のとき
・ｍ＝０（真中の格子点）のとき
・ｍ＝１（次の格子点）のとき
のそれぞれの重みを求める式である。図中のｈは隣接する格子点間の距離であって、添字でその隣接する格子点を表す。
【００３５】
以上の式を用いて離散化の重み（ω’、ω”、η、π）をそれぞれ求めることが可能となる。
図５は、本発明の説明図（係数算出、▲５▼、▲６▼、▲７▼）を示す。これは、既述した図１の▲５▼、▲６▼、▲７▼でそれぞれ係数を求めるときの式を示す。
【００３６】
図５の（ａ）は、１階偏微分の係数を求める式を示す。これは、既述した図１の▲５▼の１階偏微分の係数を求める式であって、図中のなみせんの部分が求める係数である。
【００３７】
図５の（ｂ）は、２階偏微分の係数を求める式を示す。これは、既述した図１の▲６▼の２階偏微分の係数を求める式であって、図中のなみせんの部分が求める係数である。
【００３８】
図５の（ｃ）は，変数Ｕの係数Ｃを求める式を示す。これは、既述した図１の▲７▼の変数Ｕの係数Ｃを求める式であって、当該Ｃをそのまま加算することで求める。
【００３９】
以上の式をもとに１階偏微分の係数、２階偏微分の係数、変数Ｕの係数Ｃをそれぞれ求めることが可能となる。そして、各格子点で求めた係数を配列Ａ、Ｒに格納する（既述した図１の▲８▼）。
【００４０】
【発明の効果】
以上説明したように、本発明によれば、２階偏微分方程式について各プロセッサに割り当てた範囲内で離散化の重みを計算し、これらをもとに各ＰＥで変数の１階偏微分、２階偏微分の式から係数をそれぞれ並列に求めて作業域にそれぞれ格納および変数Ｕの係数Ｃを格納する構成を採用しているため、２階偏微分方程式の係数を並列計算で高速に求めることが可能となる。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】本発明の説明図（指定，▲１▼）である。
【図３】本発明の説明図（分散配置、▲２▼）である。
【図４】本発明の説明図（重み算出、▲３▼）である。
【図５】本発明の説明図（係数算出、▲５▼、▲６▼、▲７▼）である。
【符号の説明】
▲１▼：２階偏微分方程式などの指定
▲２▼：各ＰＥに分散配置
▲３▼：離散化の重み算出
▲５▼：１階偏微分の係数の計算
▲６▼：２階偏微分の係数の計算
▲８▼：結果を配列Ａ，Ｒに格納
【図１】
0003805573.tif 000002
【図２】
0003805573.tif 000003
【図３】
0003805573.tif 000004
【図４】
0003805573.tif 000005
【図５】
0003805573.tif 000006