我想用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
这应该用于处理吗?
怎么办?
答案 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。