#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#define ARRAY_SIZE 1000
int main(int argc, char **argv) {
int rank, size;
int local_sum = 0;
int global_sum = 0;
int i;
int *numbers
= (int*)malloc(ARRAY_SIZE
* sizeof(int));
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
// Generate random numbers
for (i = 0; i < ARRAY_SIZE; i++) {
numbers
[i
] = rand() % 100; }
// Calculate local sum
for (i = 0; i < ARRAY_SIZE; i++) {
local_sum += numbers[i];
}
// Reduce local sums to get global sum
MPI_Reduce(&local_sum, &global_sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("Total sum: %d\n", global_sum
); }
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1waS5oPgoKI2RlZmluZSBBUlJBWV9TSVpFIDEwMDAKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgaW50IHJhbmssIHNpemU7CiAgICBpbnQgbG9jYWxfc3VtID0gMDsKICAgIGludCBnbG9iYWxfc3VtID0gMDsKICAgIGludCBpOwogICAgaW50ICpudW1iZXJzID0gKGludCopbWFsbG9jKEFSUkFZX1NJWkUgKiBzaXplb2YoaW50KSk7CgogICAgTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKICAgIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZyYW5rKTsKICAgIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsICZzaXplKTsKCiAgICAvLyBHZW5lcmF0ZSByYW5kb20gbnVtYmVycwogICAgc3JhbmQocmFuayk7CiAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRTsgaSsrKSB7CiAgICAgICAgbnVtYmVyc1tpXSA9IHJhbmQoKSAlIDEwMDsKICAgIH0KCiAgICAvLyBDYWxjdWxhdGUgbG9jYWwgc3VtCiAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRTsgaSsrKSB7CiAgICAgICAgbG9jYWxfc3VtICs9IG51bWJlcnNbaV07CiAgICB9CgogICAgLy8gUmVkdWNlIGxvY2FsIHN1bXMgdG8gZ2V0IGdsb2JhbCBzdW0KICAgIE1QSV9SZWR1Y2UoJmxvY2FsX3N1bSwgJmdsb2JhbF9zdW0sIDEsIE1QSV9JTlQsIE1QSV9TVU0sIDAsIE1QSV9DT01NX1dPUkxEKTsKCiAgICBpZiAocmFuayA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCJUb3RhbCBzdW06ICVkXG4iLCBnbG9iYWxfc3VtKTsKICAgIH0KCiAgICBNUElfRmluYWxpemUoKTsKCiAgICBmcmVlKG51bWJlcnMpOwogICAgcmV0dXJuIDA7Cn0K