JPH0628387A - 連立一次方程式の並列計算装置 - Google Patents
連立一次方程式の並列計算装置Info
- Publication number
- JPH0628387A JPH0628387A JP18406692A JP18406692A JPH0628387A JP H0628387 A JPH0628387 A JP H0628387A JP 18406692 A JP18406692 A JP 18406692A JP 18406692 A JP18406692 A JP 18406692A JP H0628387 A JPH0628387 A JP H0628387A
- Authority
- JP
- Japan
- Prior art keywords
- grid
- vector
- lattice
- odd
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 連立一次方程式を超平面法でベクトル化する
とき、メモリへのアクセス競合を防止する。 【構成】 M1−1(M1=i方向の格子点数)が奇数か
偶数かを判断し、M1−1が奇数の時は、i方向の格子
点番号iとj方向の格子点番号jとの和i+jが同じ値
になる格子位置のベクトル要素を同時に並列計算し、偶
数の時はi+2jまたは2i+jが同じ値になる格子位
置のベクトル要素を同時に並列計算するか、あるいはM
1−1が奇数の時はi方向に仮設格子点を追加し、i+
jが同じ値になる格子位置のベクトル要素を同時に並列
計算する。
とき、メモリへのアクセス競合を防止する。 【構成】 M1−1(M1=i方向の格子点数)が奇数か
偶数かを判断し、M1−1が奇数の時は、i方向の格子
点番号iとj方向の格子点番号jとの和i+jが同じ値
になる格子位置のベクトル要素を同時に並列計算し、偶
数の時はi+2jまたは2i+jが同じ値になる格子位
置のベクトル要素を同時に並列計算するか、あるいはM
1−1が奇数の時はi方向に仮設格子点を追加し、i+
jが同じ値になる格子位置のベクトル要素を同時に並列
計算する。
Description
【0001】
【産業上の利用分野】本発明は、差分法で離散近似して
得られる連立一次方程式の数値解を、不完全三角分解付
き共役勾配法系の反復解法で高速に求める連立一次方程
式の並列計算装置に関するものである。
得られる連立一次方程式の数値解を、不完全三角分解付
き共役勾配法系の反復解法で高速に求める連立一次方程
式の並列計算装置に関するものである。
【0002】
【従来の技術】従来において、差分法で離散近似して得
られる連立一次方程式の数値解を求める手法として、村
田健郎他著「スーパーコンピュータ、科学技術計算への
適用」(丸善)に記述されているように、不完全三角分
解を前処理に使用する連立一次方程式の解析方式があ
る。
られる連立一次方程式の数値解を求める手法として、村
田健郎他著「スーパーコンピュータ、科学技術計算への
適用」(丸善)に記述されているように、不完全三角分
解を前処理に使用する連立一次方程式の解析方式があ
る。
【0003】この方法では、超平面法をそのまま使用し
てベクトル化しているため、2次元5点差分法で離散化
すると、超平面における各格子点のベクトル要素を格納
するメモリへのアクセス間隔はM1−1(M1はi方向の
格子点数)となるが、通常、超平面の分割数は「10
0」とか「200」などの偶数値で指定されるため、格
子点数はM1+1となる。格子点数がM1+1となると、
メモリへのアクセス間隔はM1となる。
てベクトル化しているため、2次元5点差分法で離散化
すると、超平面における各格子点のベクトル要素を格納
するメモリへのアクセス間隔はM1−1(M1はi方向の
格子点数)となるが、通常、超平面の分割数は「10
0」とか「200」などの偶数値で指定されるため、格
子点数はM1+1となる。格子点数がM1+1となると、
メモリへのアクセス間隔はM1となる。
【0004】従って、例えばM1=100の場合、メモ
リへのアクセス間隔が「8」または「4」の倍数の間隔
で行われることになる。
リへのアクセス間隔が「8」または「4」の倍数の間隔
で行われることになる。
【0005】
【発明が解決しようとする課題】しかしながら、メモリ
へのアクセス間隔が「8」または「4」の倍数の間隔で
行われと、通常、メモリのアドレスが「8」の倍数の間
隔で設定されるため、メモリアクセスの競合が発生す
る。
へのアクセス間隔が「8」または「4」の倍数の間隔で
行われと、通常、メモリのアドレスが「8」の倍数の間
隔で設定されるため、メモリアクセスの競合が発生す
る。
【0006】すなわち、例えば図12に示すように、M
1−1が偶数となる超平面上の格子構造において、各格
子点のベクトル要素を図13に示すメモリmmのアドレ
ス方向に割当て、破線で関係付けているように、i方向
の格子点番号iとj方向の格子点番号jとの和i+jが
同じ値になる格子位置のベクトル要素を同時に並列計算
しようとした場合、メモリへのアクセス間隔は常に
「8」となる。
1−1が偶数となる超平面上の格子構造において、各格
子点のベクトル要素を図13に示すメモリmmのアドレ
ス方向に割当て、破線で関係付けているように、i方向
の格子点番号iとj方向の格子点番号jとの和i+jが
同じ値になる格子位置のベクトル要素を同時に並列計算
しようとした場合、メモリへのアクセス間隔は常に
「8」となる。
【0007】このようにメモリへのアクセス間隔が
「8」になると、例えば、格子点番号「2」と「10」
のベクトル要素を同時に計算する場合、同時に同じメモ
リアドレスをアクセスしてしまうというアクセスの競合
が発生する。
「8」になると、例えば、格子点番号「2」と「10」
のベクトル要素を同時に計算する場合、同時に同じメモ
リアドレスをアクセスしてしまうというアクセスの競合
が発生する。
【0008】このようなアクセスの競合が発生すると、
アクセス要求を1つずつ選択するという方法を採らざる
を得なくなるため、演算処理時間が大幅に延び、効率が
悪くなるという問題がある。
アクセス要求を1つずつ選択するという方法を採らざる
を得なくなるため、演算処理時間が大幅に延び、効率が
悪くなるという問題がある。
【0009】本発明の目的は、i方向の格子点数が奇数
になる場合でも高速に数値解を求めることができる連立
一次方程式の並列計算装置を提供することである。
になる場合でも高速に数値解を求めることができる連立
一次方程式の並列計算装置を提供することである。
【0010】
【課題を解決するための手段】除機目的を達成するため
に、本発明は、差分法により離散近似して得られる連立
一次方程式をi方向およびj方向の格子点数がそれぞれ
M1、M2の(M1,M2=2以上の任意の整数)の超平面
法でベクトル化し、共役勾配法系の反復解法で数値解を
求める際に、前記i方向の格子点数M1から1を減じた
値が偶数か、奇数かを判定する判定手段を設けると共
に、この判定手段の判定結果により、前記格子点数M1
から1を減じた値が奇数の時は、i方向の格子点番号i
とj方向の格子点番号jとの和i+jが同じ値になる格
子位置のベクトル要素を同時に並列計算し、偶数の時は
i+2jまたは2i+jが同じ値になる格子位置のベク
トル要素を同時に並列計算するように順序付ける制御手
段とを設けた。
に、本発明は、差分法により離散近似して得られる連立
一次方程式をi方向およびj方向の格子点数がそれぞれ
M1、M2の(M1,M2=2以上の任意の整数)の超平面
法でベクトル化し、共役勾配法系の反復解法で数値解を
求める際に、前記i方向の格子点数M1から1を減じた
値が偶数か、奇数かを判定する判定手段を設けると共
に、この判定手段の判定結果により、前記格子点数M1
から1を減じた値が奇数の時は、i方向の格子点番号i
とj方向の格子点番号jとの和i+jが同じ値になる格
子位置のベクトル要素を同時に並列計算し、偶数の時は
i+2jまたは2i+jが同じ値になる格子位置のベク
トル要素を同時に並列計算するように順序付ける制御手
段とを設けた。
【0011】あるいは、i方向の格子点数M1から1を
減じた値が偶数か、奇数かを判定する判定手段を設ける
と共に、この判定手段の判定結果により、前記格子点数
M1から1を減じた値が奇数の時は、i方向の格子点番
号iとj方向の格子点番号jとの和i+jが同じ値にな
る格子位置のベクトル要素を同時に並列計算し、偶数の
時はi方向に仮設格子点を1つ付加し、i+jが同じ値
に成る格子位置のベクトル要素を同時に並列計算するよ
うに順序付ける制御手段とを設けた。
減じた値が偶数か、奇数かを判定する判定手段を設ける
と共に、この判定手段の判定結果により、前記格子点数
M1から1を減じた値が奇数の時は、i方向の格子点番
号iとj方向の格子点番号jとの和i+jが同じ値にな
る格子位置のベクトル要素を同時に並列計算し、偶数の
時はi方向に仮設格子点を1つ付加し、i+jが同じ値
に成る格子位置のベクトル要素を同時に並列計算するよ
うに順序付ける制御手段とを設けた。
【0012】
【作用】超平面法では、i+jが同じ値になる格子位置
のベクトル要素を並列演算の一グループとしてべクトル
計算する。この方法においては、i方向の格子点数M1
から1を減じた値M1−1が奇数の場合はそのまま計算
すれば良いが、M1−1が偶数の場合は上記のようにメ
モリアクセスの競合が発生する。
のベクトル要素を並列演算の一グループとしてべクトル
計算する。この方法においては、i方向の格子点数M1
から1を減じた値M1−1が奇数の場合はそのまま計算
すれば良いが、M1−1が偶数の場合は上記のようにメ
モリアクセスの競合が発生する。
【0013】このメモリアクセスの競合は、超平面法を
変更し、i+2j又は2i+jが同じ値になる格子点を
一グループとしてベクトル計算することにより解消する
ことができ、しかもこのようにしても収束性は変化しな
い。この場合、i+2jが同じ値に成るベクトル要素で
グループ分けすると、メモリへのアクセス間隔はM1−
2となり、また2i+jが同じ値となるベクトル要素で
グループ分けすると、メモリへのアクセス間隔は2M1
−1となり、M1−1が偶数の場合はいずれも奇数とな
る。
変更し、i+2j又は2i+jが同じ値になる格子点を
一グループとしてベクトル計算することにより解消する
ことができ、しかもこのようにしても収束性は変化しな
い。この場合、i+2jが同じ値に成るベクトル要素で
グループ分けすると、メモリへのアクセス間隔はM1−
2となり、また2i+jが同じ値となるベクトル要素で
グループ分けすると、メモリへのアクセス間隔は2M1
−1となり、M1−1が偶数の場合はいずれも奇数とな
る。
【0014】そこで、本発明においては、判定手段によ
ってi方向の格子点数M1から1を減じた値が偶数か、
奇数かを判定し、その判定結果により、M1−1が奇数
の時は、i方向の格子点番号iとj方向の格子点番号j
との和i+jが同じ値になる格子位置のベクトル要素を
同時に並列計算し、偶数の時はi+2jまたは2i+j
が同じ値になる格子位置のベクトル要素を同時に並列計
算する。
ってi方向の格子点数M1から1を減じた値が偶数か、
奇数かを判定し、その判定結果により、M1−1が奇数
の時は、i方向の格子点番号iとj方向の格子点番号j
との和i+jが同じ値になる格子位置のベクトル要素を
同時に並列計算し、偶数の時はi+2jまたは2i+j
が同じ値になる格子位置のベクトル要素を同時に並列計
算する。
【0015】これにより、メモリへのアクセス間隔は常
に奇数となり、アクセスの競合は発生しなくなり、格子
点数が奇数の場合でも高速に数値解を求めることができ
る。
に奇数となり、アクセスの競合は発生しなくなり、格子
点数が奇数の場合でも高速に数値解を求めることができ
る。
【0016】この場合、平均ベクトル長は、従来の超平
面法でM1×M2/(M1+M2−1)であったのが、本発
明を適用した超平面法ではM1×M2/(M1+2・M2−
2)と少し短くなる。
面法でM1×M2/(M1+M2−1)であったのが、本発
明を適用した超平面法ではM1×M2/(M1+2・M2−
2)と少し短くなる。
【0017】
【実施例】以下、本発明を図示する実施例を参照して詳
細に説明する。
細に説明する。
【0018】図1は差分法による数値計算処理の手順を
示すフローチャートであり、まず、解析対象領域および
物性値等のデ−タを入力する(ステップ10)。次に、
解析対象領域を差分格子で指定された分割数に分割する
(ステップ11)。続いて、差分法で連立一次方程式A
x=bを作成する(ステップ12)。
示すフローチャートであり、まず、解析対象領域および
物性値等のデ−タを入力する(ステップ10)。次に、
解析対象領域を差分格子で指定された分割数に分割する
(ステップ11)。続いて、差分法で連立一次方程式A
x=bを作成する(ステップ12)。
【0019】この後、連立一次方程式Ax=bの数値解
xを共役勾配法系の反復解法で求め(ステップ13)、
最後に、その数値解をグラフで出力する(ステップ1
4)。
xを共役勾配法系の反復解法で求め(ステップ13)、
最後に、その数値解をグラフで出力する(ステップ1
4)。
【0020】図2は連立一次方程式Ax=bの数値解x
を共役勾配法系の反復解法で求めるステップ13の詳細
構造の一実施例を示すフロ−チャ−トであり、まず、図
1のステップ11で分割した超平面の格子構造に基づい
て、同一グル−プで並列演算するベクトル要素の格子位
置番号のリストと、メモリアクセス間隔IPおよびベク
トル計算回数LPを求める(ステップ20)。
を共役勾配法系の反復解法で求めるステップ13の詳細
構造の一実施例を示すフロ−チャ−トであり、まず、図
1のステップ11で分割した超平面の格子構造に基づい
て、同一グル−プで並列演算するベクトル要素の格子位
置番号のリストと、メモリアクセス間隔IPおよびベク
トル計算回数LPを求める(ステップ20)。
【0021】このステップ20の詳細を図3に示すが、
まず、M1−1が偶数か、奇数かを判定する(ステップ
30)。この後、この判定結果に応じた格子位置番号の
リストと、メモリアクセス間隔IPおよびベクトル計算
回数LPを求める(ステップ31,32)。
まず、M1−1が偶数か、奇数かを判定する(ステップ
30)。この後、この判定結果に応じた格子位置番号の
リストと、メモリアクセス間隔IPおよびベクトル計算
回数LPを求める(ステップ31,32)。
【0022】ここで、M1−1が奇数となる図4のよう
な格子構造であったとすると、同一グル−プで並列演算
するベクトル要素の格子位置番号のリストとして、開始
位置の格子番号ISのリスト33と終了位置の格子番号
IEのリスト34とから成るリスト35を作成する。
な格子構造であったとすると、同一グル−プで並列演算
するベクトル要素の格子位置番号のリストとして、開始
位置の格子番号ISのリスト33と終了位置の格子番号
IEのリスト34とから成るリスト35を作成する。
【0023】なお、図4において、丸印で囲んだ数字は
計算順序を示す番号であり、無印の数字は格子位置番号
である。
計算順序を示す番号であり、無印の数字は格子位置番号
である。
【0024】リスト33,34はこの格子位置番号で示
され、図4に破線で関係付けた格子位置番号のうち、最
も小さい番号が開始位置の格子番号IS、最も大きい番
号が終了位置の格子番号IEとして登録される。
され、図4に破線で関係付けた格子位置番号のうち、最
も小さい番号が開始位置の格子番号IS、最も大きい番
号が終了位置の格子番号IEとして登録される。
【0025】一方、M1−1が偶数となる図5のような
格子構造であったとすると、同一グル−プで並列演算す
るベクトル要素の格子位置番号のリストとして、開始位
置の格子番号ISのリスト36と終了位置の格子番号I
Eのリスト37とから成るリスト38を作成する。
格子構造であったとすると、同一グル−プで並列演算す
るベクトル要素の格子位置番号のリストとして、開始位
置の格子番号ISのリスト36と終了位置の格子番号I
Eのリスト37とから成るリスト38を作成する。
【0026】なお、図5において、丸印で囲んだ数字は
計算順序を示す番号であり、無印の数字は格子位置番号
である。
計算順序を示す番号であり、無印の数字は格子位置番号
である。
【0027】このようにして作成されるリスト35,3
8に示される順序に従って各格子点のベクトル要素が演
算される。従って、リスト35,38は演算する順序を
制御する制御手段に相当する。
8に示される順序に従って各格子点のベクトル要素が演
算される。従って、リスト35,38は演算する順序を
制御する制御手段に相当する。
【0028】ここで、IPはM1−1が偶数の場合はI
P=M1−2,奇数の場合はIP=M1−1とされ、IP
が常に奇数になるようにしている。また、ISとIEの
差はゼロまたは「7」の倍数になっている。
P=M1−2,奇数の場合はIP=M1−1とされ、IP
が常に奇数になるようにしている。また、ISとIEの
差はゼロまたは「7」の倍数になっている。
【0029】次に、このようにしてM1−1が偶数か、
奇数かの判定結果に応じて、格子位置番号のリスト3
5,38と、メモリアクセス間隔IPおよびベクトル計
算回数LPをが求められたならば、次に、連立一次方程
式Ax=bの行列Aを不完全LU分解する(ステップ2
1)。
奇数かの判定結果に応じて、格子位置番号のリスト3
5,38と、メモリアクセス間隔IPおよびベクトル計
算回数LPをが求められたならば、次に、連立一次方程
式Ax=bの行列Aを不完全LU分解する(ステップ2
1)。
【0030】このLU分解の手順を図6に示す。図4に
おいて、ステップ40は前進代入ル−プであり、ここで
j=1,LPと置く。ステップ41はIPで示されたア
クセス間隔で格子番号iにi=IS(j),IE(j)
を代入し、ステップ42で示される計算式をベクトル演
算する。
おいて、ステップ40は前進代入ル−プであり、ここで
j=1,LPと置く。ステップ41はIPで示されたア
クセス間隔で格子番号iにi=IS(j),IE(j)
を代入し、ステップ42で示される計算式をベクトル演
算する。
【0031】この演算によってLU分解における上半分
の行列ベクトルが作成される。
の行列ベクトルが作成される。
【0032】次に、ステップ43は後退代入ル−プであ
り、ここでj=LP−1,1,−1と置く。ステップ4
4はIPで示されたアクセス間隔で格子番号iにi=I
S(j),IE(j)を代入し、ステップ45で示され
る計算式をベクトル演算する。
り、ここでj=LP−1,1,−1と置く。ステップ4
4はIPで示されたアクセス間隔で格子番号iにi=I
S(j),IE(j)を代入し、ステップ45で示され
る計算式をベクトル演算する。
【0033】この演算によってLU分解における下半分
の行列ベクトルが作成される。
の行列ベクトルが作成される。
【0034】次に、反復演算の前処理を行う(ステップ
22)。すなわち、残差をr,初期の残差をr0とする
と、 r=(LU)-1(b−Ax) とし、さらにステップ24で示される計算を行うため
に、 P=r0=r C=(r,r) と置く。
22)。すなわち、残差をr,初期の残差をr0とする
と、 r=(LU)-1(b−Ax) とし、さらにステップ24で示される計算を行うため
に、 P=r0=r C=(r,r) と置く。
【0035】次に、反復演算のル−プ処理を行い(ステ
ップ23)、不完全LU分解付きBi−CGSTAB法
によって残差rが要求精度に収束するまで図示のような
計算式で示されるベクトル演算を行う(ステップ2
4)。この場合、残差rが要求精度に収束しないとき
は、最大計算回数に達した時点で演算を打ち切る。
ップ23)、不完全LU分解付きBi−CGSTAB法
によって残差rが要求精度に収束するまで図示のような
計算式で示されるベクトル演算を行う(ステップ2
4)。この場合、残差rが要求精度に収束しないとき
は、最大計算回数に達した時点で演算を打ち切る。
【0036】なお、このステップ24の計算式におい
て、既知のデ−タはAx=bのA,bおよび残差r,初
期の残差r0のみであり、q,σ,eなどの残りのデ−
タは、これら既知のデ−タに基づき図示のよう式で与え
られる。
て、既知のデ−タはAx=bのA,bおよび残差r,初
期の残差r0のみであり、q,σ,eなどの残りのデ−
タは、これら既知のデ−タに基づき図示のよう式で与え
られる。
【0037】この計算によって、連立一次方程式Ax=
bの数値解xが求められる。
bの数値解xが求められる。
【0038】従って、図4に示したように、M1−1が
奇数となる格子構造においては、最初に格子番号i=1
のベクトル要素が計算され、次に、i=2,9のグル−
プのベクトル要素が同時に並列に演算され、以下同様
に、i=3,10,17のグル−プ、i=4,11,1
8,25という具合に、i+jが同じ値になる格子位置
のベクトル要素が並列演算される。
奇数となる格子構造においては、最初に格子番号i=1
のベクトル要素が計算され、次に、i=2,9のグル−
プのベクトル要素が同時に並列に演算され、以下同様
に、i=3,10,17のグル−プ、i=4,11,1
8,25という具合に、i+jが同じ値になる格子位置
のベクトル要素が並列演算される。
【0039】この時、格子位置をメモリのアドレスに対
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。
【0040】一方、図5に示したように、M1−1が偶
数となる格子構造においては、最初に格子番号i=1の
ベクトル要素が計算され、次に、i=2のグル−プ、次
にi=3,10のグル−プのベクトル要素が同時に並列
に演算され、以下同様に、i=4,11のグル−プ、i
=5,12,19という具合に、2i+jが同じ値にな
る格子位置のベクトル要素が並列演算される。
数となる格子構造においては、最初に格子番号i=1の
ベクトル要素が計算され、次に、i=2のグル−プ、次
にi=3,10のグル−プのベクトル要素が同時に並列
に演算され、以下同様に、i=4,11のグル−プ、i
=5,12,19という具合に、2i+jが同じ値にな
る格子位置のベクトル要素が並列演算される。
【0041】この時、格子位置をメモリのアドレスに対
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。すなわ
ち、M1−1が偶数となる格子構造においてもメモリア
クセスの競合は発生しなくなる。
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。すなわ
ち、M1−1が偶数となる格子構造においてもメモリア
クセスの競合は発生しなくなる。
【0042】この結果、M1−1が偶数となる格子構造
においても高速に解を求めることができる。
においても高速に解を求めることができる。
【0043】ところで、M1−1が偶数の場合、i方向
に仮設格子点を1つ付加し、i+jが同じ値に成る格子
位置のベクトル要素を同時に並列計算するようにして
も、アクセスの競合を防ぐことができる。
に仮設格子点を1つ付加し、i+jが同じ値に成る格子
位置のベクトル要素を同時に並列計算するようにして
も、アクセスの競合を防ぐことができる。
【0044】すなわち、図7に示すようにM1−1=6
の格子構造であったとすると、i方向に仮設格子点70
を1つ付加する。
の格子構造であったとすると、i方向に仮設格子点70
を1つ付加する。
【0045】この処理は、図1のステップ13の詳細で
ある図8におけるステップ81,82で行う。すなわ
ち、M1−1が偶数であるかどうかを判断し(ステップ
81)、偶数である場合、行列A、右辺ベクトルbおよ
び初期値xを仮設格子点70を加えて補正する(ステッ
プ82)。
ある図8におけるステップ81,82で行う。すなわ
ち、M1−1が偶数であるかどうかを判断し(ステップ
81)、偶数である場合、行列A、右辺ベクトルbおよ
び初期値xを仮設格子点70を加えて補正する(ステッ
プ82)。
【0046】この詳細を図9に示す。図9において、ま
ず、M1−1が偶数か、奇数かを判定する(ステップ9
0)。この判定の結果、奇数であった場合は図3と同様
の処理を行う(ステップ91)。しかし、偶数であった
場合は、M1=M1+1として仮設格子点70を加え、こ
の仮設格子点70を含めた格子位置番号のリストと、メ
モリアクセス間隔IPおよびベクトル計算回数LPを求
める(ステップ92)。
ず、M1−1が偶数か、奇数かを判定する(ステップ9
0)。この判定の結果、奇数であった場合は図3と同様
の処理を行う(ステップ91)。しかし、偶数であった
場合は、M1=M1+1として仮設格子点70を加え、こ
の仮設格子点70を含めた格子位置番号のリストと、メ
モリアクセス間隔IPおよびベクトル計算回数LPを求
める(ステップ92)。
【0047】なお、ステップ91,92におけるNは仮
設格子点70を含めた全格子点数であり、仮設格子点7
0を追加したことにより格子点数が増加することを示し
ている。
設格子点70を含めた全格子点数であり、仮設格子点7
0を追加したことにより格子点数が増加することを示し
ている。
【0048】ここで、M1−1が偶数となる図7のよう
な格子構造であったとすると、仮設格子点70を付加し
たことにより、図11に示すような格子構造に変更され
たことになる。そこで、この新たな格子構造から同一グ
ル−プで並列演算するベクトル要素の格子位置番号のリ
ストとして、開始位置の格子番号ISのリスト94と終
了位置の格子番号IEのリスト95とから成るリスト9
6を作成する。
な格子構造であったとすると、仮設格子点70を付加し
たことにより、図11に示すような格子構造に変更され
たことになる。そこで、この新たな格子構造から同一グ
ル−プで並列演算するベクトル要素の格子位置番号のリ
ストとして、開始位置の格子番号ISのリスト94と終
了位置の格子番号IEのリスト95とから成るリスト9
6を作成する。
【0049】次に、行列A、右辺ベクトルbおよび初期
値xを、仮設格子点70を含めて補正する(ステップ9
3)。
値xを、仮設格子点70を含めて補正する(ステップ9
3)。
【0050】ここで、仮設格子点70を追加する場合、
その追加した格子点70では非対角要素は全てゼロに
し、対角要素の値は「1」にセットし、右辺ベクトルb
をゼロにセットすることで、仮設格子点70に対する追
加解の値はゼロになるようにする。
その追加した格子点70では非対角要素は全てゼロに
し、対角要素の値は「1」にセットし、右辺ベクトルb
をゼロにセットすることで、仮設格子点70に対する追
加解の値はゼロになるようにする。
【0051】このようにして作成されるリスト94,9
5に示される順序に従って各格子点のベクトル要素が演
算される。
5に示される順序に従って各格子点のベクトル要素が演
算される。
【0052】この例においてもISとIEの差はゼロま
たは「7」の倍数になっている。
たは「7」の倍数になっている。
【0053】以後は、図2の場合と同様に、連立一次方
程式Ax=bの行列Aを不完全LU分解する(ステップ
83)。
程式Ax=bの行列Aを不完全LU分解する(ステップ
83)。
【0054】このLU分解の手順を図10に示す。図1
0において、ステップ100は前進代入ル−プであり、
ここでj=1,LPと置く。ステップ101はIPで示
されたアクセス間隔で格子番号iにi=IS(j),I
E(j)を代入し、ステップ102で示される計算式を
ベクトル演算する。
0において、ステップ100は前進代入ル−プであり、
ここでj=1,LPと置く。ステップ101はIPで示
されたアクセス間隔で格子番号iにi=IS(j),I
E(j)を代入し、ステップ102で示される計算式を
ベクトル演算する。
【0055】この演算によってLU分解における上半分
の行列ベクトルが作成される。
の行列ベクトルが作成される。
【0056】次に、ステップ103は後退代入ル−プで
あり、ここでj=LP−1,1,−1と置く。ステップ
104はIPで示されたアクセス間隔で格子番号iにi
=IS(j),IE(j)を代入し、ステップ105で
示される計算式をベクトル演算する。
あり、ここでj=LP−1,1,−1と置く。ステップ
104はIPで示されたアクセス間隔で格子番号iにi
=IS(j),IE(j)を代入し、ステップ105で
示される計算式をベクトル演算する。
【0057】この演算によってLU分解における下半分
の行列ベクトルが作成される。
の行列ベクトルが作成される。
【0058】次に、反復演算の前処理を行う(ステップ
84)。すなわち、残差をr,初期の残差をr0とする
と、 r=(LU)-1(b−Ax) とし、さらにステップ86で示される計算を行うため
に、 P=r0=r C=(r,r) と置く。
84)。すなわち、残差をr,初期の残差をr0とする
と、 r=(LU)-1(b−Ax) とし、さらにステップ86で示される計算を行うため
に、 P=r0=r C=(r,r) と置く。
【0059】次に、反復演算のル−プ処理を行い(ステ
ップ85)、不完全LU分解付きBi−CGSTAB法
によって残差rが要求精度に収束するまで図示のような
計算式で示されるベクトル演算を行う(ステップ8
6)。この場合、残差rが要求精度に収束しないとき
は、最大計算回数に達した時点で演算を打ち切る。
ップ85)、不完全LU分解付きBi−CGSTAB法
によって残差rが要求精度に収束するまで図示のような
計算式で示されるベクトル演算を行う(ステップ8
6)。この場合、残差rが要求精度に収束しないとき
は、最大計算回数に達した時点で演算を打ち切る。
【0060】なお、このステップ86の計算式におい
て、既知のデ−タはAx=bのA,bおよび残差r,初
期の残差r0のみであり、q,σ,eなどの残りのデ−
タは、これら既知のデ−タに基づき図示のよう式で与え
られる。
て、既知のデ−タはAx=bのA,bおよび残差r,初
期の残差r0のみであり、q,σ,eなどの残りのデ−
タは、これら既知のデ−タに基づき図示のよう式で与え
られる。
【0061】この計算によって、連立一次方程式Ax=
bの数値解xが求められる。
bの数値解xが求められる。
【0062】最後に、解xから仮設格子点を除去する
(ステップ87)。
(ステップ87)。
【0063】従って、図11に示したように格子構造が
変更されてM1−1が偶数となる格子構造においては、
最初に格子番号i=1のベクトル要素が計算され、次
に、i=2,9のグル−プのベクトル要素が同時に並列
に演算され、以下同様に、i=3,10,17のグル−
プ、i=4,11,18,25という具合に、i+jが
同じ値になる格子位置のベクトル要素が並列演算され
る。
変更されてM1−1が偶数となる格子構造においては、
最初に格子番号i=1のベクトル要素が計算され、次
に、i=2,9のグル−プのベクトル要素が同時に並列
に演算され、以下同様に、i=3,10,17のグル−
プ、i=4,11,18,25という具合に、i+jが
同じ値になる格子位置のベクトル要素が並列演算され
る。
【0064】この時、格子位置をメモリのアドレスに対
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。
応付けたとすると、メモリへのアクセス間隔はゼロまた
は「7」の倍数、すなわち奇数間隔となっている。した
がって、メモリアクセスの競合は発生しない。
【0065】
【発明の効果】以上説明したように、本発明において
は、差分法で離散近似して得られる連立一次方程式を不
完全三角分解付き共役勾配法系の反復解法によりベクト
ル演算するとき、i方向の格子点数M1から1を減じた
値が偶数か、奇数かを判定し、その判定結果により、M
1−1が奇数の時は、i方向の格子点番号iとj方向の
格子点番号jとの和i+jが同じ値になる格子位置のベ
クトル要素を同時に並列計算し、偶数の時はi+2jま
たは2i+jが同じ値になる格子位置のベクトル要素を
同時に並列計算するか、あるいはM1−1が奇数の時は
i方向に仮設格子点を追加し、i+jが同じ値になる格
子位置のベクトル要素を同時に並列計算するようにした
ので、メモリへのアクセス間隔は常に奇数となり、アク
セスの競合は発生しなくなり、格子点数が奇数の場合で
も高速に数値解を求めることができる。
は、差分法で離散近似して得られる連立一次方程式を不
完全三角分解付き共役勾配法系の反復解法によりベクト
ル演算するとき、i方向の格子点数M1から1を減じた
値が偶数か、奇数かを判定し、その判定結果により、M
1−1が奇数の時は、i方向の格子点番号iとj方向の
格子点番号jとの和i+jが同じ値になる格子位置のベ
クトル要素を同時に並列計算し、偶数の時はi+2jま
たは2i+jが同じ値になる格子位置のベクトル要素を
同時に並列計算するか、あるいはM1−1が奇数の時は
i方向に仮設格子点を追加し、i+jが同じ値になる格
子位置のベクトル要素を同時に並列計算するようにした
ので、メモリへのアクセス間隔は常に奇数となり、アク
セスの競合は発生しなくなり、格子点数が奇数の場合で
も高速に数値解を求めることができる。
【0066】この場合、平均ベクトル長は、従来の超平
面法でM1×M2/(M1+M2−1)であったのが、M1
×M2/(M1+2・M2−2)と少し短くなるので、処
理速度が向上する。
面法でM1×M2/(M1+M2−1)であったのが、M1
×M2/(M1+2・M2−2)と少し短くなるので、処
理速度が向上する。
【0067】具体的には、2次元で100×100の分
割数の場合、従来の超平面法に比較して約2.5倍の速
度向上となる。400×200の分割数では、約10倍
の速度向上となる。
割数の場合、従来の超平面法に比較して約2.5倍の速
度向上となる。400×200の分割数では、約10倍
の速度向上となる。
【図1】差分法による数値計算手順の概略を示すフロ−
チャ−トである。
チャ−トである。
【図2】不完全LU分解付き共役勾配法系の処理の一実
施例を示すフローチャートである。
施例を示すフローチャートである。
【図3】メモリへのアクセス間隔を常に奇数にする処理
の一実施例を示すフローチャートである。
の一実施例を示すフローチャートである。
【図4】格子点数が奇数の格子構造の例を示す格子構造
図である。
図である。
【図5】格子点数が偶数の格子構造の例を示す格子構造
図である。
図である。
【図6】(LU)~1qの値を求める処理のフローチャー
トである。
トである。
【図7】仮設格子点を付加して計算する格子構造の例を
示す格子構造図である。
示す格子構造図である。
【図8】図7の格子構造において不完全LU分解付き共
役勾配法系の処理の一実施例を示すフローチャートであ
る。
役勾配法系の処理の一実施例を示すフローチャートであ
る。
【図9】図7の格子構造においてメモリへのアクセス間
隔を常に奇数にする処理の一実施例を示すフローチャー
トである。
隔を常に奇数にする処理の一実施例を示すフローチャー
トである。
【図10】図7の格子構造において(LU)~1qの値を
求める処理のフローチャートである。
求める処理のフローチャートである。
【図11】図7の格子構造を変更した格子構造図であ
る。
る。
【図12】メモリアクセス競合が発生する格子構造の例
を示す説明図である。
を示す説明図である。
【図13】メモリアクセス競合が発生するアドレスと格
子番号との関係を示す説明図である。
子番号との関係を示す説明図である。
30,90…M−1が偶数か奇数かを判断する処理、3
5,38…格子位置の演算順序を示すリスト、70…仮
設格子点。
5,38…格子位置の演算順序を示すリスト、70…仮
設格子点。
Claims (2)
- 【請求項1】 差分法により離散近似して得られる連立
一次方程式をi方向およびj方向の格子点数がそれぞれ
M1、M2(M1,M2=2以上の任意の整数)の超平面法
でベクトル化し、共役勾配法系の反復解法で数値解を求
める並列計算装置であって、前記i方向の格子点数M1
から1を減じた値が偶数か、奇数かを判定する判定手段
を設けると共に、この判定手段の判定結果により、前記
格子点数M1から1を減じた値が奇数の時は、i方向の
格子点番号iとj方向の格子点番号jとの和i+jが同
じ値になる格子位置のベクトル要素を同時に並列計算
し、偶数の時はi+2jまたは2i+jが同じ値になる
格子位置のベクトル要素を同時に並列計算するように順
序付ける制御手段とを設けたことを特徴とする連立一次
方程式の並列計算装置。 - 【請求項2】 差分法により離散近似して得られる連立
一次方程式をi方向およびj方向の格子点数がそれぞれ
M1,M2(M1,M2=2以上の任意の整数)の超平面法
でベクトル化し、共役勾配法系の反復解法で数値解を求
める並列計算装置であって、前記i方向の格子点数M1
から1を減じた値が偶数か、奇数かを判定する判定手段
を設けると共に、この判定手段の判定結果により、前記
格子点数M1から1を減じた値が奇数の時は、i方向の
格子点番号iとj方向の格子点番号jとの和i+jが同
じ値になる格子位置のベクトル要素を同時に並列計算
し、偶数の時はi方向に仮設格子点を1つ付加し、i+
jが同じ値に成る格子位置のベクトル要素を同時に並列
計算するように順序付ける制御手段とを設けたことを特
徴とする連立一次方程式の並列計算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18406692A JPH0628387A (ja) | 1992-07-10 | 1992-07-10 | 連立一次方程式の並列計算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18406692A JPH0628387A (ja) | 1992-07-10 | 1992-07-10 | 連立一次方程式の並列計算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0628387A true JPH0628387A (ja) | 1994-02-04 |
Family
ID=16146787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18406692A Pending JPH0628387A (ja) | 1992-07-10 | 1992-07-10 | 連立一次方程式の並列計算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0628387A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987000382A2 (en) * | 1985-07-05 | 1987-01-15 | Deutsche Thomson-Brandt Gmbh | Process and/or installation for producing still pictures |
US4814287A (en) * | 1983-09-28 | 1989-03-21 | Matsushita Electric Industrial Co. Ltd. | Method of manufacturing a semiconductor integrated circuit device |
KR20120030350A (ko) | 2009-06-18 | 2012-03-28 | 얀마 가부시키가이샤 | 주행차량 |
-
1992
- 1992-07-10 JP JP18406692A patent/JPH0628387A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4814287A (en) * | 1983-09-28 | 1989-03-21 | Matsushita Electric Industrial Co. Ltd. | Method of manufacturing a semiconductor integrated circuit device |
WO1987000382A2 (en) * | 1985-07-05 | 1987-01-15 | Deutsche Thomson-Brandt Gmbh | Process and/or installation for producing still pictures |
WO1987000382A3 (fr) * | 1985-07-05 | 1987-03-12 | Thomson Brandt Gmbh | Procede et/ou installation pour produire des images immobiles |
KR20120030350A (ko) | 2009-06-18 | 2012-03-28 | 얀마 가부시키가이샤 | 주행차량 |
KR20160087400A (ko) | 2009-06-18 | 2016-07-21 | 얀마 가부시키가이샤 | 주행차량 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5841958A (en) | Bipartite matching | |
Audoux et al. | A surrogate model based on Non-Uniform Rational B-Splines hypersurfaces | |
CN111052111A (zh) | 运算电路、运算方法以及程序 | |
US5383142A (en) | Fast circuit and method for detecting predetermined bit patterns | |
CN1020170C (zh) | 高速数字处理器 | |
JPH0628387A (ja) | 連立一次方程式の並列計算装置 | |
US9766601B2 (en) | System and method for explicit model predictive control | |
CN117407640A (zh) | 一种矩阵计算方法及装置 | |
US6938064B1 (en) | Method for computing fast Fourier transform and inverse fast Fourier transform | |
JP4029536B2 (ja) | 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 | |
WO2021194732A1 (en) | Power reduction for machine learning accelerator | |
US6718356B1 (en) | In-place operation method and apparatus for minimizing the memory of radix-r FFTs using maximum throughput butterflies | |
JPH0764766A (ja) | 並列計算機における最大・最小値演算方法 | |
JPH0731629B2 (ja) | アドレス・ジエネレータ | |
US6314554B1 (en) | Method of generating mask pattern data for graphics and apparatus for the same | |
JPH01120633A (ja) | データ・ベースの探索時の順次的判断を適応的に再配列するシステム | |
JP2002041496A (ja) | コンピュータ実施される方法、計算装置およびコンピュータ・プログラム製品 | |
Bailey | A catalogue of mathematical formulas involving\(\pi\), with analysis | |
JP2806262B2 (ja) | マルチプロセッサシステムのプロセス割当方法 | |
JP6994572B2 (ja) | データ処理システムおよびデータ処理方法 | |
JPH0644289A (ja) | 並列プロセッサのための線形回帰分散方法 | |
EP0412565B1 (en) | A cube root calculation apparatus | |
Alonso Velázquez et al. | Depth of almost strictly sign regular matrices | |
JPH01321517A (ja) | 除算装置 | |
Agarwal et al. | MN Hashing: Search Time Optimization with Collision Resolution Using Balanced Tree |