Go to the documentation of this file.
40 assert(ipm == 1 || ipm == -1);
48 int retv = MPI_Send_init(buf,
sizeof(
element_type) * count, MPI_BYTE, dest, tag, Communicator_impl::world(), &
m_request);
67 assert(ipm == 1 || ipm == -1);
75 int retv = MPI_Recv_init(buf,
sizeof(
element_type) * count, MPI_BYTE, src, tag, Communicator_impl::world(), &
m_request);
114 : m_array(count), m_status(count), m_nreq(0)
126 return MPI_ERR_BUFFER;
static int m_ndim
number of dimensions.
static int * m_ipe_dn
rank of downward neighbour in directions.
int wait()
collective wait
unsigned int m_nreq
number of channels to hold.
MPI_Status m_status
handler to MPI status information
MPI_Request m_request
handler to MPI persistent communication
int append()
implementation of adding the channel (template independent)
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 send_init(int count, int idir, int ipm, void *buf)
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.
int start()
start asynchronous communication
static constexpr int max_dimension
virtual ~Channel_communicator()
destructor
static int * m_ipe_up
rank of upward neighbour in directions.