From: Martin Quinson Date: Tue, 11 Apr 2017 20:31:36 +0000 (+0200) Subject: simplify SMPI process creation a tiny bit X-Git-Tag: v3.16~370^2~12 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/65d226053e9899ca078e460632ce7aed82bdfb32 simplify SMPI process creation a tiny bit --- diff --git a/src/smpi/smpi_global.cpp b/src/smpi/smpi_global.cpp index 0acc0d4d59..9ce3361fcb 100644 --- a/src/smpi/smpi_global.cpp +++ b/src/smpi/smpi_global.cpp @@ -177,9 +177,7 @@ int smpi_enabled() { void smpi_global_init() { - int i; MPI_Group group; - int smpirun=0; if (!MC_is_active()) { global_timer = xbt_os_timer_new(); @@ -276,24 +274,26 @@ void smpi_global_init() } } #endif + + int smpirun = 0; if (process_count == 0){ process_count = SIMIX_process_count(); smpirun=1; } smpi_universe_size = process_count; process_data = new simgrid::smpi::Process*[process_count]; - for (i = 0; i < process_count; i++) { - process_data[i] = new simgrid::smpi::Process(i); + for (int i = 0; i < process_count; i++) { + process_data[i] = new simgrid::smpi::Process(i); } //if the process was launched through smpirun script we generate a global mpi_comm_world //if not, we let MPI_COMM_NULL, and the comm world will be private to each mpi instance - if(smpirun){ + if (smpirun) { group = new simgrid::smpi::Group(process_count); MPI_COMM_WORLD = new simgrid::smpi::Comm(group, nullptr); MPI_Attr_put(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, reinterpret_cast(process_count)); msg_bar_t bar = MSG_barrier_init(process_count); - for (i = 0; i < process_count; i++) { + for (int i = 0; i < process_count; i++) { group->set_mapping(i, i); process_data[i]->set_finalization_barrier(bar); } diff --git a/src/smpi/smpi_process.cpp b/src/smpi/smpi_process.cpp index 142db9e56c..ec44789d38 100644 --- a/src/smpi/smpi_process.cpp +++ b/src/smpi/smpi_process.cpp @@ -40,6 +40,7 @@ Process::Process(int index) mailboxes_mutex_ = xbt_mutex_init(); timer_ = xbt_os_timer_new(); state_ = SMPI_UNINITIALIZED; + index_ = index; if (MC_is_active()) MC_ignore_heap(timer_, xbt_os_timer_size()); @@ -61,7 +62,7 @@ Process::Process(int index) #endif } -void Process::set_data(int index, int *argc, char ***argv) +void Process::set_data(int* argc, char*** argv) { char* instance_id = (*argv)[1]; @@ -69,7 +70,6 @@ void Process::set_data(int index, int *argc, char ***argv) msg_bar_t bar = smpi_deployment_finalization_barrier(instance_id); if (bar!=nullptr) // don't overwrite the default one finalization_barrier_ = bar; - index_ = index; instance_id_ = instance_id; static_cast(SIMIX_process_self()->data)->data = this; @@ -85,7 +85,7 @@ void Process::set_data(int index, int *argc, char ***argv) // set the process attached to the mailbox mailbox_small_->setReceiver(simgrid::s4u::Actor::self()); process_ = SIMIX_process_self(); - XBT_DEBUG("<%d> New process in the game: %p", index, SIMIX_process_self()); + XBT_DEBUG("<%d> New process in the game: %p", index_, SIMIX_process_self()); } void Process::destroy() @@ -297,7 +297,7 @@ void Process::init(int *argc, char ***argv){ } Process* process = smpi_process_remote(index); - process->set_data(index, argc, argv); + process->set_data(argc, argv); } xbt_assert(smpi_process(), "smpi_process() returned nullptr. You probably gave a nullptr parameter to MPI_Init. " diff --git a/src/smpi/smpi_process.hpp b/src/smpi/smpi_process.hpp index bad4bb232b..e87f741702 100644 --- a/src/smpi/smpi_process.hpp +++ b/src/smpi/smpi_process.hpp @@ -46,7 +46,7 @@ class Process { public: explicit Process(int index); void destroy(); - void set_data(int index, int *argc, char ***argv); + void set_data(int* argc, char*** argv); void finalize(); int finalized(); int initialized();