Bridge++
Version 1.4.4
|
Channel class for asynchronous communication. More...
#include <channel.h>
Classes | |
struct | bgnet_IDs |
Public Types | |
enum | channel_mode { SEND, RECV } |
typedef char | element_type |
typedef std::vector< element_type > | container_type |
typedef char | element_type |
data transfer is byte-wise. More... | |
typedef std::valarray < element_type > | container_type |
typedef char | element_type |
data transfer is byte-wise. More... | |
Public Member Functions | |
Channel () | |
Channel (const int count) | |
Channel (const int count, const int tag, const channel_mode mode) | |
virtual | ~Channel () |
int | start () |
int | wait () |
void | set_thread (int, const std::vector< int > &, const std::vector< int > &, const std::vector< int > &) |
int | start_thread (int) |
int | wait_thread (int) |
element_type & | operator[] (unsigned int idx) |
const element_type * | ptr () |
const element_type * | ptr (int offset) |
Channel () | |
constructor. More... | |
Channel (const int count) | |
constructor with buffer size (count bytes) More... | |
virtual | ~Channel () |
destructor More... | |
int | start () |
start asynchronous communication More... | |
int | wait () |
wait for completion More... | |
element_type & | operator[] (unsigned int idx) |
accessor to buffer More... | |
element_type | operator[] (unsigned int idx) const |
accessor to buffer More... | |
const element_type * | ptr () |
accessor to buffer; returns pointer to the first element. More... | |
Channel () | |
constructor. More... | |
Channel (const int count) | |
constructor with buffer size (count bytes) More... | |
Channel (void *buf) | |
constructor with buffer More... | |
virtual | ~Channel () |
destructor More... | |
int | start () |
start asynchronous communication More... | |
int | wait () |
wait for completion More... | |
element_type & | operator[] (unsigned int idx) |
accessor to buffer More... | |
element_type | operator[] (unsigned int idx) const |
accessor to buffer More... | |
const element_type * | ptr () |
accessor to buffer; returns pointer to the first element. More... | |
Static Public Member Functions | |
static void | increment_channel_set_id () |
To be called before defining new set of channels for a operator. More... | |
Private Attributes | |
int | m_count |
int | m_ibuf |
bgnet_IDs | m_bgnet_ids |
std::vector< bgnet_IDs > | m_bgnet_ids_thread |
container_type | m_buf |
buffer More... | |
MPI_Request | m_request |
handler to MPI persistent communication More... | |
MPI_Status | m_status |
handler to MPI status information More... | |
element_type * | m_buf |
buffer More... | |
bool | m_my_buf |
whether buffer is owned by this instance. More... | |
Static Private Attributes | |
static std::vector < container_type > | m_buf |
static int | m_set_id = 0 |
identifies set of channels. More... | |
Friends | |
class | Communicator_impl |
class | ChannelSet |
class | Communicator |
Channel class for asynchronous communication.
Channel class defines communication channel between sender and receiver for asynchronous data transfer. It actually provides a half-channel of sender part or receiver part. This class wraps MPI persistent communication, as well as send/receive buffer.
An instance of channel class is generated through Communicator send_int() and recv_init() methods. To access the buffer, operator[] is provided as if it is an ordinary container or array.
start() method to start async data transfer, and wait() method to wait for the completion of operation. the channel instance will be re-used repeatedly for the same communication channel once it is created.
Channel class for single process. This implementation acts similarly to the Channel class with MPI, while practically copys data through the buffer.
Channel class defines communication channel between sender and receiver for asynchronous data transfer. It actually provides a half-channel of sender part or receiver part. Original version of Channel class wraps MPI persistent communication, as well as send/receive buffer.
An instance of channel class is generated through Communicator send_int() and recv_init() methods. To access the buffer, operator[] is provided as if it is an ordinary container or array.
In single process version, start() method copys data to buffer, and wait() method does nothing. [01 Sep 2017 H.Matsufuru]
typedef std::vector<element_type> Channel::container_type |
typedef std::valarray<element_type> Channel::container_type |
typedef char Channel::element_type |
typedef char Channel::element_type |
typedef char Channel::element_type |
Channel::Channel | ( | ) |
Definition at line 95 of file channel.cpp.
Channel::Channel | ( | const int | count | ) |
Definition at line 101 of file channel.cpp.
Channel::Channel | ( | const int | count, |
const int | tag, | ||
const channel_mode | mode | ||
) |
Definition at line 135 of file channel.cpp.
|
virtual |
Definition at line 187 of file channel.cpp.
Channel::Channel | ( | ) |
constructor.
Channel::Channel | ( | const int | count | ) |
constructor with buffer size (count bytes)
|
virtual |
destructor
Channel::Channel | ( | ) |
constructor.
Channel::Channel | ( | const int | count | ) |
constructor with buffer size (count bytes)
Channel::Channel | ( | void * | buf | ) |
constructor with buffer
Definition at line 92 of file channel.cpp.
|
virtual |
destructor
|
static |
To be called before defining new set of channels for a operator.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void Channel::set_thread | ( | int | Ntask, |
const std::vector< int > & | destid, | ||
const std::vector< int > & | offset, | ||
const std::vector< int > & | datasize | ||
) |
Definition at line 38 of file channel.cpp.
int Channel::start | ( | ) |
start asynchronous communication
int Channel::start | ( | ) |
start asynchronous communication
int Channel::start | ( | ) |
Definition at line 194 of file channel.cpp.
int Channel::start_thread | ( | int | itask | ) |
Definition at line 236 of file channel.cpp.
int Channel::wait | ( | ) |
wait for completion
int Channel::wait | ( | ) |
wait for completion
int Channel::wait | ( | ) |
Definition at line 218 of file channel.cpp.
int Channel::wait_thread | ( | int | itask | ) |
Definition at line 261 of file channel.cpp.
|
friend |
|
friend |
|
friend |
|
staticprivate |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
private |