Go to the documentation of this file.
19 #ifndef CHANNEL_H_INCLUDED
20 #define CHANNEL_H_INCLUDED
85 template<
typename ALLOCATOR>
135 template<
int ALIGNMENT>
162 int append(
const MPI_Request& r);
MPI_Request & get_request()
int wait()
collective wait
unsigned int m_nreq
number of channels to hold.
container_type m_buf
buffer
MPI_Status m_status
handler to MPI status information
MPI_Request m_request
handler to MPI persistent communication
ChannelSet class for a collection of channels.
int append(Channel_impl< T > &c)
MPI-realisation of communicator class implementation.
int append()
implementation of adding the channel (template independent)
static constexpr int tag_offset
int recv_init(int count, int idir, int ipm, void *buf)
ChannelSet(int nchannel=8)
constructor. default number of channels is 8 for upward and downward in 4 dimensions.
Channel_communicator()
constructor.
int idx(const int in, const int Nin, const int ist, const int leo, const int Nvol2, const int ex)
element_type * m_ptr
pointer to the buffer
int send_init(int count, int idir, int ipm, void *buf)
element_type * ptr() const
accessor to buffer; returns pointer to the first element.
int wait()
wait for completion
int start()
collective start
std::vector< MPI_Request > m_array
a collection of MPI request held in channels.
std::vector< MPI_Status > m_status
a collection of MPI status.
Channel class for asynchronous communication.
std::vector< element_type, allocator_t > container_type
int start()
start asynchronous communication
int send_init(int count, int idir, int ipm)
MPI_Request & get_request()
accessor to MPI_Request
element_type & operator[](unsigned int idx)
accessor to buffer
static constexpr int max_dimension
Channel_communicator::element_type element_type
Channel_communicator m_comm
template independent implementation
virtual ~Channel_communicator()
destructor
int recv_init(int count, int idir, int ipm)
constexpr int alignment_size()
element_type operator[](unsigned int idx) const
accessor to buffer