Yet Another eXchange Tool  0.9.0
Classes | Macros | Typedefs | Enumerations | Functions | Variables
xt_exchanger_mix_isend_irecv.c File Reference
#include <assert.h>
#include <mpi.h>
#include "core/core.h"
#include "core/ppm_xfuncs.h"
#include "xt/xt_mpi.h"
#include "xt/xt_request_msgs.h"
#include "xt_mpi_internal.h"
#include "xt_redist_internal.h"
#include "xt_exchanger.h"
#include "xt_exchanger_mix_isend_irecv.h"
Include dependency graph for xt_exchanger_mix_isend_irecv.c:

Go to the source code of this file.

Classes

struct  mix_msg
 
struct  Xt_exchanger_mix_isend_irecv_
 

Macros

#define MSG_DIR(msg)   ((enum xt_msg_direction)((msg).data.padding))
 
#define type   data.padding
 

Typedefs

typedef struct Xt_exchanger_mix_isend_irecv_Xt_exchanger_mix_isend_irecv
 

Enumerations

enum  { max_on_stack_req = 16 }
 

Functions

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)
 

Variables

static const struct xt_exchanger_vtable exchanger_mix_isend_irecv_vtable
 

Detailed Description

Author
Jörg Behrens behre.nosp@m.ns@d.nosp@m.krz.d.nosp@m.e Moritz Hanke hanke.nosp@m.@dkr.nosp@m.z.de Thomas Jahns jahns.nosp@m.@dkr.nosp@m.z.de

Definition in file xt_exchanger_mix_isend_irecv.c.

Macro Definition Documentation

◆ MSG_DIR

#define MSG_DIR (   msg)    ((enum xt_msg_direction)((msg).data.padding))

Definition at line 96 of file xt_exchanger_mix_isend_irecv.c.

◆ type

#define type   data.padding

Definition at line 97 of file xt_exchanger_mix_isend_irecv.c.

Typedef Documentation

◆ Xt_exchanger_mix_isend_irecv

Definition at line 91 of file xt_exchanger_mix_isend_irecv.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
max_on_stack_req 

Definition at line 189 of file xt_exchanger_mix_isend_irecv.c.

Function Documentation

◆ 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

Definition at line 236 of file xt_exchanger_mix_isend_irecv.c.

Here is the call graph for this function:

◆ xt_exchanger_mix_isend_irecv_alloc()

static Xt_exchanger_mix_isend_irecv xt_exchanger_mix_isend_irecv_alloc ( size_t  nmsg)
static

Definition at line 114 of file xt_exchanger_mix_isend_irecv.c.

Here is the caller graph for this function:

◆ xt_exchanger_mix_isend_irecv_copy()

static Xt_exchanger xt_exchanger_mix_isend_irecv_copy ( Xt_exchanger  exchanger,
MPI_Comm  newComm,
int  new_tag_offset 
)
static

Definition at line 169 of file xt_exchanger_mix_isend_irecv.c.

Here is the call graph for this function:

◆ xt_exchanger_mix_isend_irecv_delete()

static void xt_exchanger_mix_isend_irecv_delete ( Xt_exchanger  exchanger)
static

Definition at line 191 of file xt_exchanger_mix_isend_irecv.c.

Here is the call graph for this function:

◆ xt_exchanger_mix_isend_irecv_get_MPI_Datatype()

static MPI_Datatype xt_exchanger_mix_isend_irecv_get_MPI_Datatype ( Xt_exchanger  exchanger,
int  rank,
enum xt_msg_direction  direction 
)
static

Definition at line 291 of file xt_exchanger_mix_isend_irecv.c.

◆ xt_exchanger_mix_isend_irecv_get_msg_ranks()

static int xt_exchanger_mix_isend_irecv_get_msg_ranks ( Xt_exchanger  exchanger,
enum xt_msg_direction  direction,
int *restrict *  ranks 
)
static

Definition at line 273 of file xt_exchanger_mix_isend_irecv.c.

◆ xt_exchanger_mix_isend_irecv_new()

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 
)

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]nsendnumber of send messages
[in]nrecvnumber of receive messages
[in]send_msgsarray with send messages
[in]recv_msgsarray with receive messages
[in]commMPI communicator that is to be used for the communication
[in]tag_offsettag
Remarks
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

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.

Here is the call graph for this function:

◆ 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

Definition at line 204 of file xt_exchanger_mix_isend_irecv.c.

Variable Documentation

◆ exchanger_mix_isend_irecv_vtable

const struct xt_exchanger_vtable exchanger_mix_isend_irecv_vtable
static
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.