#include <stdio.h>
#include <mpi.h>
int main(int argc, char* argv[]) {
MPI_Init(&argc, &argv);
int size, my_rank;
MPI_Comm_size(MPI_COMM_WORLD, &size); // Get the total number of processes
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); // Get the rank of the current process
int my_values[5]; // Array to hold values for each process
for (int i = 0; i < 5; i++) {
my_values[i] = (my_rank + 1* 100 ; // Initialize array with unique values based on rank
}
// Print the values before MPI_Alltoall
printf("Process %d, my_values: %d, %d, %d, %d, %d.\n", my_rank, my_values[0], my_values[1], my_values[2], my_values[3], my_values[4]);
int buffer_recv[5]; // Array to receive data from all other processes
// Perform the MPI_Alltoall operation
MPI_Alltoall(my_values, 1, MPI_INT, buffer_recv, 1, MPI_INT, MPI_COMM_WORLD);
// Print the values received by each process
printf("Process %d, received values: %d, %d, %d, %d, %d.\n", my_rank, buffer_recv[0], buffer_recv[1], buffer_recv[2], buffer_recv[3], buffer_recv[4]);
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtcGkuaD4KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKIGludCBzaXplLCBteV9yYW5rOwogTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnNpemUpOyAvLyBHZXQgdGhlIHRvdGFsIG51bWJlciBvZiBwcm9jZXNzZXMKIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZteV9yYW5rKTsgLy8gR2V0IHRoZSByYW5rIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MKIGludCBteV92YWx1ZXNbNV07IC8vIEFycmF5IHRvIGhvbGQgdmFsdWVzIGZvciBlYWNoIHByb2Nlc3MKIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiBteV92YWx1ZXNbaV0gPSAobXlfcmFuayArIDEqIDEwMCA7IC8vIEluaXRpYWxpemUgYXJyYXkgd2l0aCB1bmlxdWUgdmFsdWVzIGJhc2VkIG9uIHJhbmsKIH0KIC8vIFByaW50IHRoZSB2YWx1ZXMgYmVmb3JlIE1QSV9BbGx0b2FsbAogcHJpbnRmKCJQcm9jZXNzICVkLCBteV92YWx1ZXM6ICVkLCAlZCwgJWQsICVkLCAlZC5cbiIsCiBteV9yYW5rLCBteV92YWx1ZXNbMF0sIG15X3ZhbHVlc1sxXSwgbXlfdmFsdWVzWzJdLCBteV92YWx1ZXNbM10sIG15X3ZhbHVlc1s0XSk7CiBpbnQgYnVmZmVyX3JlY3ZbNV07IC8vIEFycmF5IHRvIHJlY2VpdmUgZGF0YSBmcm9tIGFsbCBvdGhlciBwcm9jZXNzZXMKIC8vIFBlcmZvcm0gdGhlIE1QSV9BbGx0b2FsbCBvcGVyYXRpb24KIE1QSV9BbGx0b2FsbChteV92YWx1ZXMsIDEsIE1QSV9JTlQsIGJ1ZmZlcl9yZWN2LCAxLCBNUElfSU5ULCBNUElfQ09NTV9XT1JMRCk7CiAvLyBQcmludCB0aGUgdmFsdWVzIHJlY2VpdmVkIGJ5IGVhY2ggcHJvY2VzcwogcHJpbnRmKCJQcm9jZXNzICVkLCByZWNlaXZlZCB2YWx1ZXM6ICVkLCAlZCwgJWQsICVkLCAlZC5cbiIsCiBteV9yYW5rLCBidWZmZXJfcmVjdlswXSwgYnVmZmVyX3JlY3ZbMV0sIGJ1ZmZlcl9yZWN2WzJdLCBidWZmZXJfcmVjdlszXSwgYnVmZmVyX3JlY3ZbNF0pOwogTVBJX0ZpbmFsaXplKCk7CiByZXR1cm4gMDsKfQoK