JP5110081B2 - 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 - Google Patents
共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 Download PDFInfo
- Publication number
- JP5110081B2 JP5110081B2 JP2009512784A JP2009512784A JP5110081B2 JP 5110081 B2 JP5110081 B2 JP 5110081B2 JP 2009512784 A JP2009512784 A JP 2009512784A JP 2009512784 A JP2009512784 A JP 2009512784A JP 5110081 B2 JP5110081 B2 JP 5110081B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- block
- lower triangular
- tridiagonalization
- cpu
- 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.)
- Active
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/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Description
しかし、計算のコストの大部分が行列ベクトル積であるため、メモリアクセスのスピードの影響を大きく受ける。全体の性能を改善するために、この部分の改良が必要である。
なお、非特許文献1には、三重対角化の基本アルゴリズムが、非特許文献2には、三重対角化の並列計算が記載されている。
本発明の並列処理方法は、複数のプロセッサを備える共有メモリ型スカラ並列計算機において、実対称行列の三重対角化を高速に行うための並列処理方法であって、該実対称行列の下三角行列を、プロセッサの個数個の列ブロック行列に分割し、該列ブロックを各プロセッサの記憶領域にロードし、各プロセッサは、1回のロードで読み込んだ列ブロックの要素に対し、該実対称行列の縦方向についての演算と、横方向についての演算とを施すことを特徴とする。
本発明の実施形態においては、三重対角化を行なうとき、更新部分の演算密度を高めるために、ブロック化されたアルゴリズムを使う。行列ベクトル積部分の対称性を利用して、下三角部分のみを利用して行列ベクトル積を並列に実行する。このとき2回の行列ベクトル積が出現するが、メモリアクセスを共通にして1回の参照にする。下三角部分のみ使うため、更新を行なうための下三角行列を演算量が均等になるように分割を動的に設定する。これにより余分なコピーを行なう必要がなくなる。また、行列ベクトル積で参照したメモリがキャッシュに保持されやすくなる。
図1に示されるように、本発明が念頭に置く並列計算機では、CPU12−1〜12−mとメモリモジュール10−1〜10−nがバスで構成される相互結合網11によって相互に接続された構成となっている。CPU12−1〜12−mは、それぞれ、L2キャッシュ及びバスインタフェースと、これに接続される複数のL1キャッシュとCPUコアからなっている。この構成をマルチコアCPUという。マルチコアCPUは、1つのCPUの内部にCPUコア(L1キャッシュも内臓)を複数封入したもので、各コアからL2キャッシュ及びバスインタフェースは共通に使う構成である。論理的には、各CPUコアが1つのCPUとして動作するように見える。図1の例では、1つのCPUに2つのCPUコアが封入された例を示しているが、4つ封入されるものもある。
図2〜図4Cを参照して、固有値・固有ベクトルを求めるための三重対角化の数学低枠組みを説明する。
a)ブロック化された三重対角化の数学的アルゴリズム
行列をブロック幅ごとに3重対角化する。行列をブロックに分割してブロック単位で下記のブロックアルゴリズムで三重対角化を行う。図2はn番目のブロックを処理しているときの図である。
step1:An のn+i 行ベクトルよりHouseholder ベクトルuを作る。
step2: vi = An +iu , wi = vi - u(utv)/2, を計算する。
step3: Ui =(Ui-1,ui ) , Wi =(Wi-1,wi )と更新する。
step4: if(i < blks)then
Anのn+i+1 列目を更新する。
endif
enddo
step5:An+blks = An - Ublks Wblks t- Wblks Ublks t
次に、ブロック化されたHouseholder 変換による三重対角化について説明する。ブロック化されたHouseholder変換は、以下の式の通りに行う。
v=(v1,v2,...,vn )
|v|2 =v・v=h2 、
Uv =(h,0,…,0)t とすると、Uv = v − (v1−h ,v2,...,vn)の関係がある。
U =(I −uut / |u |2 )=(I −αuut ), ここでu=(v1−h ,v2,...,vn )
以下αを省略して計算する。
An+1 =Ut An U =(I-uut )A (I-uut)
=An - uut An - An uut+ uut An uut
=An - uvt -vut +uvt uut
=An - uwt -uut ut v/2 - wut- uut ut v/2 +uut ut v
=An - u wt -wut ・・・(*)
ここで、 w = v - u(ut v)/2, v = An u
これを繰りし利用すれば、
An+k =An −Uk Wk t −WkUk t ・・・(**)
kステップ目の計算は(*)および(**)からVn を次のように計算できる。
vk = An uk -Uk-1 Wk-1 tuk - Wk-1Uk-1 t uk
wk =vk - uk uk t vk/2
Uk =(Uk-1,uk ) , Wk =(Wk-1,wk)
An+k = An - Uk Wk t - WkUk t
b)Householder変換を構成する情報の格納
固有ベクトルを計算するときに3重対角化でつかったHouseholder 変換が必要になる。このため、Un およびαをhouseholder 変換を構成するベクトルの位置に格納する。αは対応する対角要素の位置に格納する。
c)Ui を効率的に求める方法
ブロック部分の三重対角化を行うためのHouseholder 変換のために、次のベクトルを更新する必要がある。これらの計算をできるだけローカルに行うために、ブロック幅部分を作業域にコピーして3重対角化を行い、もとの領域に格納する。次の列ベクトルの更新をそのたび行わず、行列積の形にして演算密度を上げて計算を行う。このため、ブロック部分の三重対角化を再帰的なプログラミングで行う。
1)行列ベクトル積を下三角部分のみを使って1つのアクセス(ロード)で 2倍の演算を行ない、各CPUで均等に行なう方法
図5に示されるように、下三角行列部分のみを利用して行列ベクトル積を計算する。行列ベクトル積で使う行列の大きさをNn×Nnとする。4並列で行うとき、下三角部分を4つの部分に分割する位置は、以下のようになる。
im=Nn×(1-sqrt(1-m/#p))
m=1、2、3で計算したものがちょうど境界位置になる。なお、#pは、分割する総数、つまり、並列数である。
各部分は対角ブロック行列部分の下三角行列部分Dm と、その下にある長方形の行列Rmとからなる。
vxm1 (im+1:Nn )=Rm ×u1(im-1+1:im) (式1)
vxm2 (im-1+1:im )=Rm t ×u1(im+1:Nn) (式2)
vxm3 (im-1+1:im )=Dm ×u1(im-1+1:im) (式3 )
vxm4 (im-1+1:im )=notdiag(Dm )t×u1(im-1+2:im ) (式4 )
(notdiag(X)は、下三角行列Xの対角部分を除いた下三角行列を表す)
簡単のためRmを行列n×mの行列、x1を長さnのベクトル、x2を長さmのベクトル、y1を長さmのベクトル、y2を長さnのベクトルとする。
x1(1:n)=0
do j=1,m
tmp1=y1(j)
sum=0
do i=1,n
tmp2=y2(i)
tmp=R(i,j)
x1(i)=x1(i)+tmp*tmp1
sum=sum+tmp*tmp2
enddo
x2(j)=sum
enddo
この場合、x1やy2はデータ量が小さく、かつ、繰り返しアクセスされるので、キャッシュに保持され、高速にアクセスできる。R(i,j)のアクセスに比べ、演算はほとんど無視できるほど速いので、別々に行列ベクトル積を行なう場合に比べて約2倍の性能になる。
各CPU での演算数が等しい。つまり、要素数に比例する行列の対応部分の面積(あるいは要素数そのもの)が等しいと考える。
Nn 2-( Nn - im )2=Nn 2×m/#p,r=im /Nn と置いて計算する。
(r−1)2=m/#p
r=1−sqrt(1-m/#p) ( 根の範囲より小さい方を採用する。)
2)更新部分の並列化および対角ブロック部分の計算方法
step5の更新部分は対称性を利用して下半分を計算する。更新の演算量が各CPU(スレッド) で、均等化するように、分割する。分割方法は行列ベクトル積で分割したのと同じ方法で行なう。
i m = Nn ×(1-qsrt(1-m/#p)) m=1,2,3 で計算したものがちょうど境界の位置になる。#pは、分割する総数、つま並列数である。
An+k =An −Uk Wk t −WkUk t から、対応部分を計算する。
対角ブロック行列部分の更新は、図7のように行なう。すなわち、対角ブロックの下三角部分について、対角線の2等分点を決める。この等分点から、行方向、及び、列方向に下三角行列を分割する。矩形部分は、行列積で更新する。2つの大きさが半分の下三角行列ができるので、これらに関して、同じく対角線上の等分点を決め、同様に列方向、行方向に分割する。そして、対象となる下三角行列の大きさが十分小さくなったら、上三角行列も一緒に行列積で計算する。これらは、簡単な再帰プログラムで作ることが出来る。
ブロック化された三重対角化演算においては、以下のような処理を行う。
1)三重対角化でブロックごとに、三重対角化を行う。上のブロックを三重対角化し、その三重対角化で生成された行列U およびW を使って、ブロック幅分縮小された正方行列( この下三角行列は、図8において、太い点線で表示) を更新する。ただし、この正方行列は対称行列なので、下三角行列部分( 太い点線で囲んだ三角形部分) のみ更新して上三角行列部分のデータとして利用する。
2)ブロックごとの三重対角化では、ブロック内の太線で示した正方行列(An+1:太線で囲んだ正方行列) に関する行列ベクトル積を計算する必要がある。この計算で、正方行列の大きさは1ずつ小さくなっていく。この部分も対称行列なので、下三角行列部分を使って計算する。
・メモリアクセスが遅いスカラ計算機で行列ベクトル積の計算を行うとき、ほとんどがメモリアクセスの時間である。このた、メモリアクセスのコストを削減することがポイントである。
・行列の対称性を利用して、下三角行列部分を使うとき、並列処理の観点から負荷分散が均等であることが望ましい。
図9は、本発明の実施形態に従ったプログラムの機能ブロック図である。
ブロック三重対角制御部15は、ブロック部分の三重対角化部16と、更新部19からなる。三重対角化部16は、各スレッドが担当する下三角行列の2次元目の区間を決める行列ベクトル積の負荷制御部17を備え、負荷制御部17は、ブロック対角行列の下三角部分とその下の長方形行列で計算を行う行列ベクトル積並列計算部18を備える。また、更新部19は、各スレッドが担当する下三角行列の2次元目の区間を決める行列積による演算の負荷制御部20を備える。負荷制御部20は、更に、ブロック対角部分を除く更新を行うブロック更新部21とブロックの細分化の制御を行うブロック対角部の下三角行列部の更新制御部22からなり、更新制御部22は、ブロック対角行列を細分化して下三角行列を細かい正方行列で近似して計算する計算部23を備える。
1)vsum(nptr:n,nothrd)=0と各スレッドで0クリアする。
2)以下の2つの計算をL2の列方向へ、図10のL2の中の矢印のように参照しながら同時に計算する。後に説明するmatvec1のフローを参照されたい。
vsum(me+1:n)=L2*U(ms:me)
vsum(ms:me)=L2t*U(me+1:n)
3)L1を使ってブロック対角部分を同様に計算する。
vsum(ms:me)=vsum(ms:me)+L1*U(ms:me)+ND(L1)t*U(ms:me,i)
(ここで、ND(L1)は、L1の対角要素に0とした下三角行列)
4)nptr:nをスレッドごとに均等分割した区間を作る。isを始点、ieを終点とする。計算終了をバリア同期をとって確認し、各スレッドで並列計算する。
V(is:ie,i)=Σvsum(is:ie,nothrd)
nothrd=1〜numthrd
(nothrdは、スレッド番号1〜numthrdの値を取る。numthrdは、総スレッド数。)
図11は、更新部の処理を説明する図である。
A(nptr:n,nptr:n)=A(nptr:n,nptr:n)-U(nptr:n,1:blk)*W(nptr:n,1:blk)t-W(nptr:n,1:blk)*U(nptr:n,1:blk)t
ここで、nptrは、下三角行列の左端、blkは、ブロック幅、nは、行列の右端、msは、各スレッドの受け持つ始点、meは、各スレッドの受け持つ終点である。
図12〜図20は、本発明の実施形態に従った処理のフローである。
このサブルーチンは、再帰的プログラムである。呼び出すプログラム文は、subroutine blktrid ( A ,k ,n ,diag ,sdiag ,nbase ,istart ,nwidth ,U ,V
,nothrd ,numthrd )のようにする。ここで、nbaseは、ブロックの位置を示すオフセット、istartは、再帰呼び出しで対象となる縮小されたブロックのブロック内でのオフセットで、最初は1で、再帰的に呼び出されるとき、対象ブロックの位置を示す。nwidthは、ブロック幅をあらわす。
istart3=istart+nwidth/2、nwidth3=nwidth-nwidth/2,
is2=istart2, ie2=istart+nwidth2-1, is3=istart3, ie3=istart3+nwidth3-1,
iptr=nbase+istart3, ぇん(n-iptr+numthrd-1)/numthrd,
is=iptr+(nothrd-1)*len+1、 ie=min(n,iptr+nothrd*len)
ステップS31において、U(is:ie,is3:ie3)=U(is:ie,is3:ie3)-U(is:ie,is2:ie2)*W(is3:ie3,is2:ie2)t-W(is:ie,is2:ie2)*U(is3:ie3,is2:ie2)tとする。
図14は、サブルーチンbtunitのフローである。
iptr2=nbase+i、len=(n-iptr2+numthrd-1)/numthrd、
is=iptr2+(nothrd-1)*len+1、ie=min(n,iptr2+nothrd*len)
ステップS40において、バリア同期を取る。ステップS41において、tmp(nothrd)=U(is:ie,i)t*U(is:ie,i)とし、ステップS42で、バリア同期を取る。ステップS43において、nothrd=1であるか否かを判断する。ステップS43の判断がNoのときは、ステップS45に進む。ステップS43の判断がYesの場合には、ステップS44において、各スレッドで部分計算したデータの和の平方根をとり、三重対角化のための計算を行う(ハウスホルダーベクトルの作成)。すなわち、以下の計算を行う。なお、sumは、和をあらわし、sqrtは、平方根をあらわす。
sigma=sqrt(sum(tmp(1:numthrd)))
diag(iptr2)=u(iptr2,i), sdiag(iptr2)=-sigma,
U(nbase+i+1,i)=U(nbase+1,i)+sign(u(nbase+i+1,i)*sigma
alpha=1.0/(sigma*u(nbase+i+1,i), U(iptr2,i)=alpha
ステップS45では、バリア同期を取る。ステップS46において、iptr3=iptr2+1とする。ステップS47において、A, V, U, n, k, I, iptr3, is, ie, nothrd, numthrdを受け渡して、サブルーチンmatvecを呼び出す。すなわち、A(iptr3:n,iptr3:n)の下三角行列からV=A*Uの計算を行う。ステップS48において、バリア同期を取る。ステップS49において、以下の計算をする。
V(is:ie,i)= alpha*(V(is:ie,i)-V(is:ie,1:i-1)*(U(iptr3:n, 1:i-1)t * U(iptr3:n, i))-U(is:ie, 1:i-1)*(V(iptr3:n, 1:i-1)t*U(iptr3:n,i)))
ステップS50において、バリア同期を取る。ステップS51において、tmp(nothrd)=V(is:ie,i)t*U(is:ie,i)とし、ステップS52において、バリア同期を取る。ステップS53において、nothrd=1であるか否かを判断する。ステップS53の判断がNoの場合には、ステップS55に進む。ステップS53の判断がYesの場合には、ステップS54において、beta=0.5*alpha*sum(tmp(1:numthrd))とする。ここで、sumは、ベクトルの和である。ステップS55で、バリア同期を取り、ステップS56において、V(is:ie,i)=V(is:ie,i)-beta*U(is:ie,i)とし、ステップS57において、バリア同期を取る。ステップS59において、ptr2<n-2であるか否かを判断する。ステップS59の判断がYesの場合には、ステップS60において、U(is:ie, i+1)=U(is:ie, i+1)- U(is:ie, istart:i)*V(i+1, istart:i)t- V(is:ie, istart:i)*U(n+1, istart:i)tを計算し、ステップS38に戻る。ステップS59の判断がNoの場合には、ステップS61において、、U(is:ie, i+1:i+2)=U(is:ie, i+1:i+2)- U(is:ie, istart:i)*V(i+1:n, istart:i)t- V(is:ie, istart:i)*U(n+1:n, istart:i)tを計算し、サブルーチンを抜ける。
引数は、A, V, U, n, k, I, is, ie, iptr3, nothrd, numthrdである。ステップS65において、vsum(n,numthrd)をshared属性で確保する。ステップS66において、各スレッドでvsum(iptr3:n,nothrd)=0と初期化する。制御部では、行列ベクトル積を各スレッドで分担計算するために、下三角行列A(iptr3:n, iptr3:n)を各スレッドで分担する区間を計算する。すなわち、以下の計算をする。
nn=n-iptr3+1,
xleft=1.0-dble(nothrd-1)/dble(numthrd),
xright=1.0-dble(nothrd)/dble(numthrd),
ms=nbase2+nn*(1.0-dqsrt(xleft))+1,
me=nbase2+nn*(1.0-dsqrt(xright))
ステップS68において、matvec1を呼び出す。下三角行列の2次元目の範囲が始点ms、終点meの対角行列部分の下のA(me+1:n, ms:me)から各スレッドで
vsum(ms:me, nothrd)=A(me+1:n, ms:me)t*U(me+1:n,i)
vsum(ne+1:n,nothrd)=A(me+1:n,ms:me)*U(ms:me)
を計算する。引数は、A, vsum, U, I, ms, me, is, ie, nothrd, numthrdである。
vsum(ms:me)=vsum(ms:me)+LOW(A(ms:me, ms:me))*U(ms:me,i)
+NDLOW(A(ms:me, ms:me))t*U(ms:me,i)
を計算する。
ステップS70において、バリア同期を取り、ステップS71において、
ステップS85において、k2=msとする。ステップS86において、k2<=meであるか否かを判断する。ステップS86の判断がNoの場合には、このサブルーチンを抜ける。ステップS86の判断がYesの場合には、ステップS87において、k1=k2+1、tmp1=U(k2,i)、tmpz=A(k2,k2)、sum=tmp1*tmpzとする。ステップS88において、k1<=meであるか否かを判断する。ステップS88の判断がYesの場合には、ステップS89において、tmp2=U(k1,i)、tmp=A(k1,k2)(1回のロードで2回計算する)、vsum(k1)=vsum(k1)+tmp*tmp1、sum=sum+tmp*tmp2、k1=k1+1として、ステップS88に戻る。ステップS88の判断がNoの場合には、ステップS90において、vsum(k2)=vsum(k2)+sum、k2=k2+1として、ステップS86に戻る。
ステップS95において、スレッド間でバリア同期を取る。ステップS96は負荷の制御部で行う。ステップS96においては、各スレッドでペアをつくり、更新を分担する始点、終点を決める。すなわち、以下の演算を行う。
nbase2=nbase+iblk,
nn=n-nbase2,
xleft=1.0-dble(nothrd-1)/dble(numthrd),
xright=1.0-dble(nothrd)/dble(numthrd),
is=nbase2+nn*(1.0-dqsrt(xleft))+1,
ie=nbase2+nn*(1.0-dsqrt(xright))
ステップS97においては、以下を計算する。
A(ie+1:n, is;ie1)=A(ie+1:n, is:ie)-W(ie+1:n, 1:blk)*U(is:ie, 1:blk)t-U(ie+1:n, 1:blk)*W(is:ie, 1:blk)t
ステップS98において、下三角行列部の更新(A=A-W*Ut)を行う。サブルーチンltgemmtrtを呼び出し、対角ブロック行列の下三角行列部分を更新する。引数として、W(is:ie, 1:blk), U(is:ie, 1:blk), A(is:ie, is:ie)及び対角ブロック行列の大きさlen=ie-is+1を渡す。
図20は、サブルーチンltgemmtrtのフローである。
Claims (2)
- 共有メモリ型スカラ並列計算機において、n×nなる実対称行列Aの三重対角化をブロック化した方法で行う方法であって、
実対称行列を2次元配列に格納した場所に下三角行列部分だけを格納し、
該実対称行列を幅iblkを持つ列ブロックごとに分割し、
列ブロックごとに三重対角化を行うブロックの三重対角化部分と、三重対角化を行うときに生成されたブロック幅iblkの本数のベクトルを連結したブロック行列U,Wを使ってUW T とWU T を計算して三重対角化が完了したm番目の列ブロックまでを取り除いた残りのA(m*iblk+1:n,m*iblk+1:n)なる部分実対称行列の下三角行列を更新し、
次の列ブロックの三重対角化を行うことを繰り返して、行列全体の三重対角化を行い、
m番目の列ブロックに対する三重対角化部分で三重対角化を該列ブロックにあるi列に対して順次行うとき、i+1列を最左端列に持つ部分実対称正方行列A(i+1:n,i+1:n)とベクトルとの行列ベクトル積を行う場合に、A(i+1:n,i+1:n)の下三角行列を列方向に分割して各CPUに割り当てて該行列ベクトル積を並列に計算し、
各CPUで、割り付けられた部分の行列の要素a(s,t)を順次取り出してこの値を使って、行列ベクトル積を行う場合、対角要素以外は対称なa(t,s)に対する行列ベクトル積の積を同じ値を使って、ベクトルの対応する要素と演算を行い、
結果を最初にゼロクリアされた一次元配列の対応位置にそれぞれ加え、
行列ベクトル積の各CPUでの並列計算の後、それぞれのCPUで計算した中間結果を加え合わせ、
部分行列A(i+1:n,i+1:n)の下三角行列を列方向に分割して各CPUに割り当てるとき、A(i+1:n,i+1:n)が十分大きなとき、各CPUに割り当てられた下三角行列の要素数がおおよそ等しくなるように列方向に分割し、行列の列を各CPUに割り当てる、
ことを特徴とする方法。 - 列ブロックの三重対角化の処理の後ごとに行う更新部分に関しては、UW T ,WU T を計算して該更新部分から引くことで更新を行い、
更新を行う下三角部分行列の更新に関して、この行列が十分大きなとき、各CPUに更新する要素数がおおよそ等しくなるようにこの下三角行列を列方向に分割して各CPUに割り当て、
各CPUに割り当てられた、列を束ねたブロックが、対角ブロック部分が下三角行列と、その下の部分の長方形の部分に分かれる場合に、長方形の部分は行列積で計算し、
対角ブロック部分の下三角行列部分は、対角ブロックの対角要素のほぼ中央で、対角ブロックを列方向、行方向に、もとの下三角行列の1/4の大きさの2つの下三角行列と長方形の行列部分に分割して3つの部分に分け、
このように分割してできた下三角行列に対して、該分割を再帰的に適用して、生成された下三角行列が十分小さくなるまで繰り返して、長方形部分は行列積で更新し、対角要素を含む小さな下三角行列はこれと対称な位置関係にある上三角部分も合わせた正方行列を行列積で計算して更新する、
ことを特徴とする請求項1に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/000424 WO2008136045A1 (ja) | 2007-04-19 | 2007-04-19 | 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2008136045A1 JPWO2008136045A1 (ja) | 2010-07-29 |
JP5110081B2 true JP5110081B2 (ja) | 2012-12-26 |
Family
ID=39943170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009512784A Active JP5110081B2 (ja) | 2007-04-19 | 2007-04-19 | 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8527569B2 (ja) |
JP (1) | JP5110081B2 (ja) |
WO (1) | WO2008136045A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262799B2 (en) * | 2013-11-08 | 2016-02-16 | Silicon Graphics International Corp. | Shared memory eigensolver |
JP6503902B2 (ja) | 2015-06-02 | 2019-04-24 | 富士通株式会社 | 並列計算機システム、並列計算方法及びプログラム |
JP6610350B2 (ja) * | 2016-03-11 | 2019-11-27 | 富士通株式会社 | 計算機、行列分解方法、及び行列分解プログラム |
JP6907700B2 (ja) * | 2017-05-23 | 2021-07-21 | 富士通株式会社 | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム |
CN109766515B (zh) * | 2018-12-26 | 2023-04-14 | 上海思朗科技有限公司 | 矩阵分解处理装置及方法 |
US11562239B2 (en) * | 2019-05-23 | 2023-01-24 | Google Llc | Optimizing sparse graph neural networks for dense hardware |
CN113704691B (zh) * | 2021-08-26 | 2023-04-25 | 中国科学院软件研究所 | 一种申威众核处理器的小规模对称矩阵并行三对角化方法 |
WO2023206074A1 (zh) * | 2022-04-26 | 2023-11-02 | 浙江凌迪数字科技有公司 | 一种对称矩阵与向量相乘的并行计算方法及其*** |
WO2024122067A1 (ja) * | 2022-12-09 | 2024-06-13 | 日本電信電話株式会社 | ハッシュ値計算装置、ハッシュ値計算方法及びプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004005528A (ja) * | 2002-03-29 | 2004-01-08 | Fujitsu Ltd | 共有メモリ型スカラ並列計算機用固有値問題の並列処理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790598A (en) * | 1996-03-01 | 1998-08-04 | Her Majesty The Queen In Right Of Canada | Block decision feedback equalizer |
JP3639206B2 (ja) * | 2000-11-24 | 2005-04-20 | 富士通株式会社 | 共有メモリ型スカラ並列計算機における並列行列処理方法、及び記録媒体 |
US20030182518A1 (en) * | 2002-03-22 | 2003-09-25 | Fujitsu Limited | Parallel processing method for inverse matrix for shared memory type scalar parallel computer |
JP3983188B2 (ja) * | 2002-03-22 | 2007-09-26 | 富士通株式会社 | 共有メモリ型スカラ並列計算機用逆行列の並列処理方法 |
US20030187898A1 (en) * | 2002-03-29 | 2003-10-02 | Fujitsu Limited | Parallel processing method of an eigenvalue problem for a shared-memory type scalar parallel computer |
JP4448784B2 (ja) * | 2005-03-15 | 2010-04-14 | 株式会社日立製作所 | 並列計算機の同期方法及びプログラム |
-
2007
- 2007-04-19 JP JP2009512784A patent/JP5110081B2/ja active Active
- 2007-04-19 WO PCT/JP2007/000424 patent/WO2008136045A1/ja active Application Filing
-
2009
- 2009-08-28 US US12/550,040 patent/US8527569B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004005528A (ja) * | 2002-03-29 | 2004-01-08 | Fujitsu Ltd | 共有メモリ型スカラ並列計算機用固有値問題の並列処理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2008136045A1 (ja) | 2008-11-13 |
US20090319592A1 (en) | 2009-12-24 |
US8527569B2 (en) | 2013-09-03 |
JPWO2008136045A1 (ja) | 2010-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5110081B2 (ja) | 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 | |
US11386644B2 (en) | Image preprocessing for generalized image processing | |
KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
US10489703B2 (en) | Memory efficiency for convolutional neural networks operating on graphics processing units | |
KR102203746B1 (ko) | 인공 신경망 정방향 연산 실행용 장치와 방법 | |
JP6956796B2 (ja) | 演算回路、演算方法、およびプログラム | |
Ballard et al. | Parallel nonnegative CP decomposition of dense tensors | |
US8214818B2 (en) | Method and apparatus to achieve maximum outer level parallelism of a loop | |
Eswar et al. | PLANC: Parallel low-rank approximation with nonnegativity constraints | |
Li | On parallel solution of sparse triangular linear systems in CUDA | |
US7483937B2 (en) | Parallel processing method for inverse matrix for shared memory type scalar parallel computer | |
Myllykoski et al. | Task‐based, GPU‐accelerated and robust library for solving dense nonsymmetric eigenvalue problems | |
US20030187898A1 (en) | Parallel processing method of an eigenvalue problem for a shared-memory type scalar parallel computer | |
US20180349321A1 (en) | Parallel processing apparatus, parallel operation method, and parallel operation program | |
Abdelfattah et al. | Progressive optimization of batched LU factorization on GPUs | |
Perepelkina et al. | The DiamondCandy LRnLA algorithm: raising efficiency of the 3D cross-stencil schemes | |
JP2012221254A (ja) | 並列処理最適化装置及びシミュレーションプログラム | |
Bylina et al. | The parallel tiled WZ factorization algorithm for multicore architectures | |
US9600446B2 (en) | Parallel multicolor incomplete LU factorization preconditioning processor and method of use thereof | |
Jung et al. | Accelerating implicit integration in multi-body dynamics using GPU computing | |
Seznec et al. | Real-time optical flow processing on embedded GPU: an hardware-aware algorithm to implementation strategy | |
JP4037303B2 (ja) | 共有メモリ型スカラ並列計算機用固有値問題の並列処理方法 | |
Kapllani et al. | A multistep scheme to solve backward stochastic differential equations for option pricing on GPUs | |
Jammer et al. | Solving ARGESIM Benchmark CP2'Parallel and Distributed Simulation'with Open MPI/GSL and Matlab PCT-Monte Carlo and PDE Case Studies. | |
Tokura et al. | Gpu-accelerated bulk computation of the eigenvalue problem for many small real non-symmetric matrices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120515 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120717 |
|
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: 20120911 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120924 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151019 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5110081 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |