私はMPIで始めています。私がやっている宿題のために、ジョブを別のプロセスに割り当てることによって指定した入力の合計を生成する必要があります。整数の結果が得られると、私のプログラムは正常に動作します。例: 20/20 = 1 または 20/10 = 2。ただし、小数点が 20/9 =2.222 になると、問題が発生し、間違った結果が得られます。これを回避する方法がよくわかりません。これが、散乱して合計を生成するための私のコードです。
readNumber = 読み込まれた値 (例: 20) storage = 値を持つ配列 (1,2,3,4....20)
/*Scatter*/
MPI_Scatter(storage, readNumber/size, MPI_INT,
recStorage, readNumber/size, MPI_INT, 0, MPI_COMM_WORLD);
total=0;
printf("%d \n",readNumber/size);
for(i=0;i<readNumber/size;i++){
total=total+recStorage[i];
}
printf("rank= %d total= %d \n ",rank,total);
/*Reduce*/
MPI_Reduce( &total, >otal, send_count, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if(rank == 0){
printf("total = %d \n ",gtotal);
}