JP3639323B2 - メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 - Google Patents
メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 Download PDFInfo
- Publication number
- JP3639323B2 JP3639323B2 JP06224194A JP6224194A JP3639323B2 JP 3639323 B2 JP3639323 B2 JP 3639323B2 JP 06224194 A JP06224194 A JP 06224194A JP 6224194 A JP6224194 A JP 6224194A JP 3639323 B2 JP3639323 B2 JP 3639323B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- block
- processor
- data
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
Description
【産業上の利用分野】
本発明は,複数のプロセッサ間で通信を行って処理を進めるマルチプロセッサシステムにより,高速に連立1次方程式を解くことができるようにしたメモリ分散型並列計算機による連立1次方程式計算処理方法および計算機に関する。
【0002】
連立1次方程式を高速に解く技術は,計算機の利用技術として非常に重要である。特に,高並列計算機により効率よく解く場合には,単なる数学的手法にとどまらず並列性を活かして,高並列計算機の特性を最大限に利用することのできる技術が必要になる。
【0003】
【従来の技術】
並列処理向きの連立1次方程式を解くアルゴリズムとして,ブロック化した外積型のLU分解法が知られている。図26は,そのブロック化した外積型のLU分解法の概略を説明するための図である。
【0004】
外積形式のガウスの消去法をブロック化した方法で,図26に示す配列AをLU分解する。ブロック幅をdとする。この方法では以下のような処理を行う。
k番目の処理で,更新部分A(k) を次の計算で更新する。
【0005】
A(k) =A(k) −L2(k) ・U2(k) ……(1)
k+1番目の処理では,A(k) をブロック幅dで分解して,dだけ小さいマトリックスを同じ式で更新する。
【0006】
L2(k) ,U2(k) は以下の式で求める必要がある。
式(1) で更新を行う際に,
B(k) =((L1(k) )T ,(L2(k) )T )T U1(k)
と分解し,
U2(k) =(L1(k) )-1U2(k)
と更新する。
【0007】
このようなブロック化した外積型のLU分解法をメモリ分散型並列計算機で実行する場合には,各プロセッサの負荷ができるだけ均等になるように,各プロセッサのメモリにデータを効率よく分配し,また各プロセッサ間で処理対象データの交換を効率よく行う必要がある。しかしながら,従来,ユーザインタフェースの簡略化などの面から,ブロック化されたデータを各プロセッサに順番に配置するようなことが考えられているだけであり,必ずしも各プロセッサのLU分解の負荷が均等になってはいなかった。また,プロセッサ間でのデータ通信も並列性が十分でないため,通信コストの増大を招いていた。
【0008】
【発明が解決しようとする課題】
大規模な連立1次方程式を解くには,CPUの性能と大規模なメモリシステムが必要である。メモリ分散型のマルチプロセッサで連立1次方程式を高速に解くには,各プロセッサのメモリにデータを効率よく配置することと,効率のよいデータの転送を行う方式を考える必要がある。
【0009】
また,問題を解くユーザインタフェース(ホストのアプリケーションインタフェース)を煩雑にせずに実現する必要がある。
本発明は上記問題点の解決を図り,性能を引き出すために負荷を分散する最適なデータ配置を動的に行い,データの転送時間が少なくかつ転送を計算と同時に行う方式を提供することを目的とする。
【0010】
【課題を解決するための手段】
図1は本発明の原理説明図である。
本発明は,上記の問題を解決するため,連立1次方程式の解法の1つである外積形式のガウスの消去法をブロック化した方法を,以下のように実現する。
【0011】
メモリ分散型並列計算機1は,複数のプロセッサを備え,任意の2つのプロセッサが直接通信を行うことができる計算機である。
▲1▼ メモリ分散型並列計算機1におけるデータ再配置処理手段2は,列ベクトルを束ねたブロックを各プロセッサ(以下,PEという)に分散して配置しなおす。この配置に必要なデータ転送を,並列に行うことにより高速化する。
【0012】
▲2▼ LU分解処理手段3は,ブロックのLU分解を行う途中で行列積の計算を行うとき,データを各PEに転送する。このときデータを分割して転送し,分割したデータに対する計算を各PEで行い,これを繰り返すことにより全体の計算を行う。ここで,最初の転送時間が少なく,かつ以降の転送が計算と同時にできる方法を用い,実際の転送時間が計算時間と重なることにより非常に短くなったように見えるようにする。
【0013】
▲3▼ 前進/後進代入処理手段4は,LU分解したデータを前進/後進代入を行って並列に効率よく解くために,ブロックレベルのサイクリックなデータ配置から行列を均等に列ベクトル方向に分割した配置を介して,行列を行ベクトル方向に分割した配置に並べ換え,前進/後進代入を実行する。
【0014】
【作用】
LU分解を効率よく並列に実行するために,実際の計算を行う前に行列を列ベクトル方向に分割して配置していたものを,ブロックレベルでサイクリックな配置に動的に並列に配置しなおす。
【0015】
LU分解を行う上での行列積を効率よく並列に行うために,各プロセッサのベクトル処理と並列実行をバランスさせ,計算を行うのに必要な転送を,見かけ上,1つのプロセッサから1つのプロセッサへの転送に要する時間程度で行なえるようにする。
【0016】
ブロックレベルでサイクリックに並べ換えたデータ配置でLU分解を行った後,ブロックレベルのサイクリックなデータ配置から行列を均等に列ベクトル方向に分割した配置を介して,行列を行ベクトル方向に分割した配置に変える。この転送を並列に行う。その結果について,並列に前進/後進代入の処理を行って解く。
【0017】
以上のように,データを並列転送で再配置することにより,LU分解の負荷を均等にし,1対nプロセッサ間通信のコストを見かけ上,1対1のプロセッサ間通信のコストに下げ,前進/後進代入処理における方程式を並列に解くことができるようにデータを並列転送で再配置する。
【0018】
【実施例】
以下,本発明の実施例を図を用いて説明する。
図2は本発明の実施例に係るメモリ分散型並列計算機の例,図3は図2に示すプロセッサ(PE)の構成を示す図である。
【0019】
本発明は,例えば図2に示すようなハードウェアを持つメモリ分散型並列計算機によって実現される。各プロセッサ(PE)10はクロスバーネットワーク15に接続され,それぞれスカラ演算を行うスカラユニット11と,ベクトル演算を行うベクトルユニット12と,プログラムの命令列および演算対象データを記憶する主記憶装置13と,任意の他のプロセッサとの間でクロスバーネットワーク15を介して通信を行うPE間通信ユニット14とからなる。
【0020】
各プロセッサ10は,例えば図3に示すように構成され,スカラユニット11は,主記憶装置13のデータを一時的に保持するキャッシュメモリ21,演算に用いる汎用レジスタ/浮動小数点レジスタ22,スカラ命令を実行するスカラ演算機23などからなる。主記憶装置13からフェッチした命令がベクトル命令であるときには,ベクトルユニット12が起動される。ベクトルユニット12は,主記憶装置13からデータをロードするためのロードパイプライン24,主記憶装置13へデータをストアするためのストアパイプライン25,ベクトル演算対象の一連のデータを保持するベクトルレジスタ26,特定の演算対象データをマスクするマスクレジスタ27,演算対象データを指定するマスクパイプライン28,ベクトルデータの乗算を行う乗算パイプライン29,ベクトルデータの加減算または論理演算を実行する加算/論理演算パイプライン30,ベクトルデータの除算を行う除算パイプライン31を備える。
【0021】
次に,本発明により連立1次方程式を解く方式について詳細に説明する。
〔1〕動的にデータを並べ換える方法
初めに,動的にデータを並べ換える方法について説明する。
【0022】
図2に示すようなメモリ分散型並列計算機において,データは分散されて配置されている。二次元配列の場合,列方向の部分に分割して各プロセッサ(PE)10に割り当てられる。この二次元配列の行列をある幅を持ったブロックを集めたものと考えて,このブロックを並べ換える。
【0023】
これを以下のように並べ換える。プロセッサ数を#peとする(プロセッサi(i=1,…,#pe))。
【0024】
ブロックAjをmod(j−1,#pe)+1となるプロセッサに割り付ける。mod(a,b)は整数aを整数bで割ったときの剰余を表す。
配列Aと同じ大きさの配列Bを,同じように各プロセッサに分散して割り付ける。図2に示すメモリ分散型並列計算機では,各プロセッサはクロスバーネットワーク15に結合されていて,同時に転送を行うことができる。また,同じプロセッサに対して同時に読み込みと書き込みができる。この機能を使って上記の並べ換えを図4に示すような手順で行う。
【0025】
図4は本発明の実施例における並べ換えの処理フローを示す。
各プロセッサ(PE)に,ブロックAjを順番に同じ数だけ並べてAとする。ブロックの総数jtはプロセッサ数#peで割り切れるように並べる。1つのプロセッサにあるブロックの数#bを,#b=jt/#peとする。
【0026】
並べ換えの処理では,まず図4に示すステップS1において,count=0とし,mod(n1*#b,#pe)=0である最小の正の整数n1を探す。
次に,ステップS2において,各PEのPE番号をpno(pno=1,…,#pe)としたとき,各PEでk=1+(pno−1)/n1とする。
【0027】
ステップS3において,各PEで次の計算をする。
p=(pno−1)*#b+k
p1=(p−1)/#pe
p2=mod(p−1,#pe)
q=p2*#b+p1+1
ステップS4において,Bq=Apの転送を各PEで行う。ここでApは各PEにあり,Bqは各々異なったPEになるため,転送は完全に並列に行うことができる。
【0028】
ステップS5において,count=count+1とする。
ステップS6において,count>#bであるかどうかを判定する。
count>#bであれば,この処理を終了し,count>#bでなければステップS7の処理を行う。
【0029】
ステップS7において,各PEで次の計算をする。
k=k+1
k=mod(k−1,#b)+1
この後,ステップS3へ戻り,同様に処理を繰り返す。
【0030】
図5は実施例におけるブロックの転送例を示す。図5の例では,#pe=4,#b=4である。A,Bにおける1つの矩形は1ブロックを表し,各ブロック内の数字は説明のためのブロックの番号を表す。図4の処理フローに示すように,mod(#b,#pe)=0のため,n1=1となり,PE1においてk=1,PE2においてk=2,PE3においてk=3,PE4においてk=4となる。したがって,1回目の転送パスでは,
PE1の配列Aの1番目のブロック1はPE1の配列Bの1番目に,
PE2の配列Aの2番目のブロック6はPE2の配列Bの2番目に,
PE3の配列Aの3番目のブロック11はPE3の配列Bの3番目に,
PE4の配列Aの4番目のブロック16はPE4の配列Bの4番目に
転送される。
【0031】
続いて,2回目の転送パスにおいて,k=2(PE1),k=3(PE2),k=4(PE3),k=1(PE4)となり,
PE1の配列Aの2番目のブロック2はPE2の配列Bの1番目に,
PE2の配列Aの3番目のブロック7はPE3の配列Bの2番目に,
PE3の配列Aの4番目のブロック12はPE4の配列Bの3番目に,
PE4の配列Aの1番目のブロック13はPE1の配列Bの4番目に
転送される。
【0032】
同様に,3回目の転送パスにおいて,k=3(PE1),k=4(PE2),k=1(PE3),k=2(PE4)となり,
PE1の配列Aの3番目のブロック3はPE3の配列Bの1番目に,
PE2の配列Aの4番目のブロック8はPE4の配列Bの2番目に,
PE3の配列Aの1番目のブロック9はPE1の配列Bの3番目に,
PE4の配列Aの2番目のブロック14はPE2の配列Bの4番目に
転送される。
【0033】
同様に,4回目の転送パスにおいて,k=4(PE1),k=1(PE2),k=2(PE3),k=3(PE4)となり,
PE1の配列Aの4番目のブロック4はPE4の配列Bの1番目に,
PE2の配列Aの1番目のブロック5はPE1の配列Bの2番目に,
PE3の配列Aの2番目のブロック10はPE2の配列Bの3番目に,
PE4の配列Aの3番目のブロック15はPE3の配列Bの4番目に
転送される。
【0034】
以上のように転送してデータを並べ換えることにより,1つのPEにおいて,同時に複数の読み込みまたは同時に複数の書き込みが起きるような衝突がなく,かつ同じPEでは同時に1つの読み込みと1つの書き込みができるので,転送は完全に並列に行われるとともに,衝突による待ち合わせが生じることはない。
【0035】
〔2〕行列積の効率的な方法
前述のようにして並べ換えたものについて,ブロック化したLU分解を行う方法を以下に説明する。図6は,実施例におけるLU分解の対象となる行列の例を示す。図26で説明したように外積形式のガウスの消去法をブロック化した方法でLU分解を実行する。そのため,図6に示す更新部分Uについて,U=U−C×Rの計算を行って,Uを更新する。
【0036】
この計算では,行列Cを各PEに転送する必要がある。考え方として簡単な方法は,単に行列C全体を各PEに転送する方法である。行列Cの部分を各PEに転送してから行列積の計算を行う場合,行列C全体を2分木の方法により各PEに2の巾乗のパターンで転送を行う方法が考えられる。すなわち,PE1から残りの#pe−1個のPEに転送することを考えた場合,次のように転送する。
【0037】
▲1▼PE1からPE2へ行列Cを転送する。▲2▼次に,PE1からPE3への転送と,PE2からPE4への転送を同時に行う。▲3▼次に,PE1からPE5ヘ,PE2からPE6へ,PE3からPE7へ,PE4からPE8への転送を同時に行う。このような転送を続けると,全体の転送コストはLOG2(#pe)のオーダとなる。
【0038】
本実施例では,この全体の転送コストを削減するために,行列Cを行方向に分割して計算を行う方法を採用する。以下にその方法を説明する。
ブロック化したLU分解のk番目のステージで,AkについてLU分解を行ったあと,上記のような行列積を行う。このとき,行列Cをn個に分割する。それを順にC1,C2,C3,…,Cnとする。nは,#pe/n>1で,LOG2(#pe/n)<nとなるように決める。
【0039】
図7に示すように,8個のPE1〜PE8で4分割した行列C1〜C4について計算を行う場合を例に説明する。PE1がブロックR1のデータを,PE2がブロックR2のデータを,…,PE8がブロックR8のデータを保持していたとする。各PEの行列Riと行列Cjの積の行列積で部分的に更新を行う。図7に示すハッチングの部分は,第1回目の更新を行う部分を表す。
【0040】
各PEの行列Riと行列積を行う行列Cjは,PE1からPE8まで順に表すと,次のとおりである。
1回目の計算:C1,C2,C3,C4,C1,C2,C3,C4
2回目の計算:C4,C1,C2,C3,C4,C1,C2,C3
3回目の計算:C3,C4,C1,C2,C3,C4,C1,C2
4回目の計算:C2,C3,C4,C1,C2,C3,C4,C1
このような計算を行うためには,Ckの転送を行う必要がある。このため,次のように転送を行う。
【0041】
1回目の転送でブロックkがあるプロセッサはp=mod(k−1,#pe)+1である。このプロセッサpから,行列Cをn分割したCiをmod(p−2+i,#pe)+1へ転送する。2回目からは,1回目の転送で転送されたn個のプロセッサのデータを並列に残りのプロセッサに転送する。順次t回目の転送では2**(t−1)*n(なお,**は巾乗を表す)のデータを使って並列に転送する。このようにして各プロセッサにCiを転送する。
【0042】
図8は,PE1に行列Cがあった場合の転送例を示す。図8に示すように,1回目の転送でC1はPE1へ,C2はPE2へ転送される。2回目の転送では,C1はPE1からPE3へ,同時にC2はPE2からPE4へ並列に転送される。次の転送では,C1はPE1からPE5へ,PE3からPE7へ転送され,同時にC2はPE2からPE6へ,PE4からPE8へ並列に転送される。
【0043】
ここで,2回目の計算で必要なデータは,1回目の計算を行っている間に,別の領域に転送しておくことにより,転送と計算とを同時に行うことができる。
図9および図10は,行列Cがブロックkつまりp=mod(k−1,#pe)+1にあったときでnが偶数の場合の処理フローを示す。図9および図10に示す処理フローチャートでは,1回目の計算,つまり奇数回目の計算では第1のワーク領域(W1),偶数回目の計算では第2のワーク領域(W2)を用いて,計算を行う。
【0044】
まず,ステップS21において,Ci(i=1,…,n)をプロセッサmod(p+i−2,#pe)+1のワーク領域W1に転送し,$e=0とする。
ステップS22において,$n=N*2**$e,$t=min($n,#pe−$n)とする。minは,最小値を得る関数である。
【0045】
ステップS23において,$t個のプロセッサからCiをワーク領域W1に転送する。また,s=mod(p+j−2,#pe)+1,d=mod(p+$t+j−2,#pe)+1とし,プロセッサsからプロセッサdにj=1,…,$tの$t個を並列に転送する。
【0046】
ステップS24において,$e=$e+1とする。
ステップS25において,$n>$tかどうかを判定し,$nが$tより大きければステップS22へ戻り,$nが$tより小さければステップS26の処理を行う(図10)。
【0047】
ステップS26において,ct=1とする。
ステップS27において,ct==1であるかどうかを判定する。ct==1であればステップS29へ進み,ct==1でなければステップS28の処理を行う。
【0048】
ステップS28において,後述するステップS33の処理の終了を待って,プロセッサpについてのみ,Ci(i=ct)をデータとしてワーク領域W1へ転送する。
【0049】
ステップS29において,プロセッサiからプロセッサmod(I,#pe)+1にデータを転送する(W1からW2への転送)。
ステップS30において,開始後,各プロセッサにあるCiのデータで対応する部分の行列の更新を並列に行う(W1を使って計算)。
【0050】
ステップS31において,ct>1であるかどうかを判定する。ct>1であればステップS33の処理へ進み,ct>1でなければステップS32の処理を行う。
【0051】
ステップS32において,ステップS29の処理(W1からW2への転送)の終了を待つ。
ステップS33において,ct=ct+1とする。プロセッサpについてのみ,Ci(i=ct)をデータとしてワーク領域W2へ転送する。
【0052】
ステップS34において,ct==nであるかどうかを判定する。ct==nであればステップS36の処理へ進み,ct==nでなければステップS35の処理を行う。
【0053】
ステップS35において,プロセッサiからプロセッサmod(I,#pe)+1にデータを転送する(W2からW1への転送)。
ステップS36において,ワーク領域W2のデータを使って対応する行列の更新を各プロセッサで並列に行う。
【0054】
ステップS37において,ct=ct+1とする。
ステップS38において,ct>nであるかどうかを判定する。ct>nであれば処理を終了し,ct>nでなければステップS27の処理へ戻る。
【0055】
行列Cの分割方法について行方向の分割を説明したが,列方向に分割しても同様に処理を行うことができる。ただし,並列化とベクトル化のバランスを考えると,適当なベクトル長でブロック幅を持たせることのできる行方向での分割のほうが好ましい。
【0056】
この効果は,行列C全体を2分木の方法で,各PEに転送した場合,〜LOG2(#pe)のオーダの転送時間がかかるのに対して,〜1−(LOG2(#pe/n))/nのオーダとなり#pe数が大きいときは,非常に高速である。
【0057】
〔3〕前進/後進代入を並列に行う上での方式
LU分解を行った後での前進/後進代入にも高速化のためには並列性が必要である。この並列性を引き出すために,次のように行う。
【0058】
第1に,LU分解を行うときに図5に示すようにブロックを各PEに対してサイクリックに割り当てているので,これを元の割り付け方法に戻す。次に,元の行列を列方向に分割していたのを,行方向に分割したデータ配置に変更し,この配置をもとに前進/後進代入を並列に行う。
【0059】
すなわち,LU分解を行うときには,図11(A)の行列Aのように,列ベクトルを各PEに分散して配置している。これを前進/後進代入を並列に実行できるように,図11(B)の行列Bのような配置に変更し,行ベクトルを各PEに配置する。これを並列に実行して並べ換える。
【0060】
この変換を並列に行うために,行列を各PEに分散配置される境界で図12に示すように分割して,
A=(aij) 〔i=1,…,#pe,j=1,…,#pe〕
とする。なお,#peはプロセッサ数であり,図12はプロセッサ数#peが5である場合を示している。
【0061】
行ベクトルを各PEに割り付けた行列Aと,同じ大きさの行列を列ベクトルで割り付けた行列Bとの間で,並べ換えのためのデータ転送を,図12に示すハッチング部分のような,対角方向のブロック要素について行う。
【0062】
前述のように,図2に示す本実施例のメモリ分散型並列計算機では,各プロセッサに対して同時に1つの読み込みと1つの書き込みが可能である。
図13に,図11に示す行列Aから行列Bへの変換の処理フローチャートを示す。
【0063】
図13のステップS41において,各プロセッサ(1〜#pe)で,k=プロセッサ番号,j=k,#ct=1とする。
ステップS42において,並列に各プロセッサでBjk=Ajkのデータの配置替えを行う。
【0064】
ステップS43において,k=mod(k,#pe)+1,#ct=#ct+1とする。
ステップS44において,#ct>#peであるかどうかを判定する。#ct>#peであれば処理を終了し,#ct>#peでなければステップS42の処理へ戻る。
【0065】
行列Bは,図14に示すように,行方向に分割配置されている。ここで,行列BはLU分解できたとする。LUx=dを解くとき,Ly=dを解き,Ux=yを順に解く。これを並列に行うために,各PEにd,x,yを重複して持つ。Ux=yについても同様に行うことができるので,Ly=dについて説明する。
【0066】
まず,PE1でL11×y1=d1を解く。
PE1のy1を各プロセッサ上の変数yのy1の部分へ2の巾乗パターンで転送する。(#pe−1)個のPEで並列にdi=di−Li1×y1を行う(i=2,…,#pe)。
【0067】
同様に,PE2でL22×y1=d1を解く。
PE2のy2を各プロセッサ上の変数yのy2の部分へ2の巾乗パターンで転送する。(#pe−2)個のPEで並列にdi=di−Li2×y2を行う(i=3,…,#pe)。
【0068】
同様に,PEkでLkk×ykを解く。
PEkのykを各プロセッサ上の変数yのykの部分へ2の巾乗パターンで転送する。(#pe−k)個のPEで並列にdi=di−Lk2×ykを行う(i=k,…,#pe)。
【0069】
最後に,L55×y5=d5を解いて,y5を各プロセッサ上の変数yのy5の部分へ2の巾乗パターンで転送する。
結果として,各プロセッサに解yが求まる。
【0070】
次に,200×200の行列を5プロセッサで解く場合を例にして,本発明の適用例を詳しく説明する。ブロック幅を10と仮定する。すなわち,この例では全部で20ブロック×20ブロックの行列となっている。
【0071】
この行列を各PEに配置すると,プロセッサ数が5であるので,各PEが担当する部分はそれぞれ20ブロック÷5の4ブロックの列となる。これらのブロックを,図15(A)に示すように,PE1から順にブロック1,ブロック2,ブロック3,…,ブロック20とする。
【0072】
並列に計算を実行する部分を各PEに均等に割り付けるために,図15(A)に示すデータ配置を,図15(B)に示すように並べ換える。ここでは,各ブロックをブロック・サイクリック(block cyclic)に並べ換えている。この並べ換えでは,例えばブロック2,6,10,14,18の転送を同時に行い,読み込みと書き込みとが各PEでそれぞれ行われるようにして,並列転送を実現する。
【0073】
並べ換えの結果,図15(B)に示すように,PE1の行列はブロック1,6,11,16の並びとなり,以下PE2はブロック2,7,12,17,PE3はブロック3,8,13,18,PE4はブロック4,9,14,19,PE5はブロック5,10,15,20となる。
【0074】
最初に,ブロック1をLU分解する。ブロック1(図16のb1)は,PE1だけで計算する。図16のハッチング部分が計算完了となる。
図16はブロックb1と各PEの転送先となるワーク領域の関係を示す。各PEは第1および第2のワーク領域を持つ。PE1の第1ワーク領域をW11,第2ワーク領域をW12,PE2の第1ワーク領域をW21,第2ワーク領域をW22,PE3の第1ワーク領域をW31,第2ワーク領域をW32,PE4の第1ワーク領域をW41,第2ワーク領域をW42,PE5の第1ワーク領域をW51,第2ワーク領域をW52とする。
【0075】
図16にハッチングで示したブロックb1をC1〜C3に3等分した場合を考える。この部分の計算が完了したならば,C1をPE1のW11へ,C2をPE2のW21へ,C3をPE3のW31へそれぞれ転送する。次に,その結果を使って,W11(C1)のデータをPE4のW41へ,W21(C2)のデータをPE5のW51へ並列転送する。
【0076】
行列積の計算では,初めに各PEの第1のワーク領域(W11,W21,W31,W41,W51)に格納されたCiを使って計算を行う。図17に示すハッチング部分が最初に計算する部分である。PE1においてC1×R1の行列積が,PE2においてC2×R2の行列積が,PE3においてC3×R3の行列積が,PE4においてC1×R4の行列積が,PE5においてC2×R5の行列積がそれぞれ計算されることになる。
【0077】
これらの計算と同時にオーバーラップしてW11からW22へ,W21からW32へ,W31からW42へ,W41からW52へ,並列にデータ転送を行うとともに,PE1が保持するブロックb1のC3をW12に転送する。
【0078】
次に,各PEの第2のワーク領域(W12,W22,W32,W42,W52)に格納されたCiを使って計算を行う。図18に示すハッチッグ部分が次に計算する部分である。PE1においてC3×R1の行列積が,PE2においてC1×R2の行列積が,PE3においてC2×R3の行列積が,PE4においてC3×R4の行列積が,PE5においてC1×R5の行列積がそれぞれ計算されることになる。
【0079】
これらの計算と同時にオーバーラップしてW12からW21へ,W22からW31へ,W32からW41へ,W42からW51へ,並列にデータ転送を行うとともに,PE1が保持するブロックb1のC2をW11に転送する。
【0080】
3回目の計算では,各PEの第1のワーク領域(W11,W21,W31,W41,W51)に格納されたCiを使って計算を行う。図19に示すハッチッグ部分が計算する部分である。PE1においてC2×R1の行列積が,PE2においてC3×R2の行列積が,PE3においてC1×R3の行列積が,PE4においてC2×R4の行列積が,PE5においてC3×R5の行列積がそれぞれ計算されることになる。
【0081】
図15(B)に示すブロック2(図20のb2)に関するLU分解と対応する行列積の計算は,図20(A)に示すPE2のハッチッグ部分をLU分解し,計算に必要な部分をブロックb1と同じようにC1〜C3に3等分して転送することにより行う。
【0082】
図20(B)はブロックb2と各PEの転送先となるワーク領域の関係を示す。C1をPE2のW21へ,C2をPE3のW31へ,C3をPE4のW41へそれぞれ転送する。次にその結果を使って,W21(C1)のデータをPE5のW51へ,W31(C2)のデータをPE1のW11へ並列転送する。
【0083】
次に,各PEの第1のワーク領域(W11,W21,W31,W41,W51)に格納されたCiを使って計算を行う。図21に示すハッチング部分が今回計算する部分である。PE1においてC2×R1の行列積が,PE2においてC1×R2の行列積が,PE3においてC2×R3の行列積が,PE4においてC3×R4の行列積が,PE5においてC1×R5の行列積がそれぞれ計算されることになる。
【0084】
これらの計算と同時にW21からW32へ,W31からW42へ,W41からW52へ,W51からW12へ並列にデータ転送を行うとともに,PE2が保持するブロックb2のC3をW22に転送する。
【0085】
以下,図18および図19を用いて説明したブロックb1の場合と同様に計算と転送を行い,ブロックb2についての計算が終了すると,図15(B)に示すブロック3(図22のb3)に関するLU分解と対応する行列積の計算を行う。図22(A)に示すブロックb3をLU分解したあと,図22(B)に示すようにブロックb3をC1〜C3に3等分し,各PEのワーク領域への転送を行う。そして,ブロックb3に関しても,図17ないし図19で説明したのと同様に計算と転送を行い,以下,ブロック4,5,…,20まで同様に処理してLU分解を完了する。
【0086】
全てのブロックについてLU分解を行った後,最終処理として,サイクリックに並べ換えたブロックを元の並びに戻す。図23は,図15に示すようにブロック・サイクリックに並べ換えた行列を元の並びに戻す例を示している。例えばブロック2,6,10,14,18に着目すると,図23(A)から(B)への転送例から明らかなように,これらのブロックは同時に転送が可能である。
【0087】
次に列方向に分割して配置していたものを行方向に分割する並びに並べ換えて,並列に前進/後退代入を行う。
図24は,ブロック化された行列の対角ブロック方向の要素ブロックに着目して,並列転送で並べ換える例を示す。PE1のA51をPE5の1番目の領域へ,PE2のA12をPE1の2番目の領域へ,……,といように並列転送を行って,ブロックを並べ換える。ブロックの並べ換えにより,配置が変わったところで,前進/後退代入を行う。
【0088】
図25は,行方向に分割された行列と各PEの関係を示す。
解ベクトルを求めるためのb1,b2,b3,b4,b5 は各PEで重複して保持する。計算が終了した時点で各PEが解ベクトルを持つことになる。計算手順は以下のとおりである。
【0089】
(1)L11x1 =b1 をPE1で解く。
(2)x1 をb1 の領域に求めて,各PEへ転送する。b1 =x1
(3)i>1なるPEiでbi =bi −Li1×x1 を計算する。
【0090】
(4)次にPE2で,L22x2 =b2 を解いてx2 を求める。
(5)x2 を各PEへ転送する。b2 =x2
(6)i>2なるPEiでbi =bi −Li2×x2 を計算する。
【0091】
以下,同様に繰り返して前進代入を終了する。前進代入のあと,後進代入も同様に行う。
【0092】
【発明の効果】
以上説明したように,本発明によれば,次のような効果がある。
▲1▼ データの並べ換えを動的に行うことにより,並列に実行する部分を各プロセッサに均等に割り付けることができるようになり,並列に実行する上での効率が向上する。実際に,ブロック化した外積型のガウスの消去法をもとにしたLU分解の行列積の部分に対しては,行列を列ベクトル方向に均等に分割して計算した場合の実効性能は,ハードウェア性能の6割5分程度である。これは計算過程が進むと行列積で更新する部分が小さくなり,配置されているプロセッサ数が急激に減少するので,並列効率が悪くなるためである。
【0093】
これに対して,データをサイクリックに分割すると,つまり列ベクトルを束ねたブロックに番号を振り,その番号をiとしたとき,i番目のブロックが,mod(I−1,#pe)+1番目のプロセッサ(#peはプロセッサ数)に割り付けられるように配置した場合には,実行性能は,ハードウェア性能の9割〜9割5分程度が達成される。
【0094】
▲2▼ 行列積の部分の計算方法に関しては,行列積部分の計算に必要なデータを分割して,転送・計算する。このとき,本発明によれば転送の大部分を計算と同時に行うことができ,計算と同時に行うことのできない最初の転送時間だけが見かけ上の転送時間となる。この転送も並列に行う工夫により,例えば2分木転送に比べて,大幅に転送時間を短縮することができる。この結果,単純に行列積で必要なデータを各プロセッサに2分木のパターンで転送する場合がLOG2(#pe)に比例するのに比べ,転送時間は,転送するデータの分割数を#divとすると,1+(LOG2(#pe/#div)/#div)のオーダになり,第2項は0.5以下にすることができる。したがって,2台以上あるシステムで特にプロセッサ数が大きくなった場合に非常に効率がよい。
【0095】
▲3▼ また,最後に前進/後進代入をこのままの配置で解くと,列ベクトルは1つのプロセッサ上にあるため,前進/後進代入部分の並列性が利用できず,並列化できない。このため,サイクリックなデータの配置を,一度,列ベクトル方向に均等分割する配置に戻し,その後,行ベクトル方向に均等分割する配置に変える。このことにより,前進/後進代入部分を並列に実行することができるようになり,処理時間の大幅な短縮が可能になる。
【図面の簡単な説明】
【図1】 本発明の原理説明図である。
【図2】 本発明の実施例に係るメモリ分散型並列計算機の例を示す図である。
【図3】図2に示すプロセッサの構成を示す図である。
【図4】 本発明の実施例における並べ換えの処理フローを示す図である。
【図5】 本発明の実施例におけるブロックの転送例を示す図である。
【図6】 本発明の実施例におけるLU分解の対象となる行列の例を示す図である。
【図7】本発明の実施例における行列積の計算を説明する図である。
【図8】PE1に行列Cがあった場合の転送例を示す図である。
【図9】データの転送と行列積の計算の処理フローを示す図である。
【図10】データの転送と行列積の計算の処理フローを示す図である。
【図11】前進/後進代入処理時の並べ換えの例を示す図である。
【図12】前進/後進代入処理時の並べ換えを説明する図である。
【図13】前進/後進代入処理時の並べ換えの処理フローを示す図である。
【図14】前進/後進代入処理を説明する図である。
【図15】本発明の適用例の説明図である。
【図16】本発明の適用例の説明図である。
【図17】本発明の適用例の説明図である。
【図18】本発明の適用例の説明図である。
【図19】本発明の適用例の説明図である。
【図20】本発明の適用例の説明図である。
【図21】本発明の適用例の説明図である。
【図22】本発明の適用例の説明図である。
【図23】本発明の適用例の説明図である。
【図24】本発明の適用例の説明図である。
【図25】本発明の適用例の説明図である。
【図26】ブロック化した外積型のLU分解法の説明図である。
【符号の説明】
1 メモリ分散型並列計算機
2 データ再配置処理手段
3 LU分解処理手段
4 前進/後進代入処理手段
Claims (2)
- 複数のプロセッサを備え,各プロセッサ間でデータ転送を行うことのできるメモリ分散型並列計算機を用い,n×nの正方行列で構成される係数行列Aを各プロセッサに分配して,ブロック化した外積型のLU分解法により連立1次方程式を解くメモリ分散型並列計算機による連立1次方程式計算処理方法において,
前記係数行列Aを列方向にプロセッサの数#peだけ分割して,各プロセッサのメモリに配置したものを,さらに前記係数行列Aを構成する列ベクトルをd列分束ねたブロック幅がdのブロックに分割し,これらの各ブロックが先頭のブロックから順番に各プロセッサのメモリに循環して配置されるように,各プロセッサ間でデータを並列転送することによって,動的に配置しなおす第1の処理過程と,
前記係数行列Aを各プロセッサのメモリに動的に配置しなおした処理の結果の行列に対して,各プロセッサが外積型のLU分解を行うにあたって,前記各プロセッサのメモリに配置された前記ブロックについて行方向に分割し,LU分解の対象となる行列の更新部分のうち,自分のプロセッサが持つ行方向に分割したブロックで,他のプロセッサがLU分解の過程における行列積の計算に必要となる部分を,それぞれ他のプロセッサに転送し,分割したブロックに対する各プロセッサにおける行列積の計算と,他の分割したブロックについての次の行列積の計算に用いる部分の並列転送とを同時に実行する処理を繰り返すことにより全体のLU分解の計算を行い,下三角形行列と上三角形行列との積に分解する第2の処理過程と,
前記第2の処理過程によりLU分解した結果について,前記ブロックが各プロセッサに循環して配置されるデータ配置から,行列を均等に列ベクトル方向に分割した配置を介して,行列を行ベクトル方向に分割した配置になるように各プロセッサ間でデータを並列に転送し,並列に前進/後進代入の処理を実行する第3の処理過程とを有し,
前記第1の処理過程では,
各j番目のブロックj(1≦j≦#b×#pe)が,j 1 =(j−1)/#PE+1,j 2 =mod(j−1,#PE)+1としたとき,j 3 =(j 2 −1)×#b+j 1 番目の位置に置き換わるように,各プロセッサ間でデータを並列転送する
ことを特徴とするメモリ分散型並列計算機による連立1次方程式計算処理方法。 - 複数のプロセッサを備え,各プロセッサ間でデータ転送を行うことのできるメモリ分散型並列計算機であって,n×nの正方行列で構成される係数行列Aを各プロセッサに分配して,ブロック化した外積型のLU分解法により連立1次方程式を解くメモリ分散型並列計算機において,
前記係数行列Aを列方向にプロセッサの数#peだけ分割して,各プロセッサのメモリに配置したものを,さらに前記係数行列Aを構成する列ベクトルをd列分束ねたブロック幅がdのブロックに分割し,これらの各ブロックが先頭のブロックから順番に各プロセッサのメモリに循環して配置されるように,各プロセッサ間でデータを並列転送することによって,動的に配置しなおす手段であって,前記並列転送では,各j番目のブロックj(1≦j≦#b×#pe)が,j 1 =(j−1)/#PE+1,j 2 =mod(j−1,#PE)+1としたとき,j 3 =(j 2 −1)×#b+j 1 番目の位置に置き換わるように,各プロセッサ間でデータを並列転送するデータ再配置処理手段と,
前記各プロセッサのメモリに配置された前記ブロックについて行方向に分割し,LU分解の対象となる行列の更新部分のうち,自分のプロセッサが持つ行方向に分割したブロックで,他のプロセッサがLU分解の過程における行列積の計算に必要となる部分を,それぞれ他のプロセッサに転送し,分割したブロックに対する各プロセッサにおける行列積の計算と,他の分割したブロックについての次の行列積の計算に用いる部分の並列転送とを同時に実行する処理を繰り返すことにより全体のLU分解の計算を行い,下三角形行列と上三角形行列との積に分解するLU分解処理手段と,
前記LU分解処理手段によりLU分解した結果について,前記ブロックが各プロセッサに循環して配置されるデータ配置から,行列を均等に列ベクトル方向に分割した配置を介して,行列を行ベクトル方向に分割した配置になるように各プロセッサ間でデータを並列 に転送し,並列に前進/後進代入の処理を行う前進/後進代入処理手段と
を備えたことを特徴とする連立1次方程式を解くメモリ分散型並列計算機。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP06224194A JP3639323B2 (ja) | 1994-03-31 | 1994-03-31 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
| DE19510879A DE19510879C2 (de) | 1994-03-31 | 1995-03-24 | Brechnungsverfahren für simultane, lineare Gleichungen und speicherverteilter Parallelprozessor zur Durchführung des Verfahrens |
| US08/412,308 US5887186A (en) | 1994-03-31 | 1995-03-29 | Method of solving simultaneous linear equations in a memory-distributed parallel computer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP06224194A JP3639323B2 (ja) | 1994-03-31 | 1994-03-31 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH07271760A JPH07271760A (ja) | 1995-10-20 |
| JP3639323B2 true JP3639323B2 (ja) | 2005-04-20 |
Family
ID=13194458
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP06224194A Expired - Fee Related JP3639323B2 (ja) | 1994-03-31 | 1994-03-31 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5887186A (ja) |
| JP (1) | JP3639323B2 (ja) |
| DE (1) | DE19510879C2 (ja) |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
| US7395302B2 (en) | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
| US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
| US6212618B1 (en) | 1998-03-31 | 2001-04-03 | Intel Corporation | Apparatus and method for performing multi-dimensional computations based on intra-add operation |
| JP3488629B2 (ja) * | 1998-04-07 | 2004-01-19 | 富士通株式会社 | 放射電磁界耐性算出装置及び方法並びにプログラム記録媒体 |
| JP3827941B2 (ja) * | 2000-11-16 | 2006-09-27 | 株式会社日立製作所 | 連立一次方程式求解方法及びその実施装置並びにその処理プログラムを記録した記録媒体 |
| US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
| GB0208329D0 (en) * | 2002-04-11 | 2002-05-22 | Univ York | Data processing particularly in communication systems |
| JP3983193B2 (ja) * | 2003-03-31 | 2007-09-26 | 富士通株式会社 | 行列処理方法及び装置 |
| JP4052181B2 (ja) | 2003-05-23 | 2008-02-27 | 株式会社日立製作所 | 通信隠蔽型の並列高速フーリエ変換方法 |
| US7146529B2 (en) | 2003-09-25 | 2006-12-05 | International Business Machines Corporation | System and method for processor thread acting as a system service processor |
| US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
| US7475257B2 (en) * | 2003-09-25 | 2009-01-06 | International Business Machines Corporation | System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data |
| US7523157B2 (en) * | 2003-09-25 | 2009-04-21 | International Business Machines Corporation | Managing a plurality of processors as devices |
| US7549145B2 (en) * | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
| US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
| US20050071828A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
| US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
| US7318218B2 (en) * | 2003-09-25 | 2008-01-08 | International Business Machines Corporation | System and method for processor thread for software debugging |
| US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
| US20050071578A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for manipulating data with a plurality of processors |
| US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
| US7236998B2 (en) * | 2003-09-25 | 2007-06-26 | International Business Machines Corporation | System and method for solving a large system of dense linear equations |
| US7389508B2 (en) * | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
| US8065503B2 (en) | 2006-12-15 | 2011-11-22 | International Business Machines Corporation | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process |
| JP4823928B2 (ja) * | 2007-01-22 | 2011-11-24 | 三菱電機株式会社 | 連立一次方程式の並列求解装置 |
| EP2178001A1 (en) * | 2007-07-12 | 2010-04-21 | Fujitsu Limited | Calculation device, calculation method and calculation program |
| JP5388323B2 (ja) * | 2007-11-09 | 2014-01-15 | 独立行政法人 宇宙航空研究開発機構 | 計算機 |
| US8204925B2 (en) * | 2008-05-22 | 2012-06-19 | National Instruments Corporation | Controlling or analyzing a process by solving a system of linear equations in real-time |
| US8417755B1 (en) | 2008-05-28 | 2013-04-09 | Michael F. Zimmer | Systems and methods for reducing memory traffic and power consumption in a processing environment by solving a system of linear equations |
| DE112011104770B4 (de) * | 2011-01-25 | 2022-08-25 | Nxp Canada Inc. | Apparat und Verfahren zum gemeinsamen Vektoreinheit Benutzen |
| JP6607078B2 (ja) * | 2016-02-23 | 2019-11-20 | 富士通株式会社 | 並列計算機、並列lu分解方法及び並列lu分解プログラム |
| CN105808309B (zh) * | 2016-03-08 | 2019-04-05 | 中国科学院软件研究所 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
| US11100426B1 (en) * | 2017-11-07 | 2021-08-24 | Amazon Technologies, Inc. | Distributed matrix decomposition using gossip |
| US20210406077A1 (en) * | 2019-07-18 | 2021-12-30 | Photonics Electronics Technology Research Association | Method and system for parallel computation |
| CN110457648B (zh) * | 2019-07-30 | 2023-02-03 | 暨南大学 | 一种用于lu分解的脉动阵列结构的实现方法 |
| CN112486638B (zh) * | 2019-09-11 | 2025-02-18 | 昆仑芯(北京)科技有限公司 | 用于执行处理任务的方法、装置、设备和存储介质 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5157778A (en) * | 1986-08-20 | 1992-10-20 | Digital Equipment Corporation | Method and apparatus for circuit simulation using parallel processors including memory arrangements and matrix decomposition synchronization |
| JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
| US5301342A (en) * | 1990-12-20 | 1994-04-05 | Intel Corporation | Parallel processing computer for solving dense systems of linear equations by factoring rows, columns, and diagonal, inverting the diagonal, forward eliminating, and back substituting |
| DE69232431T2 (de) * | 1991-07-12 | 2002-09-19 | Matsushita Electric Industrial Co., Ltd. | Vorrichtung zur Lösung von linearen Gleichungssystem |
| JP2956800B2 (ja) * | 1991-09-19 | 1999-10-04 | 株式会社日立製作所 | 連立一次方程式に関する計算装置 |
| JP2667946B2 (ja) * | 1992-09-21 | 1997-10-27 | 三菱電機株式会社 | 半導体記憶装置 |
| US5442569A (en) * | 1993-06-23 | 1995-08-15 | Oceanautes Inc. | Method and apparatus for system characterization and analysis using finite element methods |
-
1994
- 1994-03-31 JP JP06224194A patent/JP3639323B2/ja not_active Expired - Fee Related
-
1995
- 1995-03-24 DE DE19510879A patent/DE19510879C2/de not_active Expired - Fee Related
- 1995-03-29 US US08/412,308 patent/US5887186A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US5887186A (en) | 1999-03-23 |
| JPH07271760A (ja) | 1995-10-20 |
| DE19510879C2 (de) | 2001-09-13 |
| DE19510879A1 (de) | 1995-10-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3639323B2 (ja) | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 | |
| Demmel et al. | Parallel numerical linear algebra | |
| Johnsson et al. | Alternating direction methods on multiprocessors | |
| CN102053948B (zh) | 在单指令多数据多核处理器架构上转置矩阵的方法和系统 | |
| CN112506567A (zh) | 数据读取方法和数据读取电路 | |
| CN116774968A (zh) | 具有一组线程束的高效矩阵乘法和加法 | |
| Johnsson | Minimizing the communication time for matrix multiplication on multiprocessors | |
| Lakshmivarahan et al. | Parallel sorting algorithms | |
| CN113536216A (zh) | 用分布流水线可分离卷积运算将卷积映射到相连处理元件 | |
| Liu et al. | Parallel reconstruction of neighbor-joining trees for large multiple sequence alignments using CUDA | |
| CN120873361A (zh) | 一种基于gpu矩阵-线程协同优化的高速ntt方法和系统 | |
| Brent | The LINPACK benchmark on the AP 1000: Preliminary report | |
| Granat et al. | Parallel solvers for Sylvester-type matrix equations with applications in condition estimation, Part I: theory and algorithms | |
| JP3638411B2 (ja) | メモリ分散型並列計算機による連立一次方程式の計算処理方法および並列計算機 | |
| Fatoohi et al. | Implementation of an ADI method on parallel computers | |
| Polok et al. | Fast radix sort for sparse linear algebra on GPU. | |
| Johnsson | Massively parallel computing: Data distribution and communication | |
| Demmel et al. | Implementing communication-optimal parallel and sequential qr factorizations | |
| Bowden | Kron's method of tearing on a transputer array | |
| Li et al. | Gamify Stencil Dwarf on Cloud for Democratizing Scientific Computing | |
| Nedozhogin et al. | Scalability Pipelined Algorithm of the Conjugate Gradient Method on Heterogeneous Platforms | |
| CN119166969A (zh) | 基于分离架构昇腾npu的复数通用矩阵乘法计算方法 | |
| Chen et al. | Optimizing GNN Inference Processing | |
| Nedozhogin et al. | Scalability Pipelined Algorithm of the Conjugate Gradient Method | |
| Zapata et al. | Mapping Algorithms On Hypercube |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040309 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040510 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050111 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050114 |
|
| 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: 20080121 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090121 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100121 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110121 Year of fee payment: 6 |
|
| LAPS | Cancellation because of no payment of annual fees |
