正在加载图片...
for(F=0,<m;H++) 并确定最大元所在的列 MPI Send(&A(1, 0), M MPI COMM WORLD) /列交换 if(l=v) MPI Send(&B(), 1 MPI COMM WORLD) aft valtA) tem=shifty 0,计+1, MPI COMM WORLD, 归一化 for(k=v+l; k<M; k++) MPI Recv(&b(), 1, MPI FLOAT, a(i, ka(i k)ali, v) 0i+1. MPI COMM WORLD b(iFb(/a(iv) &status) a(i, vFl for(k=v+l; k<M: k++) M=b() 消去* 发送归一化后的主行* for(=0,i<m;计++) MPI Bcast( &f[OL, M+I for(0J≤pj+) MPI FLOAT, my_rank, MPI COMM WORLD) /*j号处理器负责广播主行元素* if (my rank==j) 发送主行中主元素所在的 列号* 主元素在原系数矩阵A中 MPI Bcast( &l, I, MPI INT, 的行号和列号为v MPI COMM WORLD) Imax=a(, v) els 体在同行的元素中找最大元for(i=0;i<m;i++) b(i)=B(i*p); for(i=0;i<M;i++) if ((i%p)!=0) { i1=i%p; i2=i/p+1; MPI_Send(&A(i,0),M, MPI_FLOAT,i1,i2, MPI_COMM_WORLD) ; MPI_Send(&B(i),1, MPI_FLOAT,i1,i2, MPI_COMM_WORLD) ; } } else { for(i=0;i<m;i++) { MPI_Recv(&a(i,0),M,MPI_FLOAT, 0,i+1,MPI_COMM_WORLD, &status); MPI_Recv(&b(i),1,MPI_FLOAT, 0,i+1,MPI_COMM_WORLD, &status); } } /*消去*/ for(i=0;i<m;i++) for(j=0;j<p;j++) { /*j 号处理器负责广播主行元素*/ if (my_rank==j) { /*主元素在原系数矩阵 A 中 的行号和列号为 v*/ v=i*p+j; lmax=a(i,v); l=v; /*在同行的元素中找最大元, 并确定最大元所在的列 l*/ for(k=v+1;k<M;k++) if (fabs(a(i,k))>lmax) { lmax=a(i,k); l=k; } /*列交换*/ if (l!=v) { for(t=0;t<m;t++) { temp=a(t,v); a(t,v)=a(t,l); a(t,l)=temp; } tem=shift[v]; shift[v]=shift[l]; shift[l]=tem; } /*归一化*/ for(k=v+1;k<M;k++) a(i,k)=a(i,k)/a(i,v); b(i)=b(i)/a(i,v); a(i,v)=1; for(k=v+1;k<M;k++) f[k]=a(i,k); f[M]=b(i); /*发送归一化后的主行*/ MPI_Bcast(&f[0],M+1, MPI_FLOAT,my_rank, MPI_COMM_WORLD) ; /*发送主行中主元素所在的 列号*/ MPI_Bcast(&l,1,MPI_INT, my_rank, MPI_COMM_WORLD) ; } else {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有