#include <stdio.h>
#include "mpi.h"
int main(int argc,char *argv[])
{
int iproc;
int MyRank, Numprocs, Root = 0;
int value, sum = 0;
int Source, Source_tag;
int Destination, Destination_tag;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&Numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&MyRank);
if(MyRank == Root){
for(iproc = 1 ; iproc < Numprocs ; iproc++){
Source = iproc;
Source_tag = 0;
MPI_Recv(&value, 1, MPI_INT, Source, Source_tag,
MPI_COMM_WORLD, &status);
sum = sum + value;
}
printf("MyRank = %d, SUM = %d\n", MyRank
, sum
); }
else{
Destination = 0;
Destination_tag = 0;
MPI_Send(&MyRank, 1, MPI_INT, Destination, Destination_tag,
MPI_COMM_WORLD);
}
MPI_Finalize();
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlICJtcGkuaCIKaW50IG1haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQp7CiBpbnQgaXByb2M7CiBpbnQgTXlSYW5rLCBOdW1wcm9jcywgUm9vdCA9IDA7CiBpbnQgdmFsdWUsIHN1bSA9IDA7CiBpbnQgU291cmNlLCBTb3VyY2VfdGFnOwogaW50IERlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbl90YWc7CiBNUElfU3RhdHVzIHN0YXR1czsKIE1QSV9Jbml0KCZhcmdjLCZhcmd2KTsKIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsJk51bXByb2NzKTsKIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsJk15UmFuayk7CiBpZihNeVJhbmsgPT0gUm9vdCl7CiBmb3IoaXByb2MgPSAxIDsgaXByb2MgPCBOdW1wcm9jcyA7IGlwcm9jKyspewogU291cmNlID0gaXByb2M7CiBTb3VyY2VfdGFnID0gMDsKIE1QSV9SZWN2KCZ2YWx1ZSwgMSwgTVBJX0lOVCwgU291cmNlLCBTb3VyY2VfdGFnLAogTVBJX0NPTU1fV09STEQsICZzdGF0dXMpOwogc3VtID0gc3VtICsgdmFsdWU7CiB9CiBwcmludGYoIk15UmFuayA9ICVkLCBTVU0gPSAlZFxuIiwgTXlSYW5rLCBzdW0pOwogfQogZWxzZXsKRGVzdGluYXRpb24gPSAwOwpEZXN0aW5hdGlvbl90YWcgPSAwOwpNUElfU2VuZCgmTXlSYW5rLCAxLCBNUElfSU5ULCBEZXN0aW5hdGlvbiwgRGVzdGluYXRpb25fdGFnLAogTVBJX0NPTU1fV09STEQpOwogfQogTVBJX0ZpbmFsaXplKCk7Cn0=