#ifndef EP_TYPE_HPP_INCLUDED #define EP_TYPE_HPP_INCLUDED #include #include #include #include #include #include #include #include #include //#include #include #include #include #include #ifdef _Debug #define Debug(x) std::cout << x << std::endl #else #define Debug(x) #endif #define BUFFER_SIZE 10000 //#define NUM_THREADS 12 typedef std::pair< int, int > SIZE_RANK_INFO; // < rank, size> typedef std::vector< std::pair > RANK_MAP; // at(ep_rank) = typedef std::vector, std::pair > > INTERCOMM_RANK_MAP; typedef struct { int first; int second; int third; } Triple_int; namespace ep_lib { //#define EP_UNDEFINED -32766 class ep_communicator; class ep_intercomm; class OMPbarrier; typedef ep_communicator* EP_Comm; class MPI_Comm; class MPI_Status { public: void* ep_datatype; int ep_src; int ep_tag; void* mpi_status; }; class MPI_Message { public: void* mpi_message; int ep_src; int ep_tag; void* mpi_status; MPI_Message() {} MPI_Message(void* message); }; typedef std::list Message_list; class OMPbarrier { private: int nbThreads; //, MPI_Comm * > > tag_list; static std::map, MPI_Comm > fc_comm_map; // static std::map, MPI_Comm > *fc_comm_map_ptr; // #pragma omp threadprivate(fc_comm_map_ptr) // // EP_Comm } #endif // EP_TYPE_HPP_INCLUDED