正在加载图片...
(vi)接收编号为 my rank+1的处理器发送的数据块作为自己的 后数据块 (ⅸx)将存于buer中的前数据块发送给编号为 my rank+1的处理 (x)将存于buer中的后数据块发送给编号为 my rank-1的处理器 end if end if End 各处理器并行地对其局部存储器中的非主对角元素a进行消去,首先计算旋转参数并 对第i行和第j行两行元素进行旋转行变换。然后通过扩展收集操作将相应的旋转参数及第 i列和第j列的列号按处理器编号连接起来并广播给所有处理器。各处理器在收到这些旋转 参数和列号之后,按0,1,…P-1的顺序依次读取旋转参数及列号并对其m行中的第i列和第 j列元素进行旋转列变换 经过一轮计算的2p-1次数据交换之后,原矩阵A的所有非主对角元素都被消去一次 此时,各处理器求其局部存储器中的非主对角元素的最大元 locaImax,然后通过归约操作的 求最大值运算求得将整个n阶矩阵非主对角元素的最大元muax,并广播给所有处理器以决定 是否进行下一轮迭代。具体算法框架描述如下: 算法215雅可比法求对称矩阵特征值的并行算法 输入:矩阵Anxn,ε 输出:矩阵A的主对角元素即为A的特征值 对所有处理器 my rank( my rank=0,…,p-1)同时执行如下的算法 (afor i=0 to m-l do b[]= myrank*m+i/b记录处理器中的行块数据在原矩阵A中的实际行号* end for (b)whie(|max|>e)do/*max为A中所有非对角元最大的绝对值 (I)for i=my rank*m to(my rank+l)*m-2 do /*对本处理器内部所有行两两配对进行旋转变换* for j=i+l to(my rank+l)*m-1 do (1.1)= i mod m,闩modm陣*,j为进行旋转变换行(称为主行)的 实际行号,r,t为它们在块内的相对行号 (1.2ff(ar≠0)then/*对四个主元素的旋转变换 fa[rl,g=(a[小-a[,)/2,h=gm(g)°sqgr(+g*g), sin2=h, sinl=h/sgri(2 (1+sgrt(l-hh)), cosl=sqrt(l-sin1sinl) p=, i*cosl*cosl+at,*sinl"sinl+a[; /sin2 bear i" sinI sinl+at," cosl"cosl-arjsin2 (i)fory=0ton-1do体*对两个主行其余元素的旋转变换* if((v≠)and(v≠)then 付y]=a[r;v]*cosl+qy a[t, v]=-a[r, v]* sinl alt, vI(viii)接收编号为 my_rank+1 的处理器发送的数据块作为自己的 后数据块 (ix)将存于 buffer 中的前数据块发送给编号为 my_rank+1 的处理 器 (x)将存于buffer中的后数据块发送给编号为my_rank-1的处理器 end if end if End 各处理器并行地对其局部存储器中的非主对角元素 aij 进行消去,首先计算旋转参数并 对第 i 行和第 j 行两行元素进行旋转行变换。然后通过扩展收集操作将相应的旋转参数及第 i 列和第 j 列的列号按处理器编号连接起来并广播给所有处理器。各处理器在收到这些旋转 参数和列号之后,按 0,1,…,p-1 的顺序依次读取旋转参数及列号并对其 m 行中的第 i 列和第 j 列元素进行旋转列变换。 经过一轮计算的 2p-1 次数据交换之后,原矩阵 A 的所有非主对角元素都被消去一次。 此时,各处理器求其局部存储器中的非主对角元素的最大元 localmax,然后通过归约操作的 求最大值运算求得将整个 n 阶矩阵非主对角元素的最大元 max,并广播给所有处理器以决定 是否进行下一轮迭代。具体算法框架描述如下: 算法 21.5 雅可比法求对称矩阵特征值的并行算法 输入:矩阵 An×n,ε 输出:矩阵 A 的主对角元素即为 A 的特征值 Begin 对所有处理器 my_rank(my_rank=0,…, p-1)同时执行如下的算法: (a)for i=0 to m-1 do b[i] =myrank*m+i /* b 记录处理器中的行块数据在原矩阵 A 中的实际行号*/ end for (b)while (│max│>ε) do /* max 为 A 中所有非对角元最大的绝对值*/ (1)for i=my_rank*m to (my_rank+1)*m-2 do /*对本处理器内部所有行两两配对进行旋转变换*/ for j=i+1 to (my_rank+1)*m-1 do (1.1)r=i mod m , t=j mod m /*i, j 为进行旋转变换行(称为主行)的 实际行号, r, t 为它们在块内的相对行号*/ (1.2)if (a[r,j] ≠ 0) then /*对四个主元素的旋转变换*/ (i)Compute: f=-a[r,j], g=( a[t,j]- a[r,i])/2, h=sgn(g)*f/sqrt(f*f+g*g) , sin2=h , sin1=h/sqrt(2*(1+sqrt(1-h*h))) , cos1=sqrt(1-sin1*sin1), bpp= a[r,i]*cos1*cos1+a[t,j]*sin1*sin1+a[r,j]*sin2, bqq= a[r,i]* sin1*sin1+a[t,j]* cos1*cos1-a[r,j]*sin2, bpq=0 , bqp=0 (ii)for v=0 to n-1 do /*对两个主行其余元素的旋转变换*/ if ((v ≠ i) and ( v ≠ j)) then br[v] = a[r,v]*cos1 + a[t,v]*sin1 a[t,v] = -a[r,v]* sin1 + a[t,v]* cos1 end if
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有