int main(int argc, char *argv[]) { int max_cpus, cpu_id; // initialisation des ressources MPI::Init(argc, argv); int SIZE = 100; if (argc > 1) { SIZE = std::stoi(argv[1]); } // get number of programs running max_cpus = MPI::COMM_WORLD.Get_size(); // get program identifier cpu_id = MPI::COMM_WORLD.Get_rank(); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (cpu_id == 0) { MPIArray array(SIZE); array.iota(); array.scatter(cpu_id, max_cpus); array.gather(cpu_id, max_cpus); cout << "MASTER GATHER =" << array << endl; } else { MPIArray array; array.scatter(cpu_id, max_cpus); for (int i = 0; i < array.size(); ++i) { array[i] = array[i] * (cpu_id + 1); } array.gather(cpu_id, max_cpus); } MPI::Finalize(); return EXIT_SUCCESS; }