fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int main() {
  5. long long N = 10000000;
  6.  
  7. // Simulate running with 4 virtual MPI ranks
  8. int simulated_size = 4;
  9. long long total_sum = 0;
  10.  
  11. std::cout << "--- Simulating MPI Cluster with " << simulated_size << " Ranks ---" << std::endl;
  12.  
  13. for (int rank = 0; rank < simulated_size; rank++) {
  14. // Your exact distribution formulas
  15. long long start = rank * N / simulated_size + 1;
  16. long long end = (rank + 1) * N / simulated_size;
  17. long long local_sum = 0;
  18.  
  19. // Each simulated rank does its chunk
  20. for (long long i = start; i <= end; i++) {
  21. local_sum += i;
  22. }
  23.  
  24. std::cout << "Simulated Process " << rank
  25. << ": start = " << start
  26. << ", end = " << end
  27. << ", local sum = " << local_sum
  28. << std::endl;
  29.  
  30. // Simulating the MPI_Reduce behavior (global accumulation)
  31. total_sum += local_sum;
  32. }
  33.  
  34. std::cout << "\n[Rank 0 Emulated Output]:" << std::endl;
  35. std::cout << "Final sum = " << total_sum << std::endl;
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
--- Simulating MPI Cluster with 4 Ranks ---
Simulated Process 0: start = 1, end = 2500000, local sum = 3125001250000
Simulated Process 1: start = 2500001, end = 5000000, local sum = 9375001250000
Simulated Process 2: start = 5000001, end = 7500000, local sum = 15625001250000
Simulated Process 3: start = 7500001, end = 10000000, local sum = 21875001250000

[Rank 0 Emulated Output]:
Final sum = 50000005000000