正在加载图片...
for(z=0; Z<m; z++) &status) e(zj1)-e(z, il e(z, ilFziz for(Fm/2 i<m, 1++) for(=O;<N; j++) buffer((i-m/2)j=a(ij) for(F=m/2;<m;计++) 1/ forv*/ for(=0<N: j++) for i j*/ 3 for(Fm/2; i<m 1++) /*前2p2次数据交换* buf[i-m/2Fb( for(counter; counter<=2p-2 counter++) for(F=0<m2;H++) for(=0<N j++) if (myid==0) a(m2)3)=a(lj) MPI Send(&(a( m/2, 0)), for(F0 j<N: j++) m2*N, e(+m2))=e(1j), MPI FLOAT,myid+ for(i=0,i<m2;计++) myid+I bm/2+i)=b(i), MPI COMM WORLD) MPI Recv(&(a(, 0)), m/2N MPI FLOAT, myid-I MPI Send( &(e(m/2, 0)), m/2*N MPI FLOAT, myid+l, myid+I MPI COMM WORLD MPI COMM WORLD) MPI Send(&b(m/2), m/2, MPI INT, MPI COMM WORLD) MPI COMM WORLD MPI Recv(&(a(m/2, 0), m/2 N MPI FLOAT, myid+ l, myid, MPI Recv(&b(o), m/2 MPI COMM WORLD MPI INT, myid -1, myid, &status); MPI COMM WORLD &status) MPI Recv(&(e(m/2, 0)), m/2*N, MPI FLOAT, myid+l, myid, MPI Send(buffer, m/2*N, MPI COMM WORLD MPI FLOAT, myid-1, myid-I &status) MPI COMM WORLD) MPI Recv(&b(m/2), m/2, MPI MPI Send(buffer, m/2*N INT, myid+ l, myid MPI F LOAT, myid-1, myid-I MPI COMM WORLD MPI COMM WORLD)for(z=0;z<m;z++) e(z,j1)= c1* e(z,j1)-e(z,i1) *s1; for(z=0;z<m;z++) e(z,i1)=zi[z]; } } current=current+1; } /* for v */ } /* for i,j */ /*前 2p-2 次数据交换*/ for(counter=1;counter<=2*p-2;counter++) { if (myid==0) { MPI_Send(&(a(m/2,0)), m/2*N, MPI_FLOAT,myid+1, myid+1, MPI_COMM_WORLD); MPI_Send(&(e(m/2,0)),m/2*N, MPI_FLOAT,myid+1,myid+1, MPI_COMM_WORLD); MPI_Send(&b(m/2),m/2,MPI_INT, myid+1,myid+1, MPI_COMM_WORLD); MPI_Recv(&(a(m/2,0)),m/2*N, MPI_FLOAT,myid+1,myid, MPI_COMM_WORLD, &status); MPI_Recv(&(e(m/2,0)),m/2*N, MPI_FLOAT,myid+1,myid, MPI_COMM_WORLD, &status); MPI_Recv(&b(m/2),m/2, MPI_ INT,myid+1,myid, MPI_COMM_WORLD, &status); } if ((myid==p-1)&&(myid%2!=0)) { for(i=m/2;i<m;i++) for(j=0;j<N;j++) buffer((i-m/2),j)=a(i,j); for(i=m/2;i<m;i++) for(j=0;j<N;j++) buffee((i-m/2),j)=e(i,j); for(i=m/2;i<m;i++) buf[i-m/2]=b(i); for(i=0;i<m/2;i++) for(j=0;j<N;j++) a((i+m/2),j)=a(i,j); for(i=0;i<m/2;i++) for(j=0;j<N;j++) e((i+m/2),j)=e(i,j); for(i=0;i<m/2;i++) b(m/2+i)=b(i); MPI_Recv(&(a(0,0)),m/2*N, MPI_FLOAT,myid-1, myid, MPI_COMM_WORLD, &status); MPI_Recv(&(e(0,0)),m/2*N, MPI_FLOAT,myid-1,myid, MPI_COMM_WORLD, &status); MPI_Recv(&b(0),m/2, MPI_INT, myid-1,myid, MPI_COMM_WORLD, &status); MPI_Send(buffer,m/2*N,) MPI_FLOAT,myid-1,myid-1, MPI_COMM_WORLD); MPI_Send(buffee,m/2*N, MPI_FLOAT,myid-1,myid-1, MPI_COMM_WORLD);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有