#include <iostream>
#include <mpi.h>
#define MAX 20
int nprocs = 4;
int myrank;
double a[MAX], b[MAX], c[MAX];
MPI_Status status;
//
//init MPI
int main(int argc, char* argv[])
{
MPI_Init(&argc, &argv);
MPI_Status status;
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
int value = myrank + 10;
int sum = 0;
MPI_Recv(&sum, 1, MPI_INT, (myrank - 1 + nprocs) / nprocs, 10,
MPI_COMM_WORLD, &status);
sum += value;
MPI_Send(&sum, 1, MPI_INT, (myrank + 1) % nprocs, 10, MPI_COMM_WORLD);
if (myrank == 0)
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bXBpLmg+CiNkZWZpbmUgTUFYIDIwCmludCBucHJvY3MgPSA0OwppbnQgbXlyYW5rOwpkb3VibGUgYVtNQVhdLCBiW01BWF0sIGNbTUFYXTsKTVBJX1N0YXR1cyBzdGF0dXM7Ci8vCi8vaW5pdCBNUEkKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewpNUElfSW5pdCgmYXJnYywgJmFyZ3YpOwpNUElfU3RhdHVzIHN0YXR1czsKTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJm5wcm9jcyk7Ck1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZteXJhbmspOwppbnQgdmFsdWUgPSBteXJhbmsgKyAxMDsKaW50IHN1bSA9IDA7Ck1QSV9SZWN2KCZzdW0sIDEsIE1QSV9JTlQsIChteXJhbmsgLSAxICsgbnByb2NzKSAvIG5wcm9jcywgMTAsCk1QSV9DT01NX1dPUkxELCAmc3RhdHVzKTsKc3VtICs9IHZhbHVlOwpNUElfU2VuZCgmc3VtLCAxLCBNUElfSU5ULCAobXlyYW5rICsgMSkgJSBucHJvY3MsIDEwLCBNUElfQ09NTV9XT1JMRCk7CmlmIChteXJhbmsgPT0gMCkKcHJpbnRmKCIlZCIsIHN1bSk7Ck1QSV9GaW5hbGl6ZSgpOwpyZXR1cm4gMDsKfQo=