fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <mpi.h>
  4.  
  5. #define ARRAY_SIZE 1000
  6.  
  7. int main(int argc, char *argv[]) {
  8. int rank, size;
  9. int partial_sum = 0;
  10. int global_sum = 0;
  11. int numbers[ARRAY_SIZE];
  12.  
  13. MPI_Init(&argc, &argv);
  14. MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  15. MPI_Comm_size(MPI_COMM_WORLD, &size);
  16.  
  17. // Generate some numbers to sum
  18. if (rank == 0) {
  19. for (int i = 0; i < ARRAY_SIZE; i++) {
  20. numbers[i] = i + 1;
  21. }
  22. }
  23.  
  24. // Scatter the numbers to all processes
  25. MPI_Scatter(numbers, ARRAY_SIZE/size, MPI_INT, numbers, ARRAY_SIZE/size, MPI_INT, 0, MPI_COMM_WORLD);
  26.  
  27. // Each process calculates its partial sum
  28. for (int i = 0; i < ARRAY_SIZE/size; i++) {
  29. partial_sum += numbers[i];
  30. }
  31.  
  32. // Sum up the partial sums from each process
  33. MPI_Reduce(&partial_sum, &global_sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
  34.  
  35. // Print the global sum
  36. if (rank == 0) {
  37. printf("Global sum: %d\n", global_sum);
  38. }
  39.  
  40. MPI_Finalize();
  41. return 0;
  42. }
  43.  
Success #stdin #stdout #stderr 0.27s 40748KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: unexpected symbol in "int main"
Execution halted