#include <stdio.h>
#include <mpi.h>
int main(int argc, char** argv) {
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (size < 2) {
fprintf(stderr
, "This program requires at least 2 processes\n"); MPI_Finalize();
return 1;
}
if (rank == 0) {
// Process 0 sends a message to process 1
int message = 123;
MPI_Send(&message, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
printf("Process 0 sent message: %d\n", message
); } else if (rank == 1) {
// Process 1 receives the message from process 0
int received_message;
MPI_Recv(&received_message, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("Process 1 received message: %d\n", received_message
); }
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtcGkuaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICAgaW50IHJhbmssIHNpemU7CiAgICBNUElfSW5pdCgmYXJnYywgJmFyZ3YpOwogICAgTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJnJhbmspOwogICAgTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnNpemUpOwoKICAgIGlmIChzaXplIDwgMikgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGF0IGxlYXN0IDIgcHJvY2Vzc2VzXG4iKTsKICAgICAgICBNUElfRmluYWxpemUoKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAocmFuayA9PSAwKSB7CiAgICAgICAgLy8gUHJvY2VzcyAwIHNlbmRzIGEgbWVzc2FnZSB0byBwcm9jZXNzIDEKICAgICAgICBpbnQgbWVzc2FnZSA9IDEyMzsKICAgICAgICBNUElfU2VuZCgmbWVzc2FnZSwgMSwgTVBJX0lOVCwgMSwgMCwgTVBJX0NPTU1fV09STEQpOwogICAgICAgIHByaW50ZigiUHJvY2VzcyAwIHNlbnQgbWVzc2FnZTogJWRcbiIsIG1lc3NhZ2UpOwogICAgfSBlbHNlIGlmIChyYW5rID09IDEpIHsKICAgICAgICAvLyBQcm9jZXNzIDEgcmVjZWl2ZXMgdGhlIG1lc3NhZ2UgZnJvbSBwcm9jZXNzIDAKICAgICAgICBpbnQgcmVjZWl2ZWRfbWVzc2FnZTsKICAgICAgICBNUElfUmVjdigmcmVjZWl2ZWRfbWVzc2FnZSwgMSwgTVBJX0lOVCwgMCwgMCwgTVBJX0NPTU1fV09STEQsIE1QSV9TVEFUVVNfSUdOT1JFKTsKICAgICAgICBwcmludGYoIlByb2Nlc3MgMSByZWNlaXZlZCBtZXNzYWdlOiAlZFxuIiwgcmVjZWl2ZWRfbWVzc2FnZSk7CiAgICB9CgogICAgTVBJX0ZpbmFsaXplKCk7CiAgICByZXR1cm4gMDsKfQo=