#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "mpi.h"
#define ARRAY_SIZE 1000
int main(int argc,char* argv[])
{
int rank,size;
int i,sum=0,data[ARRAY_SIZE];
int local_sum = 0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
printf("Generating random nos\n"); for(i=0;i<ARRAY_SIZE;i++)
{
}
MPI_Scatter(data,ARRAY_SIZE/size,MPI_INT,data,ARRAY_SIZE/size,MPI_INT,0,MPI_COMM_WORLD);
for(i=0;i<ARRAY_SIZE/size;i++)
{
local_sum += data[i];
}
MPI_Reduce(&local_sum,&sum,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
if(rank == 0)
{
printf("The sum is : %d",sum
); }
MPI_Finalize();
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgojaW5jbHVkZSAibXBpLmgiCiNkZWZpbmUgQVJSQVlfU0laRSAxMDAwCmludCBtYWluKGludCBhcmdjLGNoYXIqIGFyZ3ZbXSkKewogICAgaW50IHJhbmssc2l6ZTsKICAgIGludCBpLHN1bT0wLGRhdGFbQVJSQVlfU0laRV07CiAgICBpbnQgbG9jYWxfc3VtID0gMDsKICAgIE1QSV9Jbml0KCZhcmdjLCZhcmd2KTsKICAgIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsJnJhbmspOwogICAgTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwmc2l6ZSk7CgogICAgc3JhbmQocmFuaysxKTsKCiAgICAgICAgcHJpbnRmKCJHZW5lcmF0aW5nIHJhbmRvbSBub3NcbiIpOwogICAgICAgIGZvcihpPTA7aTxBUlJBWV9TSVpFO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGRhdGFbaV09cmFuZCgpJTEwMDsKICAgICAgICB9CiAgICAKICAgIE1QSV9TY2F0dGVyKGRhdGEsQVJSQVlfU0laRS9zaXplLE1QSV9JTlQsZGF0YSxBUlJBWV9TSVpFL3NpemUsTVBJX0lOVCwwLE1QSV9DT01NX1dPUkxEKTsKICAgIGZvcihpPTA7aTxBUlJBWV9TSVpFL3NpemU7aSsrKQogICAgewogICAgICAgIGxvY2FsX3N1bSArPSBkYXRhW2ldOwogICAgfQoKICAgIE1QSV9SZWR1Y2UoJmxvY2FsX3N1bSwmc3VtLDEsTVBJX0lOVCxNUElfU1VNLDAsTVBJX0NPTU1fV09STEQpOwogICAgaWYocmFuayA9PSAwKQogICAgewogICAgICAgIHByaW50ZigiVGhlIHN1bSBpcyA6ICVkIixzdW0pOwogICAgfQogICAgTVBJX0ZpbmFsaXplKCk7CiAgICByZXR1cm4gMDsKfQ==