正在加载图片...
moreLength =lEngth size, S TAG2 MPI COMM WORLD stop Pos=start Pos everageLength-1; if(rank ==0) for(int i=1; i< lEngth/2; 1++) startPos =0. stopPos moreLengthteverageLength w[=wlwLength-i evaluate(p, 0, uate(q, 0, variable w,r, startPos, stopPos, lEngth) for(i= startPos; i <=stopPos; 1++) if (rank >0) s0=so*rowLength*1.0) MPI Send((r+startPos), everageLength if(rank >0) MPI DOUBLE COMPLEX. O R TAG MPI COMM WORLD), everagelength MPI DOUBLE COMPLEX, 0, S TAG, MPI COMM WORLD); MPI DOUBLE COMPLEX. O S TAG2, MPI COMM WORLD MPI Recv((r+morelength+i MPI DOUBLE COMPLEX r(i= l; i< size: 1++) MPI COMM WORLD, &status) MPI Recv((s+moreLength+i* erage Length), everageLength MPI DOUBLE COMPLEX puts("nAfter FFTr(tFp(t)q(t"); MPI COMM WORLD print(r, wLength-1); rinf("Use prossor size=%d\n",size) for(i=1; i<size,i++ MPI Send(s, lEngth MPI DOUBLE COMPLEX, imoreLength = wLength % size; startPos = moreLength + rank * everageLength; stopPos = startPos + everageLength - 1; if(rank == 0) { startPos = 0; stopPos = moreLength+everageLength - 1; } evaluate(p, 0, variableNum - 1, w, s, startPos, stopPos, wLength); evaluate(q, 0, variableNum - 1, w, r, startPos, stopPos, wLength); for(i = startPos; i <= stopPos ; i ++) s[i] = s[i]*r[i]/(wLength*1.0); if (rank > 0) { MPI_Send((s+startPos), everageLength, MPI_DOUBLE_COMPLEX, 0, S_TAG, MPI_COMM_WORLD); MPI_Recv(s,wLength, MPI_DOUBLE_COMPLEX,0, S_ TAG2,MPI_ COMM_WORLD, &status); } else { for(i = 1; i < size; i ++) { MPI_Recv((s+moreLength+i* everageLength),everageLength, MPI_DOUBLE_COMPLEX, i,S_TAG, MPI_COMM_WORLD, &status); } for(i = 1; i < size; i ++) { MPI_Send(s,wLength, MPI_DOUBLE_COMPLEX,i, S_TAG2, MPI_COM M_WORLD); } } for(int i = 1; i < wLength/2; i ++) { temp = w[i]; w[i] = w[wLength - i]; w[wLength - i] = temp; } evaluate(s, 0, wLength - 1, w, r, startPos, stopPos, wLength); if (rank > 0) { MPI_Send((r+startPos), everageLength, MPI_DOUBLE_COMPLEX,0, R_TAG, MPI_COMM_WORLD); } else { for(i = 1; i < size; i ++) { MPI_Recv((r+moreLength+i* everageLength), everageLength, MPI_DOUBLE_COMPLEX, i, R_TAG, MPI_COMM_WORLD, &status); } puts("\nAfter FFT r(t)=p(t)q(t)"); printf("r(t) = "); print(r, wLength - 1); puts(""); printf("Use prossor size = %d\n",size); } MPI_Finalize(); }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有