X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a900ac9d39fee1b3de240499c5326e5b8d4f44c2..c4000f89d4644c3d7ff6187a62a0930c4d53e683:/src/smpi/mpi/smpi_comm.cpp?ds=sidebyside diff --git a/src/smpi/mpi/smpi_comm.cpp b/src/smpi/mpi/smpi_comm.cpp index 1183cacffb..2a80d4cd06 100644 --- a/src/smpi/mpi/smpi_comm.cpp +++ b/src/smpi/mpi/smpi_comm.cpp @@ -12,7 +12,9 @@ #include "smpi_request.hpp" #include "smpi_status.hpp" #include "smpi_win.hpp" +#include "src/simix/smx_host_private.hpp" #include "src/simix/smx_private.hpp" + #include #include #include @@ -263,10 +265,8 @@ void Comm::cleanup_smp(){ Comm::unref(intra_comm_); if (leaders_comm_ != MPI_COMM_NULL) Comm::unref(leaders_comm_); - if (non_uniform_map_ != nullptr) - xbt_free(non_uniform_map_); - if (leaders_map_ != nullptr) - delete[] leaders_map_; + xbt_free(non_uniform_map_); + delete[] leaders_map_; } void Comm::unref(Comm* comm){ @@ -368,7 +368,7 @@ void Comm::init_smp(){ if(MPI_COMM_WORLD!=MPI_COMM_UNINITIALIZED && this!=MPI_COMM_WORLD){ //create leader_communicator for (i=0; i< leader_group_size;i++) - leaders_group->set_mapping(simgrid::s4u::Actor::byPid(leader_list[i]), i); + leaders_group->set_mapping(simgrid::s4u::Actor::by_pid(leader_list[i]), i); leader_comm = new Comm(leaders_group, nullptr); this->set_leaders_comm(leader_comm); this->set_intra_comm(comm_intra); @@ -376,7 +376,7 @@ void Comm::init_smp(){ // create intracommunicator }else{ for (i=0; i< leader_group_size;i++) - leaders_group->set_mapping(simgrid::s4u::Actor::byPid(leader_list[i]), i); + leaders_group->set_mapping(simgrid::s4u::Actor::by_pid(leader_list[i]), i); if(this->get_leaders_comm()==MPI_COMM_NULL){ leader_comm = new Comm(leaders_group, nullptr); @@ -489,6 +489,17 @@ void Comm::finish_rma_calls(){ } } +MPI_Comm Comm::split_type(int type, int key, MPI_Info info) +{ + if(type != MPI_COMM_TYPE_SHARED){ + return MPI_COMM_NULL; + } + this->init_smp(); + this->ref(); + this->get_intra_comm()->ref(); + return this->get_intra_comm(); +} + } }