X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5eb856761d5f073b07eac25c05012cfa8075e1f1..93a0ed1772a486bea8a79537a8fec5e1c8cec6ec:/src/smpi/smpi_comm.hpp diff --git a/src/smpi/smpi_comm.hpp b/src/smpi/smpi_comm.hpp index 4c2ead02c7..c0b0c204ac 100644 --- a/src/smpi/smpi_comm.hpp +++ b/src/smpi/smpi_comm.hpp @@ -10,16 +10,10 @@ #include "private.h" -typedef struct s_smpi_mpi_comm_key_elem { - MPI_Comm_copy_attr_function* copy_fn; - MPI_Comm_delete_attr_function* delete_fn; -} s_smpi_mpi_comm_key_elem_t; -typedef struct s_smpi_mpi_comm_key_elem *smpi_comm_key_elem; - namespace simgrid{ namespace smpi{ -class Comm : public F2C{ +class Comm : public F2C, public Keyval{ private: MPI_Group group_; @@ -33,16 +27,13 @@ class Comm : public F2C{ int is_uniform_; int* non_uniform_map_; //set if smp nodes have a different number of processes allocated int is_blocked_;// are ranks allocated on the same smp node contiguous ? - xbt_dict_t attributes_; - static xbt_dict_t keyvals_; + public: + static std::unordered_map keyvals_; static int keyval_id_; - public: Comm() = default; Comm(MPI_Group group, MPI_Topology topo); - - int dup(MPI_Comm* newcomm); MPI_Group group(); MPI_Topology topo(); @@ -58,15 +49,11 @@ class Comm : public F2C{ int is_uniform(); int is_blocked(); MPI_Comm split(int color, int key); - void cleanup_attributes(); void cleanup_smp(); void ref(); static void unref(MPI_Comm comm); static void destroy(MPI_Comm comm); void init_smp(); - int attr_delete(int keyval); - int attr_get(int keyval, void* attr_value, int* flag); - int attr_put(int keyval, void* attr_value); int add_f(); static void free_f(int id);