写MPI程序:在一个包含两个进程的数组中求和

时间:2013-04-23 06:52:23

标签: c++ c mpi

我想用mpi.h编写一个程序这个程序可以对数组中的数字求和

例如我有一个数组a [10]这个数字1 2 3 4 5 6 7 8 9 10我希望sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

这应该用于处理吗?

怎么办?

2 个答案:

答案 0 :(得分:3)

MPI_init(&argc,&argv);


int size;
int myrank;
int sum=0;
int chunksize =10/2; //This is arraysize divided by total number of processes
MPI_Comm_rank(MPI_Comm_world,&myrank);
MPI_Comm_size(MPI_Comm_world,&size)


int lower=myrank*chunksize;
int upper=lower+chunksize;
for(int i=lower;i<upper;i++)
{
sum=sum+a[lower];

}
if(myrank==0)
{
MPI_Send(....,sum,1) // see the exact syntax of this routine.I am doing is process 0 is sending its sum to process 1
}
else
{
MPI_recv(....,recvsum,0,..)

sum=sum+recvsum;
printf("The sum is %d",sum);
}


set the np parameter to 2 while compiling

答案 1 :(得分:1)

阅读使用MPI发送和接收的this示例。

int wpp = n/np;
for(i=wpp * me; i < wpp * (me+1); ++i){
   partialSum += a[i];
} 

让我== 1发送给我处理== 0。