Hi,

i am trying to implement a program using (open) mpi that sends groups of numbers to each process which calculate the sum and return it to the master which in turn calculates to the total sum.

i am new to mpi and c programming.

can anyone tell me what is wrong in my code please.

thanks in advance.Code:#include <stdio.h> #include "mpi.h" main(int argc, char ** argv) { int my_rank; int source, dest; int tag=1234; int namelen; char msg[100]; char processor_name[MPI_MAX_PROCESSOR_NAME]; int startInt = 1; int endInt = 1000; int nb = (endInt-startInt)+1; int numbers[nbInt]; int test[nbInt]; int i, j, k, n, s; int part_sum; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &processes); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Get_processor_name(processor_name,&namelen); for(i=0, k=startInt; i<nb; i++, k++) { numbers[i] = k; } if(my_rank != 0) { MPI_Recv(&numbers[n], 100, MPI_INTEGER, source, tag, MPI_COMM_WORLD, &status); part_sum = 0; dest = 0; for(i=0; i<s; i++) { part_sum = part_sum + numbers[i]; } MPI_Send(&part_sum, 1, MPI_INTEGER, dest, tag, MPI_COMM_WORLD); } else { s = nb/processes; for(j=0, n=0; j<processes; j++, n=n+s) { MPI_Send(&numbers[n], s, MPI_INTEGER, j, tag, MPI_COMM_WORLD); } int total_sum = 0; for(i=0; i<processes; i++) { MPI_Recv(&part_sum, 100, MPI_INTEGER, i, tag, MPI_COMM_WORLD, &status); total_sum += part_sum; } printf("%i\n",total_sum); } MPI_Finalize(); return 0; }