#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"
}
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();
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<bool>("smpi/finalization-barrier"))
+ simgrid::smpi::colls::barrier(MPI_COMM_WORLD);
+
smpi_process()->finalize();
TRACE_smpi_comm_out(rank_traced);
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(); });
}