06:38

Parallel Computing

/*
============================================================================
Name : lab.c
Author :
Version :
Copyright : Your copyright notice
Description : Array in elemanlarını toplayan C kodu
============================================================================
*/
#include
#include
#include "mpi/mpi.h"

int main(int argc, char* argv[]){
int my_rank; /* rank of process */
int p; /* number of processes */
int i;
int allsum =0;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
MPI_Comm_size(MPI_COMM_WORLD, &p);

int vector[10];
int arr[500];
int arrr[500];
int as = 500 / p;

if (my_rank == 0){
for (i = 0; i < 500; i++)
arr[i] = i;
}

MPI_Scatter(arr, as, MPI_INTEGER, arrr, as, MPI_INTEGER, 0, MPI_COMM_WORLD);


int sum = 0;

for (i = 0; i < as; i++)
sum += arrr[i];

printf("Myrank: %d, sum: %d\n", my_rank, sum);

MPI_Reduce(&sum, &allsum, 1, MPI_INTEGER, MPI_SUM, 0, MPI_COMM_WORLD);

//MPI_Gather(&sum, 1, MPI_INTEGER, vector, 1, MPI_INTEGER, 0, MPI_COMM_WORLD);



if (my_rank == 0)
{
printf("%d ", allsum);
}


MPI_Finalize();


return 0;
}