#include <stdio.h>
#include <mpi.h>
int main(int argc, char** argv) {
int rank, size;
int send_data, recv_data;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (size < 2) {
printf("This example requires at least 2 processes.\n"); MPI_Finalize();
return 0;
}
if (rank == 0) {
send_data = 42;
MPI_Send(&send_data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
printf("Process %d sent data: %d\n", rank
, send_data
); } else if (rank == 1) {
MPI_Recv(&recv_data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("Process %d received data: %d\n", rank
, recv_data
); }
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtcGkuaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICAgaW50IHJhbmssIHNpemU7CiAgICBpbnQgc2VuZF9kYXRhLCByZWN2X2RhdGE7CgogICAgTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKICAgIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZyYW5rKTsKICAgIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsICZzaXplKTsKCiAgICBpZiAoc2l6ZSA8IDIpIHsKICAgICAgICBwcmludGYoIlRoaXMgZXhhbXBsZSByZXF1aXJlcyBhdCBsZWFzdCAyIHByb2Nlc3Nlcy5cbiIpOwogICAgICAgIE1QSV9GaW5hbGl6ZSgpOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGlmIChyYW5rID09IDApIHsKICAgICAgICBzZW5kX2RhdGEgPSA0MjsKICAgICAgICBNUElfU2VuZCgmc2VuZF9kYXRhLCAxLCBNUElfSU5ULCAxLCAwLCBNUElfQ09NTV9XT1JMRCk7CiAgICAgICAgcHJpbnRmKCJQcm9jZXNzICVkIHNlbnQgZGF0YTogJWRcbiIsIHJhbmssIHNlbmRfZGF0YSk7CiAgICB9IGVsc2UgaWYgKHJhbmsgPT0gMSkgewogICAgICAgIE1QSV9SZWN2KCZyZWN2X2RhdGEsIDEsIE1QSV9JTlQsIDAsIDAsIE1QSV9DT01NX1dPUkxELCBNUElfU1RBVFVTX0lHTk9SRSk7CiAgICAgICAgcHJpbnRmKCJQcm9jZXNzICVkIHJlY2VpdmVkIGRhdGE6ICVkXG4iLCByYW5rLCByZWN2X2RhdGEpOwogICAgfQoKICAgIE1QSV9GaW5hbGl6ZSgpOwogICAgcmV0dXJuIDA7Cn0K