Go to the source code of this file.
|
static Xt_exchanger | xt_exchanger_mix_isend_irecv_copy (Xt_exchanger exchanger, MPI_Comm newComm, int new_tag_offset) |
|
static void | xt_exchanger_mix_isend_irecv_delete (Xt_exchanger exchanger) |
|
static void | xt_exchanger_mix_isend_irecv_s_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data) |
|
static void | xt_exchanger_mix_isend_irecv_a_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request) |
|
static int | xt_exchanger_mix_isend_irecv_get_msg_ranks (Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks) |
|
static MPI_Datatype | xt_exchanger_mix_isend_irecv_get_MPI_Datatype (Xt_exchanger exchanger, int rank, enum xt_msg_direction direction) |
|
static Xt_exchanger_mix_isend_irecv | xt_exchanger_mix_isend_irecv_alloc (size_t nmsg) |
|
Xt_exchanger | xt_exchanger_mix_isend_irecv_new (int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset) |
|
◆ MSG_DIR
◆ type
#define type data.padding |
◆ Xt_exchanger_mix_isend_irecv
◆ anonymous enum
◆ xt_exchanger_mix_isend_irecv_a_exchange()
static void xt_exchanger_mix_isend_irecv_a_exchange |
( |
Xt_exchanger |
exchanger, |
|
|
const void * |
src_data, |
|
|
void * |
dst_data, |
|
|
Xt_request * |
request |
|
) |
| |
|
static |
◆ xt_exchanger_mix_isend_irecv_alloc()
◆ xt_exchanger_mix_isend_irecv_copy()
◆ xt_exchanger_mix_isend_irecv_delete()
static void xt_exchanger_mix_isend_irecv_delete |
( |
Xt_exchanger |
exchanger | ) |
|
|
static |
◆ xt_exchanger_mix_isend_irecv_get_MPI_Datatype()
◆ xt_exchanger_mix_isend_irecv_get_msg_ranks()
◆ xt_exchanger_mix_isend_irecv_new()
Constructor for an exchanger using asynchronous send and recv. The order in which the send's and recv's are called are optimised to reduce network congestion and improve performance.
- Parameters
-
[in] | nsend | number of send messages |
[in] | nrecv | number of receive messages |
[in] | send_msgs | array with send messages |
[in] | recv_msgs | array with receive messages |
[in] | comm | MPI communicator that is to be used for the communication |
[in] | tag_offset | tag |
note: tag_offset + xt_mpi_tag_exchange_msg must not be used on comm by any other part of the program during the lifetime of the created exchanger object
- Examples
- test_exchanger_parallel.c.
Definition at line 126 of file xt_exchanger_mix_isend_irecv.c.
◆ xt_exchanger_mix_isend_irecv_s_exchange()
static void xt_exchanger_mix_isend_irecv_s_exchange |
( |
Xt_exchanger |
exchanger, |
|
|
const void * |
src_data, |
|
|
void * |
dst_data |
|
) |
| |
|
static |
◆ exchanger_mix_isend_irecv_vtable
Initial value:= {
}
static MPI_Datatype xt_exchanger_mix_isend_irecv_get_MPI_Datatype(Xt_exchanger exchanger, int rank, enum xt_msg_direction direction)
static void xt_exchanger_mix_isend_irecv_a_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request)
static void xt_exchanger_mix_isend_irecv_delete(Xt_exchanger exchanger)
static int xt_exchanger_mix_isend_irecv_get_msg_ranks(Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks)
static void xt_exchanger_mix_isend_irecv_s_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data)
static Xt_exchanger xt_exchanger_mix_isend_irecv_copy(Xt_exchanger exchanger, MPI_Comm newComm, int new_tag_offset)
Definition at line 78 of file xt_exchanger_mix_isend_irecv.c.