我想用 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
这应该与处理?
怎么办?
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
阅读这个关于使用 MPI 发送和接收的示例。
int wpp = n/np;
for(i=wpp * me; i < wpp * (me+1); ++i){
partialSum += a[i];
}
让我==1 与我==0 一起发送到进程。