-4

我想用 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

这应该与处理?

怎么办?

4

2 回答 2

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
于 2013-04-23T07:27:09.797 回答
1

阅读这个关于使用 MPI 发送和接收的示例。

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

让我==1 与我==0 一起发送到进程。

于 2013-04-23T11:16:33.423 回答