X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f807f3ecd43bd280674b57f277d3af275fbfbaa5..4f73307dec9bb2568a4fc8df9fd8ea5c988a2b2a:/src/smpi/bindings/smpi_pmpi.cpp diff --git a/src/smpi/bindings/smpi_pmpi.cpp b/src/smpi/bindings/smpi_pmpi.cpp index 744b0a37a9..ffe62aadef 100644 --- a/src/smpi/bindings/smpi_pmpi.cpp +++ b/src/smpi/bindings/smpi_pmpi.cpp @@ -11,6 +11,7 @@ #include "smpi_comm.hpp" #include "smpi_datatype_derived.hpp" #include "smpi_status.hpp" +#include "smpi_coll.hpp" #include "src/kernel/actor/ActorImpl.hpp" #include "src/smpi/include/smpi_actor.hpp" @@ -51,8 +52,7 @@ int PMPI_Init(int*, char***) } simgrid::smpi::ActorExt::init(); - int rank_traced = simgrid::s4u::this_actor::get_pid(); - TRACE_smpi_init(rank_traced, __func__); + TRACE_smpi_init(simgrid::s4u::this_actor::get_pid(), __func__); smpi_bench_begin(); smpi_process()->mark_as_initialized(); @@ -64,9 +64,12 @@ int PMPI_Init(int*, char***) int PMPI_Finalize() { smpi_bench_end(); - int rank_traced = simgrid::s4u::this_actor::get_pid(); + aid_t rank_traced = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::NoOpTIData("finalize")); + if(simgrid::config::get_value("smpi/finalization-barrier")) + simgrid::smpi::colls::barrier(MPI_COMM_WORLD); + smpi_process()->finalize(); TRACE_smpi_comm_out(rank_traced); @@ -131,7 +134,7 @@ int PMPI_Abort(MPI_Comm comm, int /*errorcode*/) XBT_WARN("MPI_Abort was called, something went probably wrong in this simulation ! Killing all processes sharing the same MPI_COMM_WORLD"); smx_actor_t myself = SIMIX_process_self(); for (int i = 0; i < comm->size(); i++){ - smx_actor_t actor = simgrid::kernel::actor::ActorImpl::by_pid(comm->group()->actor_pid(i)); + smx_actor_t actor = simgrid::kernel::actor::ActorImpl::by_pid(comm->group()->actor(i)); if (actor != nullptr && actor != myself) simgrid::kernel::actor::simcall([actor] { actor->exit(); }); }