#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#define ARRAY_SIZE 1000
int main(int argc, char** argv) {
int rank, size;
int numbers[ARRAY_SIZE];
int local_min, global_min;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
// Each process generates random numbers
srand(rank
); // Seed with process rank for different random numbers for (int i = 0; i < ARRAY_SIZE; ++i) {
}
// Each process finds its local minimum
local_min = numbers[0];
for (int i = 1; i < ARRAY_SIZE; ++i) {
if (numbers[i] < local_min) {
local_min = numbers[i];
}
}
// Reduce local minimums to find the global minimum
MPI_Reduce(&local_min, &global_min, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD);
// Print the global minimum
if (rank == 0) {
printf("Global minimum: %d\n", global_min
); }
MPI_Finalize();
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtcGkuaD4KCiNkZWZpbmUgQVJSQVlfU0laRSAxMDAwCgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgIGludCByYW5rLCBzaXplOwogICAgaW50IG51bWJlcnNbQVJSQVlfU0laRV07CiAgICBpbnQgbG9jYWxfbWluLCBnbG9iYWxfbWluOwoKICAgIE1QSV9Jbml0KCZhcmdjLCAmYXJndik7CiAgICBNUElfQ29tbV9yYW5rKE1QSV9DT01NX1dPUkxELCAmcmFuayk7CiAgICBNUElfQ29tbV9zaXplKE1QSV9DT01NX1dPUkxELCAmc2l6ZSk7CgogICAgLy8gRWFjaCBwcm9jZXNzIGdlbmVyYXRlcyByYW5kb20gbnVtYmVycwogICAgc3JhbmQocmFuayk7IC8vIFNlZWQgd2l0aCBwcm9jZXNzIHJhbmsgZm9yIGRpZmZlcmVudCByYW5kb20gbnVtYmVycwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFOyArK2kpIHsKICAgICAgICBudW1iZXJzW2ldID0gcmFuZCgpOwogICAgfQoKICAgIC8vIEVhY2ggcHJvY2VzcyBmaW5kcyBpdHMgbG9jYWwgbWluaW11bQogICAgbG9jYWxfbWluID0gbnVtYmVyc1swXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgQVJSQVlfU0laRTsgKytpKSB7CiAgICAgICAgaWYgKG51bWJlcnNbaV0gPCBsb2NhbF9taW4pIHsKICAgICAgICAgICAgbG9jYWxfbWluID0gbnVtYmVyc1tpXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUmVkdWNlIGxvY2FsIG1pbmltdW1zIHRvIGZpbmQgdGhlIGdsb2JhbCBtaW5pbXVtCiAgICBNUElfUmVkdWNlKCZsb2NhbF9taW4sICZnbG9iYWxfbWluLCAxLCBNUElfSU5ULCBNUElfTUlOLCAwLCBNUElfQ09NTV9XT1JMRCk7CgogICAgLy8gUHJpbnQgdGhlIGdsb2JhbCBtaW5pbXVtCiAgICBpZiAocmFuayA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCJHbG9iYWwgbWluaW11bTogJWRcbiIsIGdsb2JhbF9taW4pOwogICAgfQoKICAgIE1QSV9GaW5hbGl6ZSgpOwogICAgcmV0dXJuIDA7Cn0KCg==