std::unordered_map<std::string, double> location2speedup;
-static std::map</*process_id*/ simgrid::s4u::ActorPtr, simgrid::smpi::ActorExt*> process_data;
+static std::map</*process_id*/ simgrid::s4u::Actor const*, simgrid::smpi::ActorExt*> process_data;
int process_count = 0;
static int smpi_exit_status = 0;
int smpi_universe_size = 0;
if (me == nullptr) // This happens sometimes (eg, when linking against NS3 because it pulls openMPI...)
return nullptr;
- return process_data.at(me);
+ return process_data.at(me.get());
}
simgrid::smpi::ActorExt* smpi_process_remote(simgrid::s4u::ActorPtr actor)
{
- return process_data.at(actor);
+ return process_data.at(actor.get());
}
MPI_Comm smpi_process_comm_self(){
return smpi_process()->comm_self();
}
+MPI_Info smpi_process_info_env(){
+ return smpi_process()->info_env();
+}
+
void smpi_process_init(int *argc, char ***argv){
simgrid::smpi::ActorExt::init();
}
simgrid::s4u::Actor::self()->get_impl()->set_user_data(data);
}
-
-int smpi_global_size()
-{
- char *value = getenv("SMPI_GLOBAL_SIZE");
- xbt_assert(value,"Please set env var SMPI_GLOBAL_SIZE to the expected number of processes.");
-
- return xbt_str_parse_int(value, "SMPI_GLOBAL_SIZE contains a non-numerical value: %s");
-}
-
void smpi_comm_set_copy_data_callback(void (*callback) (smx_activity_t, void*, size_t))
{
static void (*saved_callback)(smx_activity_t, void*, size_t);
XBT_DEBUG("Copying %zu bytes from %p to %p", buff_size, tmpbuff, comm->dst_buff_);
memcpy_private(comm->dst_buff_, tmpbuff, private_blocks);
- if (comm->detached) {
+ if (comm->detached_) {
// if this is a detached send, the source buffer was duplicated by SMPI
// sender to make the original buffer available to the application ASAP
xbt_free(buff);
if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
smpi_destroy_global_memory_segments();
- smpi_free_static();
if(simgrid::smpi::F2C::lookup() != nullptr)
simgrid::smpi::F2C::delete_lookup();
}
// Called either directly from the user code, or from the code called by smpirun
void SMPI_init(){
- simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::ActorPtr actor) {
- if (not actor->is_daemon()) {
- process_data.insert({actor, new simgrid::smpi::ActorExt(actor, nullptr)});
+ simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::Actor& actor) {
+ if (not actor.is_daemon()) {
+ process_data.insert({&actor, new simgrid::smpi::ActorExt(&actor, nullptr)});
}
});
- simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) {
- auto it = process_data.find(actor);
+ simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::Actor const& actor) {
+ auto it = process_data.find(&actor);
if (it != process_data.end()) {
delete it->second;
process_data.erase(it);