Yet Another eXchange Tool
0.9.0
|
#include <string.h>
#include <stdlib.h>
#include "xt/xt_mpi.h"
#include "xt_exchanger.h"
#include "xt_exchanger_irecv_isend.h"
#include "xt_exchanger_mix_isend_irecv.h"
#include "xt_exchanger_irecv_isend_packed.h"
#include "xt_exchanger_neigh_alltoall.h"
Go to the source code of this file.
Functions | |
Xt_exchanger | xt_exchanger_copy (Xt_exchanger exchanger, MPI_Comm new_comm, int new_tag_offset) |
void | xt_exchanger_delete (Xt_exchanger exchanger) |
void | xt_exchanger_s_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data) |
void | xt_exchanger_a_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request) |
static int | compare_exchange_messages (const void *msg_a, const void *msg_b) |
void | xt_exchanger_internal_optimize (size_t n, void *msgs, size_t msg_type_size, MPI_Comm comm) |
int | xt_exchanger_get_msg_ranks (Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks) |
MPI_Datatype | xt_exchanger_get_MPI_Datatype (Xt_exchanger exchanger, int rank, enum xt_msg_direction direction) |
Definition in file xt_exchanger.c.
|
static |
void xt_exchanger_a_exchange | ( | Xt_exchanger | exchanger, |
const void * | src_data, | ||
void * | dst_data, | ||
Xt_request * | request | ||
) |
Executes a asynchronous data exchange.
[in] | exchanger | exchanger object |
[in] | src_data | source data |
[out] | dat_data | destination data |
Definition at line 76 of file xt_exchanger.c.
Xt_exchanger xt_exchanger_copy | ( | Xt_exchanger | orig, |
MPI_Comm | new_comm, | ||
int | new_tag_offset | ||
) |
Copies an exchange object.
[in] | orig | exchanger object to be copied |
[in] | new_comm | communicator to be used by the new exchanger |
[in] | new_tag_offset | new tag_offset |
Definition at line 61 of file xt_exchanger.c.
void xt_exchanger_delete | ( | Xt_exchanger | exchanger | ) |
Destructor for an exchanger.
Definition at line 66 of file xt_exchanger.c.
MPI_Datatype xt_exchanger_get_MPI_Datatype | ( | Xt_exchanger | exchanger, |
int | rank, | ||
enum xt_msg_direction | direction | ||
) |
gets a copy of the MPI_Datatype used for a specificed message
[in] | exchanger | exchanger object |
[in] | rank | MPI rank |
[in] | direction | specific whether the datatype of an incoming or outgoing message is requested |
Definition at line 134 of file xt_exchanger.c.
int xt_exchanger_get_msg_ranks | ( | Xt_exchanger | exchanger, |
enum xt_msg_direction | direction, | ||
int *restrict * | ranks | ||
) |
Gets the ranks of all processes that receive data from/send data to the local process in the specificed message.
[in] | exchanger | exchanger object |
[in] | direction | specifices whether ranks for the outgoing or incoming messages are requested |
[out] | ranks | ranks for all outgoing/incoming messages |
Definition at line 126 of file xt_exchanger.c.
void xt_exchanger_internal_optimize | ( | size_t | n, |
void * | msgs, | ||
size_t | msg_type_size, | ||
MPI_Comm | comm | ||
) |
Support routine, that reorders a number of provided messages, such that network congestion is potentially reduced.
[in] | n | number of messages |
[in,out] | msgs | messages to be reordered |
[in] | msg_type_size | size of the elements in msgs |
[in] | comm | communicator associated to the messages |
Definition at line 90 of file xt_exchanger.c.
void xt_exchanger_s_exchange | ( | Xt_exchanger | exchanger, |
const void * | src_data, | ||
void * | dst_data | ||
) |
Executes a synchronous data exchange.
[in] | exchanger | exchanger object |
[in] | src_data | source data |
[out] | dat_data | destination data |
Definition at line 71 of file xt_exchanger.c.