fork download
  1. #include <stdio.h>
  2. #include <mpi.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. int node, value, numProcs, size,i, p, tag, start_row, sum1, sum2;
  7.  
  8. int chunk_size;
  9.  
  10. int Myarray1[20],Myarray2[10];
  11. MPI_Status status;
  12.  
  13. MPI_Init(&argc,&argv);
  14.  
  15. MPI_Comm_rank(MPI_COMM_WORLD, &node);
  16. MPI_Comm_size(MPI_COMM_WORLD, &numProcs);
  17.  
  18. size = 12;
  19. sum1 = 0;
  20. sum2 = 0;
  21. chunk_size=3;
  22.  
  23. if(node == 0)
  24.  
  25. {
  26.  
  27. printf("The Original Array Myarray1 has: \n"); for(i=0; i<size; i++)
  28.  
  29. {
  30.  
  31. Myarray1[i] = (i*2);
  32. printf("Myarray1[%d] = %d\n",i,Myarray1[i]);
  33. }
  34. for(i=0; i<chunk_size; i++)
  35. Myarray2[i] = Myarray1[i];
  36. for(p=1; p<numProcs; p++)
  37.  
  38. {
  39.  
  40. start_row = p*chunk_size;
  41.  
  42. MPI_Send(&Myarray1 [start_row], chunk_size,MPI_INT, p, tag, MPI_COMM_WORLD);
  43.  
  44. }
  45. } /*end if*/
  46.  
  47. else
  48.  
  49. MPI_Recv(&Myarray2, chunk_size, MPI_INT,0, tag, MPI_COMM_WORLD, &status);
  50.  
  51. for(i=0; i<chunk_size; i++)
  52. sum1 = sum1+ Myarray2[i];
  53.  
  54. MPI_Reduce(&sum1, &sum2, 1, MPI_INT, MPI_SUM, 0,MPI_COMM_WORLD);
  55. printf("I am node: %d My Sum = %d\n",node, sum1);
  56.  
  57. if(node == 0)
  58.  
  59. printf("My Rank is: %d The Total = %d\n",node,sum2);
  60.  
  61. MPI_Finalize();
  62. return 0;
  63.  
  64.  
  65. }
Success #stdin #stdout #stderr 0.26s 39008KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: unexpected symbol in "int main"
Execution halted