我从 MPI 开始。对于我正在做的作业,我需要通过将作业分配给不同的进程来生成我们指定的输入总和。当我得到整数结果时,我的程序运行良好。例如 20/20 = 1 或 20/10 = 2。但是当我得到小数点 20/9 =2.222 时,我会遇到麻烦并得到错误的结果。我不太确定如何解决这个问题。这是我的分散和产生总和的代码。
其中 readNumber = 读入的值(例如 20)存储 = 具有值的数组(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);
}