X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f50c785a8f726657dc3b4e32de522a7b3baca707..c4081e3a628c6ab697d7958f3f22bdf788c0c13c:/src/smpi/smpi_comm.hpp diff --git a/src/smpi/smpi_comm.hpp b/src/smpi/smpi_comm.hpp index b98092fc99..3e997763cf 100644 --- a/src/smpi/smpi_comm.hpp +++ b/src/smpi/smpi_comm.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2010-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -7,14 +6,10 @@ #ifndef SMPI_COMM_HPP_INCLUDED #define SMPI_COMM_HPP_INCLUDED -#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; +#include +#include "src/smpi/smpi_keyvals.hpp" +#include "src/smpi/smpi_group.hpp" +#include "src/smpi/smpi_topo.hpp" namespace simgrid{ namespace smpi{ @@ -23,7 +18,7 @@ class Comm : public F2C, public Keyval{ private: MPI_Group group_; - MPIR_Topo_type topoType_; + MPIR_Topo_type topoType_; MPI_Topology topo_; // to be replaced by an union int refcount_; MPI_Comm leaders_comm_;//inter-node communicator @@ -34,13 +29,14 @@ class Comm : public F2C, public Keyval{ 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 ? + std::list rma_wins_; // attached windows for synchronization. + public: static std::unordered_map keyvals_; static int keyval_id_; Comm() = default; Comm(MPI_Group group, MPI_Topology topo); - int dup(MPI_Comm* newcomm); MPI_Group group(); MPI_Topology topo(); @@ -70,6 +66,10 @@ class Comm : public F2C, public Keyval{ static int keyval_free(int* keyval); static void keyval_cleanup(); + void add_rma_win(MPI_Win win); + void remove_rma_win(MPI_Win win); + void finish_rma_calls(); + }; }