1

C で使用して、 npts要素を持つphiMPI_Reduce()というベクトルを計算しようとしています。そのために、長いベクトル ( longvec ) のチャンクを各プロセスに割り当て、これらのチャンクを個別に合計し、最後にプロセス 0 で各プロセッサの部分的な結果を合計して、phi の各要素の推定値を取得します。

私は非常にばかげた結果を得ています...以下のコードで私が犯している間違いを誰か教えてもらえますか?

double phie[npts];
phitemp = (double*) malloc (nprocs * sizeof(double));    

for (i = 0; i < npts; i++) {
   phitemp[rank] = 0; 
   for (x = rank * 10 + 1; x <= (rank + 1) * 10; x++) {                     
      phitemp[rank] = phitemp[rank] + longvec[x] * vector[i];                             }
   }
   MPI_Reduce(phitemp, & (((double *) phivec)[i]), 1,  MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); 
} 
4

0 に答える 0