#ifndef EP_INTERCOMM_HPP_INCLUDED #define EP_INTERCOMM_HPP_INCLUDED typedef std::pair< int, int > SIZE_RANK_INFO; // < rank, size> typedef std::vector< std::pair > RANK_MAP; // at(ep_rank) = typedef std::map > EP_RANK_MAP; // key(ep_rank) = typedef std::map > > INTERCOMM_RANK_MAP; namespace ep_lib { class ep_comm; class ep_intercomm { public: void *mpi_inter_comm; INTERCOMM_RANK_MAP *intercomm_rank_map; // quadruple : ep_rank_in_local_comm, ep_rank_loc_in_newcomm, mpi_rank_in_new_comm, comm_label // of remote_comm EP_RANK_MAP *local_rank_map; // = ep_rank_map of local_comm RANK_MAP *inter_rank_map; RANK_MAP *loc_rank_map; RANK_MAP *remote_rank_map; SIZE_RANK_INFO size_rank_info[3]; // size_rank_info of newcomm int intercomm_tag; // newcomm_ep_rank_loc of ep with ep_rank_loc==0 // used in comm_dup_intercomm }; } #endif // EP_INTERCOMM_HPP_INCLUDED