JP3659307B2 - ベクトル・コンピュータにおける演算方法、及び記録媒体 - Google Patents
ベクトル・コンピュータにおける演算方法、及び記録媒体 Download PDFInfo
- Publication number
- JP3659307B2 JP3659307B2 JP17131599A JP17131599A JP3659307B2 JP 3659307 B2 JP3659307 B2 JP 3659307B2 JP 17131599 A JP17131599 A JP 17131599A JP 17131599 A JP17131599 A JP 17131599A JP 3659307 B2 JP3659307 B2 JP 3659307B2
- Authority
- JP
- Japan
- Prior art keywords
- istr
- vector
- computer
- memory
- row
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、ベクトル・コンピュータにおいて行列計算を行うための演算方法に関する。
【0002】
【従来の技術】
楕円型偏微分方程式を差分法により、以下に示す方程式(1)のように離散化し、前処理付反復法で解く場合、前処理演算として、方程式(1)の近似方程式である、以下に示す方程式(2)、(3)が解かれる場合が多い。
【0003】
Aq=r ...(1)
(△−L)p=r ...(2)及び、
△−1(△−U)q=p ...(3)
ここで、Aは、m×m行列、Lはm×mの下三角行列、Uはm×mの上三角行列、△はm×mの対角行列であり、q、r、及びpはm次元のベクトルである。
【0004】
上記境界値問題は、技術計算において多くの数値を計算する際に生じる問題であり、例えば立体的な物の温度分布を計算する場合や、所定の幾何学形状における流体の流れを計算する場合に生じる。更に簡単な例としては、Dirichlet境界条件でPoisson方程式を解く場合が挙げられる。
【0005】
通常、この問題についての数値解法として、差分近似法が用いられる。解が計算される空間は、格子点に含まれ、そこで各格子点に対する解の数値計算が行われる。
【0006】
各格子点に関する解を与える方程式は、例えばテーラー級数に展開され、そこで微分商が差分係数に置き換えられる。格子点における近似解を求めるためには、その級数展開の剰余項が無視して良い程度のものであれば、隣接する格子点の近似解が分かれば充分である。このような方法は、W.Tbrnigによる「Numerische Mathematik fUr Ingenieure und Physiker」、Volime 2,Springer-Verlag, Berlinに開示されている。
【0007】
例えば、正方格子を有する2次元空間では、4つの格子点に取り囲まれた1つの格子点について近似解を求めるには、隣接するその4つの格子点の解を知るだけで充分である。
【0008】
図1は、こうしたケースを表しており、いわゆる5点ステンシル(5-point stencil)である。一方、図2は、3次元空間に関して図1に対応するケースを示した、7点ステンシルである。
【0009】
図2の7点ステンシルに対して、各格子点に適当な数字を付け、上述したアプローチを適用すると、前記問題は、以下の式(4)のように表される。
【0010】
aijk,1 qijk-1 + aijk,2 qij-1k + aijk,3 qi-1jk + aijk,4 qijk + aijk,5 qi+1jk + aijk,6 qij+1k + aijk,7 qi1jk+1 = rijk ...(4)
各格子点(ijk)は、集合Gの中から設定される。Gは、以下の式(5)で表される。
【0011】
G = {(ijk) 1 <= i <= nx, 1 <= j <= ny, 1 <= k <= nz} ...(5)
ここで、nx,ny,nzは、それぞれx軸、y軸、z軸方向における格子点の数を表す。
【0012】
格子点の符号を適当に選択すると、行列Aは、その対角成分以外の要素にゼロでない要素を、常に少しだけ含む。
【0013】
そのため、上述した式(1)を直接解くことはできず、最初に式(6)に表す関係、及び(7)に示す前処理を使って、式(8)に表す式に変換する。
【0014】
A=D−L−U ...(6)
M=P1×P2 ...(7)
(P1 -1AP2 -1)(P2q)=P1 -1r ...(8)。
【0015】
このとき、Dは、元の行列Aの対角成分のみからなる対角行列である。
【0016】
よく使用され、好ましい結果をもたらす前処理は、一般に「incomplete lower upper preconditioner」(ILU前処理)と呼ばれる。また、以下の式(9)が成り立つ。
【0017】
M=(△−L’)△-1(△−U’) ...(9)
従って、△=D−対角要素(L△-1U)−α行の合計(対角成分でない要素(L△-1U))であり、ここでαは、0 =< α =< 1 である。また、対角成分でない要素(F)=F−対角成分の要素(F)である。行の合計とは、対角要素のそれぞれが、同じ行の要素の合計に対応することを意味している。
【0018】
これはよく知られたGustavson(I. Gustafson)の変形であり、「A Class of First Order Fracturization Methods」,BIT 18(1978), pages 142-156を参照のこと。式(9)の行列U’とL’はILUアプローチにおいて記述される文字であるが、式(6)に示した行列U、Lと同一である必要はないことを示すために、アポストロフィを付けて区別した。これらの行列U’とL’に、適当な変更を加えることによって、収束性の改善が可能となる。
【0019】
近似的な、SSORというアプローチによれば、式(9)中の△はDと等しいとすることができる。また、前処理は、以下の1次方程式(10)の解に対応する。
【0020】
Mq=r ...(10)
ここで、rは既知のベクトルである。一般に、MがAに近いほど、反復法の反復回数が少なくなることが知られている。この式に関する概略図が図3に示されている。解は、以下の式(11)及び(12)を解くことにより得られる。
【0021】
(△−L)p=r ...(11)
△-1(△−U)q=p ...(12)
最初の問題が、格子に沿ったものである場合、行列U及びLのゼロ以外の要素は、規則的に配置されうる。例えば、各軸方向に、nx, ny,及びnz個の格子点を有し、そのそれぞれの格子点を表すよう符号が付けられている、通常の3次元格子上に表された7点ステンシルの場合、ゼロ以外の要素は、行列Lにおいて、対角要素に隣接して配置されている第1の非対角要素(第1の非対角要素は、対角要素の集合に沿って隣接し、かつ対角要素と並行に配置される要素の集合)、nx番目の非対角要素、及び(nxny)番目の非対角要素の位置に配置される。言い換えると、Li,i-1,Li,i-nx,及びLi,i-nx nyの要素のみが、ゼロ以外の要素である。
【0022】
上記式(11)及び(12)は、対応する前進代入(forward substitution)又は後退代入(reverse substitution)によって解を求めることができる。
【0023】
p=△-1(r−LP) ...(13)
q=p−△-1Uq ...(14)。
【0024】
これらの代入アルゴリズム(1)を実行するための疑似コードの例を図4に示す。
【0025】
この方法は、超平面(hyperplane)法として知られる方法である。超平面は、互いに独立して計算可能である格子点から構成される。超平面は、その超平面のどのような格子点における解も、同じ平面の他の格子点における解に依存しないという特性を有する。3次元空間に関して、対応する超平面が図5に示されている。以下の式(15)は、7点ステンシルに関して適用される。
【0026】
この方法の欠点は、特に、ベクトル・プロセッサにおけるキュー処理やベクトル処理の効果が、図4のアルゴリズム(1)の間接的なアドレッシングによって大幅に低減されてしまうということにある。この方法が、常に一定の間隔でメモリをアクセスすることができれば、より好ましいものとなる。これに関しては、「Computer Architecture」、Computational Science Education Project, Section 3.3.1 の、「Interleaved Memory」を参照されたい。
【0027】
更に、前記方法の処理は、超平面の大きさに応じて並列処理が行われず、多くの超平面H(1)が、それだけでは複数のプロセッサに論理的に分散させるには小さすぎるために、分割された複数の並列メモリブロックと、複数のベクトル・プロセッサを有するコンピュータには向いていない。また更に、超平面を扱う既知の方法では、高次元空間又は前述した5点ステンシルや7点ステンシル以外のステンシルへの一般化は知られていない。これらの問題を解決するためのアプローチは、前述の式(11)及び(12)を正しく解くものではないが、その近似解を計算するものであり、前処理として同様の収束性向上をもたらす。通常、これにはvon-Neumann級数展開が使用される。
【0028】
p =(△−L)-1r = △-1(I−L△-1)-1r = △-1r + △-1L△-1r +(△-1L)2△-1r +(△-1L)3△-1r + ...+ (△-1L)ntr△-1r ...(16)。
【0029】
この方法は、近似解を得るには、常に行列とベクトルの積が計算されるだけであるため、実際には十分にベクトル処理可能なものであり、並列に処理することができる。しかし、超平面法と同様の収束性を実現するためには、von-Neumann級数において、通常3桁又は4桁のオーダーのメンバまで計算しなければならず、計算コストは、3倍から4倍にまで膨らみ、ベクトル化及び並列処理化の利点が相殺されてしまう。
【0030】
超平面を扱う方法を、ベクトル・コンピュータに適するように変換する他のアプローチは、1995年5月の、Takumi Washio、とKen Hayamiによる「Overlapped Multicolor MILU Preconditioning」、J. SCHI Computer, Volume 16, No. 5, ページ636-651に開示されている。
【0031】
このアプローチでは、3次元空間及び7点ステンシルについて、最初に超平面の分割が行われ、istr個の部分集合が形成される。このことは、以下の式(17)によって表される。
【0032】
【0033】
言い換えれば、部分集合C(l)は、超平面H(l)、H(l+istr)、H(l+2istr).....の結合である。
【0034】
カラー(colors)とも呼ばれる、この部分集合のそれぞれは、前進代入においては、C(1)、C(2)、...C(istr)、C(1)、C(2)、...C(istr)の順で計算され、後退代入においては、C(istr)、C(istr−1)、...C(1)、C(istr)、C(istr−1)、...C(1)の順で計算される。この処理順序の例が、図6に示されている。未知の開始値は、それぞれゼロにセットされる。この方法では、各カラーは、少なくとも2回計算され、H(l)に対するH(max(l-istr,1))の依存度が考慮される。
【0035】
図7には、この方法のアルゴリズム(2)を実現する疑似コードの例が示されており、図8には、対応するフローチャートが示されている。
【0036】
istrの選択を適切に行うことによって、各カラーが、ベクトル処理に充分な大きさの数の格子点を有するようにすることができる。前述の7点ステンシルにおいて、例えば、nx=nyでかつ、nzが任意である場合、istr=nx - 1 とすれば、C(l)内の格子点を計算するための全てのメモリ・アクセスが、一定の間隔istrで行われ、間接アドレッシングが回避される。一方、(nxnynz)/istrは、ベクトル長として十分な大きさである。
【0037】
例えば、x軸方向がnx = 10で、y軸方向がny = 11で、z軸方向がnz = 10で、istrが前述のとおり9と求められた、格子を有する7点ステンシルの場合、カラーへの分割が行われた後、図6に示すような計算が行われる。この図から、格子点iを計算するには更に6つの格子点、i+1、i+10、i+110、i-1、i-10、i-110が必要とされ、これらは同じカラーに属さないことが明らかである。従って、あるカラーの、ある格子点の計算は、同じカラーの他の格子点の計算には依存しないことが分かる。更に、間接アドレッシングは、iを知ることによって直接把握できるので必要がない。そして、参照すべき格子点、i+1、i+10、i+110、i-1、i-10、i-110のデータが格納されているメモリ領域を事前にロードしておくことができるので、ベクトル・プロセッサの高速処理が可能である。
【0038】
この複数のカラーに対する処理技法を更に改良したものが、前述の文献に記載されており、それは「Overlapping Multicolor」技法と呼ばれている。ここでは、前進代入に関して、カラーがC(istr−w)、C(istr−w−1)、...C(istr)、C(1)、C(2)、...C(istr)の順で行われるという点で、複数のカラーを近似する技法の改良が行われている。オーバーラッピング、即ち、追加的に計算されるカラーの数はwになる。対応するシステムが後退代入に適用される。この、オーバーラッピング多重カラー技法は、単一の多重カラー技法に較べて、優れた収束性を示し、一方で、ベクトル長とメモリ・アクセスに関しては同様の利点を有する。
【0039】
【発明が解決しようとする課題】
しかし、多重カラー技法、及びオーバーラッピングを備えた多重カラー技法においては、カラーの数を求めることと、前述の7点又は5点ステンシル以外のケースに当該技法を適用することが困難である。最初の近似に関する開始値が、解から離れすぎていると、カラーの数が小さくなりすぎ、結果的に計算コストを増大させてしまう。ベクトル・コンピュータのキューのベクトル長が短くなりすぎると、カラーの数が大きくなりすぎ、結果的に計算スピードが低下してしまう。
【0040】
前述の7点又は5点ステンシル以外のステンシルについてistrを求めることは、カラーの個々の格子点が他の格子点に依存しないという条件を維持しなければならないため、単純には実現できない。
【0041】
【課題を解決するための手段】
本発明による方法は、特に、規則的な正方格子に関する楕円型偏微分方程式を解くのに適している。
【0042】
本発明の目的は、所与の長さのキューを備えたベクトル・コンピュータにおいて、前述の式(1)の解を求める方法を提供することにある。
【0043】
本発明の更なる目的は、特に、キューの長さやメモリ・バンクの数といった、ベクトル・コンピュータの実際の構成に適応して、他の方法より高速に演算を行う方法を提供することにある。
【0044】
本発明の更なる目的は、計算コストを追加せずに、5点ステンシル又は7点ステンシル以外のステンシルにおける依存度を考慮する方法を提供することにある。
【0045】
本発明の更なる目的は、好適に並列処理され、即ち、複数のプロセッサ上で並列に処理が行われ、特に、分散メモリを有するコンピュータにおいても好適に処理される方法を提供することにある。
【0046】
【発明の実施の形態】
本発明を簡単に理解するため、まず、ベクトル・コンピュータの原理をいくつか説明する。
【0047】
既存のコンピュータは、1つ、又はそれ以上のプロセッサ、1つ、又はそれ以上のメモリ、入/出力デバイス、及びこれらの間の通信チャネルを有している。
【0048】
プロセッサは、コマンドを実行するために、そのコマンドをメモリにロードし、デコードし、実行する。このような処理サイクルにかかる時間は、そのコマンドの複雑性及びプロセッサの内部構造に依存するが、メモリ及び通信チャネルの構成にも依存する。
【0049】
コンピュータ・プログラムは、1つ若しくは2,3の単純なコマンドの繰り返しであるループ処理を実行することが多い。そのようなループ処理の良い例はベクトルの和の計算及び/又はベクトルのクロス積の計算である。
【0050】
ここでは、2進演算プロセッサにおいて2つの数の積を単純に計算する場合であっても、その処理には通常、一連の個別ステップが含まれることに注意すべきである。このことは、例えば、ビットの列をそれぞれ左に1ビット移動させる(即ち2倍する)場合や、2進数の足し算を行うような単純な場合のような、最も単純な場合にも当てはまる。
【0051】
このような処理を行うアルゴリズムが、単純な既知のスカラ・コンピュータによって処理される場合、処理時間のほとんどは、同じコマンドのロードとデコード、及び中間の処理結果の記憶を繰り返すことに費やされる。
【0052】
この問題を解決するために、ベクトル・コンピュータが使用される。
【0053】
ベクトル・コンピュータの処理サイクルのタイミングが、図9に概略的に示されている。
【0054】
図9に示す例の、最初のサイクルでは、第1のコマンドがコマンド・メモリから取り出される。第2のサイクルでは、このコマンドがプロセッサに渡され、オペランドの準備がされる。このサイクルにおいて更に、第2のコマンドがコマンド・メモリから取り出される。第3のサイクルからm番目のサイクルまで、第1のコマンドが実行される。また、第4のサイクルから、(m+1)番目のサイクルまで、第2のコマンド他が実行される。m番目のサイクルが終了すると、プロセッサは、各サイクルの結果を出力する。この処理では、n個のコマンドの処理に全部でm+n−1回のサイクルを必要とする。一方、この処理をスカラ・コンピュータで行うと、(nm)サイクルを要することになる。
【0055】
言い換えれば、ベクトル・コンピュータは複数のキューを使用し、データやコマンドを、ローディング・キューを介してベクトル・レジスタに転送する。その後、算術演算キューにおいて計算が行われ、演算結果はメモリ・キューを介してメモリに記憶される。算術演算キューは、多機能キューであり、浮動小数点演算といった個別の複数ステップを並列で実行することができる。
【0056】
1秒あたりの浮動小数点演算回数(FLOPS)で表される、このベクトル・コンピュータの性能、即ち計算能力は、いわゆるベクトル長に密接に依存している。図9から分かるように、コマンド・スタックがベクトル処理される場合、第1のコマンドの処理はmサイクル必要であり、それ以降の各コマンドは、1サイクルだけの追加で処理される。この処理方法は、n番目のコマンドが、先行するm−1個のコマンドのうちの1つの処理結果を知ることなく実行できることを前提としている。これは、上述のベクトルの組み合わせにおいては典型的なケースだからである。
【0057】
従って、ベクトル長は、ベクトル化して実行可能なコマンドの数を表す数字として認識される。従来より、ベクトル・コンピュータに適したベクトル長は、単純ループによって決定されうる。アルゴリズム(3)は、そのループを実行するためのものであり、対応する疑似コードが、図10に示されている。
【0058】
図11は、ベクトル長がコンピュータの性能に与える影響について、例えばNECのSX4のようなコンピュータを例にして示した図である。最初は、ベクトル長の増加に伴って明らかにコンピュータの性能が向上しているが、ベクトル長nが400を越えると、コンピュータの性能にほとんど変化がない。
【0059】
この説明において、最小ベクトル長は、コンピュータの性能にほとんど影響を及ぼさないようになるベクトル長を表し、この例では約400である。
【0060】
最小ベクトル長は、ベクトル・プロセッサの使用の形態に関わらず、そのベクトル・プロセッサに依存する。従って、例えばFujitsu-VPXは、ベクトル処理を効果的に実現するために、1000のベクトル長を要求する。一方、Cray EL98は、かなり短いベクトル長でも効果的に機能する。
【0061】
それぞれの最小ベクトル長より大きなベクトル長が、コンピュータの性能にほとんど影響を与えないという事実は、ある理由によるものである。実際に、図9に示すような、充分なオーバーラッピングが行われる状況では、例えば、キュー内のステップ数が、スタック内のコマンド数と等しくなる場合には、それ以上ベクトル長を大きくしても僅かな効果しか得られない。
【0062】
コンピュータの性能を更に劣化させる要因は、メモリの数、構成、及び構造である。ある記憶位置にアクセスするため、それに関連付けられたメモリ・バンクが常に事前ロードされ、アクセスが生じた場合だけ参照される。次にメモリ・バンクは、再び戻される(ダウンシフト)。こうした事前ロードとダウンシフトの時間は、実際のアクセス時間の何倍にもなることがある。従って、従来では、連続してアクセスされるビットが、いくつかのメモリ・バンクに記憶されており、次のメモリ・バンクは常に事前ロードされていた。こうして、メモリ・アクセスに必要な時間がかなり短縮された。
【0063】
しかし、これは、どのメモリ・バンクが連続してアクセスされるかが常に分かっている場合を想定している。間接的なアドレッシングを用いる、前述した超平面を扱う方法においては、次にアクセスされるアドレスを常に最初に計算しなければならないので、これを想定することは不可能である。従って、間接的なアドレッシングへの適用は避けなければならない。
【0064】
一方、既知で一定の間隔によりメモリがアクセスされる方法は、ベクトル・コンピュータへの適用に適している。既知で一定の前記間隔は、例えば、連続してアクセスされる記憶位置の間隔が、常に既知で一定であるような場合である。
【0065】
直接的アドレッシングでないアクセスが同じメモリ・バンクに対して短時間で連続して行われる場合にも、同様のメモリ・アクセスの問題が生じる。これは、メモリ・バンクが常にダウンシフトされ、その後、再開されたアクセスの前に再び事前ロードされるので、コンピュータの性能をも低下させる。
【0066】
従って、ベクトル化処理されるループは、同一メモリ・バンクへのアクセスの間隔が十分長いものであるよう設計されることが好ましい。
【0067】
コマンドの処理が複数の独立した並列処理ベクトル・プロセッサに亘って分散されると、コンピュータの性能は一層向上する。このための条件は、複数の独立した部分タスクを形成できることである。
【0068】
前述したように、本発明は、ベクトル・コンピュータ上で多重カラーを扱う方法を実行し、式(1)の解を求める方法に関するものである。
【0069】
コンピュータの性能に悪影響を及ぼす、前述した要因を回避するために、本発明は、一定のメモリ・アクセス間隔istrを以下の規則に従って決定する。
【0070】
a)すべてのk(k = 1 ...nzr)に対して、mod(izrk, istr) ≠ 0であること。ここで、izrk = {j:Li, i-j ≠ 0 又は Ui, i+j ≠ 0}、nzrは、Li, i-j ≠ 0 又は Ui, i+j ≠ 0である全てのjの数である。
【0071】
b)istrとnbの最大公約数(gcd)が1であること。ここで、nbはメモリ・バンクの数である。
【0072】
c)istrはできるだけ小さな数であること。その結果、実際のベクトル長が、そのベクトル・プロセッサに要求される最小ベクトル長より大きいものとなる。
【0073】
また、istrの実際の値によって、以下のような値xを求め、その値がなるべく大きくなるようにする。
【0074】
x = min{int(istr/mod (izrk, istr)) k = 1,...nzr} ...(18)。
【0075】
規則a)は、全ての計算処理が、あるカラーの中では独立して実行されることを保証している。このことによって、ベクトル処理が、1つのカラーにおいて可能になる。
【0076】
これは、istrによって割り切れるizrkがないことを仮定している。この規則を用いることによって、5点ステンシルや7点ステンシルを扱うことができるだけでなく、あらゆる依存度を考慮に入れることができる。
【0077】
規則b)は、メモリの競合が無いことを保証する。即ち、同じメモリ・バンクに対するアクセスを連続してすることができず、かつ、全てのメモリ・バンクが使用されている。
【0078】
規則c)は、ベクトル長が、ベクトル・コンピュータを最適動作させるために必要な程度に大きいことを保証する。これに関しては、ベクトル長を大きくする程、この方法による収束性が低下することに注意すべきである。これは、前進代入及び後退代入の開始時点で、すべてのiに対して要素pi又はqiの値がそれぞれゼロにセットされる(又は別の適切な開始値がセットされる)ことによるものである。ループの最初の1回が終了すると、要素pi+istr, pi+2istr, ...qmは、それぞれ第1の近似値に対応した新しい値がセットされる。次に、他の要素pi又はqiの全てについて計算を更に行っていく。更なる計算に利用できる第1の近似値が迅速に求められるほど、収束性がより効果的なものになる。
【0079】
そこで、良好な収束性を得るために、式(18)が提供される。これは、前述のvon-Neumann級数展開に関連するものであり、本発明による方法の収束性が、式(16)において、ntr =(nd - 1)xである限り、式(16)による級数展開と同程度であることを保証する。
【0080】
istrを計算するために好適なアルゴリズム(4)を実現する疑似コードの例を、図12に示す。
【0081】
また、以下の説明に関連して、前記アルゴリズム(4)のフローチャートを図13に示す。
【0082】
ここでは、lvcが最小ベクトル長、即ち、ベクトル・プロセッサによって要求される最小のベクトル長であり、gcd(i, nb)が、iとnbの最大公約数である。
【0083】
また、最小ベクトル長は、厳密な境界を有していないので、特に最後の規則c)と式(18)の適用については、ファジー理論と関連付けて考えることができる。ファジー理論を取り入れると、前述のアルゴリズム(4)では、例えば、iによってループするループは、iがistrmaxになるまでではなく、istrmaxの何倍かになるまでループするようにでき、あるi(i > istrmax)における解は、iがistrmaxより大きいという点で、他の解より好ましくないものとすることができる。
以下では、前述した本発明の適用について、np=2のベクトル・プロセッサを備えた並列ベクトル・コンピュータに関連して説明する。当業者には、プロセッサが3つ以上のベクトル・コンピュータにも、本発明を同様に適用できることは明らかである。
【0084】
図14には、2つのプロセッサによって、図2に示す7点ステンシルを処理する順序が示されている。ここで、nx = 10, ny = 11, istr = 9, 及びnzは任意である。
【0085】
最初に、第2のプロセッサと独立して動作する第1のプロセッサは、カラーC(1)及びC(2)について第1の近似解を計算する。同時に、第2のプロセッサは、第1のプロセッサとは独立して、カラーC(5)及びC(6)についての第1の近似解を計算する。このために、カラーC(8)、C(9)又はC(3)、C(4)の格子点の第1の近似解の値は、それぞれゼロにセットされる。
【0086】
カラーC(2)又はC(6)の計算の後、同期がとられる。即ち、次のカラーC(3)又はC(7)の計算は、両方のプロセッサがそれぞれの先行するカラーの計算を終えた後でなければ、始めることができない。カラーC(3)又はC(7)の値は、カラーC(5)又はC(1)の値の計算に用いられるので、ここでも同期が必要である。カラーC(5)の計算がまだ終了していない間に、カラーC(3)の値を変更することは、計算の不確実性を招く。それは、カラーC(3)の値が、カラーC(5)の計算に必要だからである。結果的に、カラーC(5)の結果は、それぞれのプロセッサのランダムな動作条件に、多かれ少なかれ依存することになる。
【0087】
同期をとった後で、カラーC(3)及びC(4)は、第1のプロセッサによって計算され、カラーC(7)、C(8)、及びC(9)は他のプロセッサによって計算される。次に、これらのプロセッサは再び同期をとり、処理は新たなパスに進み、カラーC(1)又はC(5)の計算が開始される。また、カラーC(8)、C(9)又はC(3)、C(4)の第1の近似解は、以前のパスで計算されている。このループは、条件id = ndになるまで、アルゴリズム(2)によって繰り返される。即ち、近似解が十分良好なものになることが保証されるまで繰り返される。通常、満足な近似解を得るには、2つのパス(nd - 2)で充分である。
【0088】
並列ベクトル・コンピュータで上記処理を行うための好適アルゴリズム(5)を実行するための疑似コードの例が図15、図16に示されている。図15に示す疑似コードと図16に示す疑似コードとは連続しているものであり、これら2つで1つのアルゴリズム(5)を示していることに注意すべきである。
【0089】
また、以降の説明に関連して、このアルゴリズム(5)に対応するフローチャートが、図17に示されている。
【0090】
2つ以上のプロセッサがあれば、ループ処理は、iaを使って、0からint(istr/np) - 1 まで実行される。またここで、npはプロセッサの数を表している。
【0091】
【発明の効果】
以上に説明したように、本発明による方法によって、様々なキューの長さ、及びメモリ・バンクの数を有するようなベクトル・コンピュータに適用させることができ、結果的に既存の方法より高速な動作を実現できる。また、いかなる追加コストも必要とせずに、5点ステンシルや7点ステンシルにおける依存度以外の依存度を更に考慮することができる。
【0092】
例えば、図18及び図19にそれぞれ示す、19及び27点ステンシルについても計算が可能である。
【0093】
更に、本発明による方法は、複数の独立プロセッサを用いた並列処理に非常に適している。特に、分散メモリを備え、各プロセッサがそのメモリにアロケートされているメモリ領域を有し、アクセスの競合が回避されるようなコンピュータ・システムに適している。
【図面の簡単な説明】
【図1】5点ステンシルの2次元格子を示す図である。
【図2】7点ステンシルの3次元格子を示す図である。
【図3】7点ステンシルに関する行列Mの概略を示す図である。
【図4】1次方程式の解を前進代入及び後退代入を用いて解くためのアルゴリズム(1)を実現する疑似コードの例を示す図である。
【図5】3次元空間における超平面の位置の概略を示す図である。
【図6】 nx = 10, ny = 11, istr = 9で、nzが任意である場合の計算順序を概略示す図である。
【図7】アルゴリズム(2)を実現する疑似コードの例を示す図である。
【図8】アルゴリズム(2)についてのフローチャートである。
【図9】ベクトル・コンピュータの処理タイミングを示す図である。
【図10】ベクトル長を決定するアルゴリズム(3)を実現する疑似コードの例を示す図である。
【図11】既存のベクトル・コンピュータのベクトル長と処理能力の関係を表すグラフである。
【図12】istrを計算するために好適なアルゴリズム(4)を実現する疑似コードの例を示す図である。
【図13】図12のアルゴリズム(4)についてのフローチャートである。
【図14】 nx = 10, ny = 11, istr = 9で、nzが任意であり、2つのプロセッサ上に分散された処理が並列に行われる場合の計算順序を概略示す図である。
【図15】アルゴリズム(5)を実現するための疑似コードの例の一部を示す図である。
【図16】アルゴリズム(5)を実現するための疑似コードの例の一部を示す図である。
【図17】図15及び図16のアルゴリズム(5)についてのフローチャートである。
【図18】3次元空間における、19点のステンシルの配置を示す図である。
【図19】3次元空間における、27点のステンシルの配置を示す図である。
Claims (3)
- 少なくとも1つのベクトル・プロセッサとメモリ・バンクを有するベクトル・コンピュータで、下三角行列と上三角行列を含んだ行列式の近似解を求めるための、前進代入及び後退代入を行う多重カラー技法に基づく計算方法における、前記代入を行うために、メモリをアクセスする一定の間隔istrを決定する方法において、
前記代入の前に、所定の基準により、前記istrを決定する方法であって、前記istrが以下の規則に従って決定されることを特徴とするメモリ・アクセス間隔決定方法、
a)前記下三角行列及び上三角行列において対角成分の並びと平行な、非対角成分のそれぞれの並びの中で、少なくとも1つの成分がゼロでない各並びに対して、その対角成分の並びから見て、その非対角成分の並びがいくつ目の平行な要素かを表す数izrをistrで割った場合に、その剰余がゼロにならないistrを選択し、
b)istrとメモリ・バンクの数nbの最大公約数(GCD)を計算し、その結果が1となるistrを選択し、
c)可能な数の候補の中で最も小さいistrを求め、
d)各izrに関して、izrをistrで割った前記剰余で更にistrを割り、その整数部の値が最小であるものをxとする場合、前記xの値が、前記ベクトル・コンピュータで並列に動作するベクトル・プロセッサの数の少なくとも2倍以上となるように、istrの値を決定する。 - 請求項1において、前記行列式が、
(△−L)△−1(△―U)q=r
であり、ここで、△はm×mの対角行列、Lはm×mの下三角行列、Uはm×mの上三角行列、q及びrはm次元のベクトルであることを特徴とするメモリ・アクセス間隔決定方法。 - 少なくとも1つのベクトル・プロセッサとメモリ・バンクを有するベクトル・コンピュータで、下三角行列と上三角行列を含んだ行列式の近似解を求めるための、前進代入及び後退代入を行う多重カラー技法に基づく計算方法における、前記代入を行うために、メモリをアクセスする一定の間隔istrを決定するプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
前記代入の前に、所定の基準により、前記istrを決定するものであって、前記istrが以下の規則に従って決定されることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体、
a)前記下三角行列及び上三角行列において対角成分の並びと平行な、非対角成分のそれぞれの並びの中で、少なくとも1つの成分がゼロでない各並びに対して、その対角成分の並びから見て、その非対角成分の並びがいくつ目の平行な要素かを表す数izrをistrで割った場合に、その剰余がゼロにならないistrを選択し、
b)istrとメモリ・バンクの数nbの最大公約数(GCD)を計算し、その結果が1となるistrを選択し、
c)可能な数の候補の中で最も小さいistrを求め、
d)各izrに関して、izrをistrで割った前記剰余で更にistrを割り、その整数部の値が最小であるものをxとする場合、前記xの値が、前記ベクトル・コンピュータで並列に動作するベクトル・プロセッサの数の少なくとも2倍以上となるように、istrの値を決定する。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19827238.3 | 1998-06-18 | ||
DE19827238A DE19827238B4 (de) | 1998-06-18 | 1998-06-18 | Verfahren zum Betrieb eines Vektorrechners |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000029864A JP2000029864A (ja) | 2000-01-28 |
JP3659307B2 true JP3659307B2 (ja) | 2005-06-15 |
Family
ID=7871327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP17131599A Expired - Fee Related JP3659307B2 (ja) | 1998-06-18 | 1999-06-17 | ベクトル・コンピュータにおける演算方法、及び記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6446105B1 (ja) |
JP (1) | JP3659307B2 (ja) |
DE (1) | DE19827238B4 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694343B2 (en) * | 2001-02-08 | 2004-02-17 | International Business Machines Corporation | Method for solving a large sparse triangular system of linear equations |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
US8306798B2 (en) * | 2008-12-24 | 2012-11-06 | Intel Corporation | Fluid dynamics simulator |
US20100199067A1 (en) * | 2009-02-02 | 2010-08-05 | International Business Machines Corporation | Split Vector Loads and Stores with Stride Separated Words |
CN103514109B (zh) * | 2013-09-24 | 2016-04-13 | 创新科存储技术有限公司 | 一种打开磁盘写缓存的方法和装置 |
US9632801B2 (en) * | 2014-04-09 | 2017-04-25 | Intel Corporation | Banked memory access efficiency by a graphics processor |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5267185A (en) * | 1989-04-14 | 1993-11-30 | Sharp Kabushiki Kaisha | Apparatus for calculating matrices |
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
JP2718254B2 (ja) * | 1990-10-02 | 1998-02-25 | 日本電気株式会社 | ベクトル処理装置 |
US5446908A (en) * | 1992-10-21 | 1995-08-29 | The United States Of America As Represented By The Secretary Of The Navy | Method and apparatus for pre-processing inputs to parallel architecture computers |
US5680338A (en) * | 1995-01-04 | 1997-10-21 | International Business Machines Corporation | Method and system for vector processing utilizing selected vector elements |
-
1998
- 1998-06-18 DE DE19827238A patent/DE19827238B4/de not_active Expired - Fee Related
-
1999
- 1999-06-17 JP JP17131599A patent/JP3659307B2/ja not_active Expired - Fee Related
- 1999-06-18 US US09/335,705 patent/US6446105B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000029864A (ja) | 2000-01-28 |
DE19827238A1 (de) | 1999-12-23 |
DE19827238B4 (de) | 2004-09-30 |
US6446105B1 (en) | 2002-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7337205B2 (en) | Matrix multiplication in a vector processing system | |
Wang | A parallel method for tridiagonal equations | |
US6366937B1 (en) | System and method for performing a fast fourier transform using a matrix-vector multiply instruction | |
US5604911A (en) | Method of and apparatus for preconditioning of a coefficient matrix of simultaneous linear equations | |
Grigori et al. | Communication avoiding ILU0 preconditioner | |
JP3675537B2 (ja) | 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
US7467053B2 (en) | Three-dimensional fourier transform processing method for shared memory scalar parallel computer | |
JP3659307B2 (ja) | ベクトル・コンピュータにおける演算方法、及び記録媒体 | |
EP3757902A1 (en) | Information processing device, information processing program, and information processing method | |
Zhu et al. | PSPIKE+: a family of parallel hybrid sparse linear system solvers | |
JP3639207B2 (ja) | 共有メモリ型スカラ並列計算機における多次元フーリエ変換の並列処理方法 | |
CN115348002A (zh) | 一种基于多字长乘法指令的Montgomery模乘快速计算方法 | |
JP3808925B2 (ja) | 多様な行列格納法を使用可能な連立方程式の並列処理装置および方法 | |
Camps et al. | On pole-swapping algorithms for the eigenvalue problem | |
CN114510273B (zh) | 一种实现椭圆曲线密码的标量乘运算的处理器和方法 | |
JP2006164307A (ja) | 多様な行列格納法を使用可能な連立方程式の並列処理装置および方法 | |
JP2806262B2 (ja) | マルチプロセッサシステムのプロセス割当方法 | |
Demmel et al. | Necessary and sufficient conditions for accurate and efficient rational function evaluation and factorizations of rational matrices | |
Mastronardi et al. | Deflating invariant subspaces for rank structured pencils | |
Rauber et al. | Algorithms for Systems of Linear Equations | |
Sizonenko et al. | Software implementation of parallel matrix computations for linear recurrent sequence and numerical methods for estimating its efficiency | |
JP3542184B2 (ja) | 線形計算方法 | |
Srinivasan et al. | Improved Monte Carlo linear solvers through non-diagonal splitting | |
CN117633418A (zh) | 基于矩阵运算的多维快速傅立叶变换加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040331 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040526 |
|
TRDD | Decision of grant or rejection written | ||
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20050216 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050223 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050308 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080325 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090325 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140325 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |