#include <iostream>
#include <vector>
int main( ) {
long long N = 10000000 ;
// Simulate running with 4 virtual MPI ranks
int simulated_size = 4 ;
long long total_sum = 0 ;
std:: cout << "--- Simulating MPI Cluster with " << simulated_size << " Ranks ---" << std:: endl ;
for ( int rank = 0 ; rank < simulated_size; rank++ ) {
// Your exact distribution formulas
long long start = rank * N / simulated_size + 1 ;
long long end = ( rank + 1 ) * N / simulated_size;
long long local_sum = 0 ;
// Each simulated rank does its chunk
for ( long long i = start; i <= end; i++ ) {
local_sum + = i;
}
std:: cout << "Simulated Process " << rank
<< ": start = " << start
<< ", end = " << end
<< ", local sum = " << local_sum
<< std:: endl ;
// Simulating the MPI_Reduce behavior (global accumulation)
total_sum + = local_sum;
}
std:: cout << "\n [Rank 0 Emulated Output]:" << std:: endl ;
std:: cout << "Final sum = " << total_sum << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgTiA9IDEwMDAwMDAwOwogICAgCiAgICAvLyBTaW11bGF0ZSBydW5uaW5nIHdpdGggNCB2aXJ0dWFsIE1QSSByYW5rcwogICAgaW50IHNpbXVsYXRlZF9zaXplID0gNDsgCiAgICBsb25nIGxvbmcgdG90YWxfc3VtID0gMDsKCiAgICBzdGQ6OmNvdXQgPDwgIi0tLSBTaW11bGF0aW5nIE1QSSBDbHVzdGVyIHdpdGggIiA8PCBzaW11bGF0ZWRfc2l6ZSA8PCAiIFJhbmtzIC0tLSIgPDwgc3RkOjplbmRsOwoKICAgIGZvciAoaW50IHJhbmsgPSAwOyByYW5rIDwgc2ltdWxhdGVkX3NpemU7IHJhbmsrKykgewogICAgICAgIC8vIFlvdXIgZXhhY3QgZGlzdHJpYnV0aW9uIGZvcm11bGFzCiAgICAgICAgbG9uZyBsb25nIHN0YXJ0ID0gcmFuayAqIE4gLyBzaW11bGF0ZWRfc2l6ZSArIDE7CiAgICAgICAgbG9uZyBsb25nIGVuZCA9IChyYW5rICsgMSkgKiBOIC8gc2ltdWxhdGVkX3NpemU7CiAgICAgICAgbG9uZyBsb25nIGxvY2FsX3N1bSA9IDA7CgogICAgICAgIC8vIEVhY2ggc2ltdWxhdGVkIHJhbmsgZG9lcyBpdHMgY2h1bmsKICAgICAgICBmb3IgKGxvbmcgbG9uZyBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHsKICAgICAgICAgICAgbG9jYWxfc3VtICs9IGk7CiAgICAgICAgfQoKICAgICAgICBzdGQ6OmNvdXQgPDwgIlNpbXVsYXRlZCBQcm9jZXNzICIgPDwgcmFuawogICAgICAgICAgICAgICAgICA8PCAiOiBzdGFydCA9ICIgPDwgc3RhcnQKICAgICAgICAgICAgICAgICAgPDwgIiwgZW5kID0gIiA8PCBlbmQKICAgICAgICAgICAgICAgICAgPDwgIiwgbG9jYWwgc3VtID0gIiA8PCBsb2NhbF9zdW0KICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwoKICAgICAgICAvLyBTaW11bGF0aW5nIHRoZSBNUElfUmVkdWNlIGJlaGF2aW9yIChnbG9iYWwgYWNjdW11bGF0aW9uKQogICAgICAgIHRvdGFsX3N1bSArPSBsb2NhbF9zdW07CiAgICB9CgogICAgc3RkOjpjb3V0IDw8ICJcbltSYW5rIDAgRW11bGF0ZWQgT3V0cHV0XToiIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiRmluYWwgc3VtID0gIiA8PCB0b3RhbF9zdW0gPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9
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