int main(int argc, char **argv)
{
int rank, size;
char message[100];
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 MPI processes\n"); MPI_Abort(MPI_COMM_WORLD, 1);
}
if (rank == 0)
{
// Process 0 sends a message to Process 1
strcpy(message
, "Hello from process 0"); MPI_Send
(message
, strlen(message
) + 1, MPI_CHAR
, 1, 0, MPI_COMM_WORLD
); }
else if (rank == 1)
{
// Process 1 receives the message from Process 0
MPI_Recv(message, 100, MPI_CHAR, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("Received message on process 1: %s\n", message
); }
MPI_Finalize();
return 0;
}
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CiAgICBpbnQgcmFuaywgc2l6ZTsKICAgIGNoYXIgbWVzc2FnZVsxMDBdOwoKICAgIE1QSV9Jbml0KCZhcmdjLCAmYXJndik7CiAgICBNUElfQ29tbV9yYW5rKE1QSV9DT01NX1dPUkxELCAmcmFuayk7CiAgICBNUElfQ29tbV9zaXplKE1QSV9DT01NX1dPUkxELCAmc2l6ZSk7CgogICAgaWYgKHNpemUgPCAyKQogICAgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGF0IGxlYXN0IDIgTVBJIHByb2Nlc3Nlc1xuIik7CiAgICAgICAgTVBJX0Fib3J0KE1QSV9DT01NX1dPUkxELCAxKTsKICAgIH0KCiAgICBpZiAocmFuayA9PSAwKQogICAgewogICAgICAgIC8vIFByb2Nlc3MgMCBzZW5kcyBhIG1lc3NhZ2UgdG8gUHJvY2VzcyAxCiAgICAgICAgc3RyY3B5KG1lc3NhZ2UsICJIZWxsbyBmcm9tIHByb2Nlc3MgMCIpOwogICAgICAgIE1QSV9TZW5kKG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSArIDEsIE1QSV9DSEFSLCAxLCAwLCBNUElfQ09NTV9XT1JMRCk7CiAgICB9CiAgICBlbHNlIGlmIChyYW5rID09IDEpCiAgICB7CiAgICAgICAgLy8gUHJvY2VzcyAxIHJlY2VpdmVzIHRoZSBtZXNzYWdlIGZyb20gUHJvY2VzcyAwCiAgICAgICAgTVBJX1JlY3YobWVzc2FnZSwgMTAwLCBNUElfQ0hBUiwgMCwgMCwgTVBJX0NPTU1fV09STEQsIE1QSV9TVEFUVVNfSUdOT1JFKTsKICAgICAgICBwcmludGYoIlJlY2VpdmVkIG1lc3NhZ2Ugb24gcHJvY2VzcyAxOiAlc1xuIiwgbWVzc2FnZSk7CiAgICB9CgogICAgTVBJX0ZpbmFsaXplKCk7CiAgICByZXR1cm4gMDsKfQo=