如何解决在MPI中使用MPI_BCAST和MPI_Reduce求和
我正在从名为number.txt的txt文件中将数字读取到数组num [64]中。进程0应该读取txt文件并向所有进程广播num []。然后,我必须使用reduce操作来计算所有部分和的总和,进程0应该最终打印出总和。我无法使用进程0打印最终值(在变量“总计”中)。我在末尾使用了if循环,但没有任何输出。局部和正确打印且正确。如何使用流程0打印总计?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
int main(int argc,char** argv){
int size,rank,i,j,count=0;
int sum=0,total=0;
int num[64];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank==0)
{
//Read File:
FILE *fp;
fp = fopen("number.txt","r");
if(fp == NULL)
{
perror("Error opening file");
return(-1);
}
while (!feof (fp))
{
fscanf (fp,"%d",&i);
num[count]=i;
count+=1;
}
fclose (fp);
}
MPI_Bcast(num,64,MPI_INT,MPI_COMM_WORLD);
for(i=(rank*16);i<((rank*16)+16);i++)
{
sum+=num[i];
}
printf("sum_%d: %d\n",sum);
MPI_Reduce(&sum,&total,4,MPI_SUM,MPI_COMM_WORLD);
if(rank==0)
{
printf("final total: %d\n",total);
}
MPI_Finalize();
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。