Yet Another eXchange Tool 0.11.3
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions | Variables
xt_exchanger_neigh_alltoall.c File Reference
#include <assert.h>
#include <string.h>
#include <mpi.h>
#include "core/core.h"
#include "core/ppm_xfuncs.h"
#include "xt_config_internal.h"
#include "xt/xt_mpi.h"
#include "xt_mpi_internal.h"
#include "xt_redist_internal.h"
#include "xt/xt_xmap.h"
#include "xt/xt_idxlist.h"
#include "xt/xt_request.h"
#include "xt/xt_request_msgs.h"
#include "xt_exchanger.h"
#include "xt_exchanger_neigh_alltoall.h"
Include dependency graph for xt_exchanger_neigh_alltoall.c:

Go to the source code of this file.

Classes

struct  xt_exchanger_neigh_alltoall_team_share
 
struct  Xt_exchanger_neigh_alltoall_
 

Macros

#define MAX(a, b)   ((a) >= (b) ? (a) : (b))
 

Typedefs

typedef struct Xt_exchanger_neigh_alltoall_Xt_exchanger_neigh_alltoall
 

Functions

static Xt_exchanger xt_exchanger_neigh_alltoall_copy (Xt_exchanger exchanger, MPI_Comm newComm, int new_tag_offset)
 
static void xt_exchanger_neigh_alltoall_delete (Xt_exchanger exchanger)
 
static void xt_exchanger_neigh_alltoall_s_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data)
 
static void xt_exchanger_neigh_alltoall_a_exchange (Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request)
 
static int xt_exchanger_neigh_alltoall_get_msg_ranks (Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks)
 
static MPI_Datatype xt_exchanger_neigh_alltoall_get_MPI_Datatype (Xt_exchanger exchanger, int rank, enum xt_msg_direction direction, bool do_dup)
 
static void xt_exchanger_neigh_alltoall_team_share_default_init (void *share)
 
static void xt_exchanger_neigh_alltoall_team_share_destroy (void *share)
 
static Xt_exchanger_neigh_alltoall xt_exchanger_neigh_alltoall_alloc (size_t nsend, size_t nrecv, void *exchanger_team_share)
 
static void copy_dt (size_t n, const struct Xt_redist_msg *restrict msgs, MPI_Datatype *restrict datatypes, MPI_Comm comm, bool dt_dup)
 
static void copy_ranks (size_t n, const struct Xt_redist_msg *restrict msgs, int *restrict ranks)
 
Xt_exchanger xt_exchanger_neigh_alltoall_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, Xt_config config)
 

Variables

static const char filename [] = "xt_exchanger_neigh_alltoall.c"
 
const struct xt_exchanger_vtable xt_exchanger_neigh_alltoall_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_neigh_alltoall.c.

Macro Definition Documentation

◆ MAX

#define MAX ( a,
b )   ((a) >= (b) ? (a) : (b))

Definition at line 70 of file xt_exchanger_neigh_alltoall.c.

Typedef Documentation

◆ Xt_exchanger_neigh_alltoall

Definition at line 135 of file xt_exchanger_neigh_alltoall.c.

Function Documentation

◆ copy_dt()

static void copy_dt ( size_t n,
const struct Xt_redist_msg *restrict msgs,
MPI_Datatype *restrict datatypes,
MPI_Comm comm,
bool dt_dup )
static

Definition at line 165 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copy_ranks()

static void copy_ranks ( size_t n,
const struct Xt_redist_msg *restrict msgs,
int *restrict ranks )
static

Definition at line 177 of file xt_exchanger_neigh_alltoall.c.

Here is the caller graph for this function:

◆ xt_exchanger_neigh_alltoall_a_exchange()

static void xt_exchanger_neigh_alltoall_a_exchange ( Xt_exchanger exchanger,
const void * src_data,
void * dst_data,
Xt_request * request )
static

Definition at line 345 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:

◆ xt_exchanger_neigh_alltoall_alloc()

static Xt_exchanger_neigh_alltoall xt_exchanger_neigh_alltoall_alloc ( size_t nsend,
size_t nrecv,
void * exchanger_team_share )
static

Definition at line 147 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xt_exchanger_neigh_alltoall_copy()

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

Definition at line 247 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:

◆ xt_exchanger_neigh_alltoall_delete()

static void xt_exchanger_neigh_alltoall_delete ( Xt_exchanger exchanger)
static

Definition at line 307 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:

◆ xt_exchanger_neigh_alltoall_get_MPI_Datatype()

static MPI_Datatype xt_exchanger_neigh_alltoall_get_MPI_Datatype ( Xt_exchanger exchanger,
int rank,
enum xt_msg_direction direction,
bool do_dup )
static

Definition at line 407 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:

◆ xt_exchanger_neigh_alltoall_get_msg_ranks()

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

Definition at line 435 of file xt_exchanger_neigh_alltoall.c.

◆ xt_exchanger_neigh_alltoall_new()

Xt_exchanger xt_exchanger_neigh_alltoall_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,
Xt_config config )

constructor for an exchanger using a collective all-to-all operation on a virtual topoloy

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
[in]configcustom configuration parameters
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
this exchanger requires MPI Version 3 or higher

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 186 of file xt_exchanger_neigh_alltoall.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xt_exchanger_neigh_alltoall_s_exchange()

static void xt_exchanger_neigh_alltoall_s_exchange ( Xt_exchanger exchanger,
const void * src_data,
void * dst_data )
static

Definition at line 326 of file xt_exchanger_neigh_alltoall.c.

◆ xt_exchanger_neigh_alltoall_team_share_default_init()

static void xt_exchanger_neigh_alltoall_team_share_default_init ( void * share)
static

Definition at line 103 of file xt_exchanger_neigh_alltoall.c.

Here is the caller graph for this function:

◆ xt_exchanger_neigh_alltoall_team_share_destroy()

static void xt_exchanger_neigh_alltoall_team_share_destroy ( void * share)
static

Definition at line 112 of file xt_exchanger_neigh_alltoall.c.

Here is the caller graph for this function:

Variable Documentation

◆ filename

const char filename[] = "xt_exchanger_neigh_alltoall.c"
static

Definition at line 68 of file xt_exchanger_neigh_alltoall.c.

◆ xt_exchanger_neigh_alltoall_vtable

const struct xt_exchanger_vtable xt_exchanger_neigh_alltoall_vtable
Initial value:
= {
.team_share_size = sizeof (struct xt_exchanger_neigh_alltoall_team_share),
.team_share_default_init
}
static int xt_exchanger_neigh_alltoall_get_msg_ranks(Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks)
static void xt_exchanger_neigh_alltoall_a_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request)
static MPI_Datatype xt_exchanger_neigh_alltoall_get_MPI_Datatype(Xt_exchanger exchanger, int rank, enum xt_msg_direction direction, bool do_dup)
static void xt_exchanger_neigh_alltoall_delete(Xt_exchanger exchanger)
static void xt_exchanger_neigh_alltoall_team_share_destroy(void *share)
static Xt_exchanger xt_exchanger_neigh_alltoall_copy(Xt_exchanger exchanger, MPI_Comm newComm, int new_tag_offset)
static void xt_exchanger_neigh_alltoall_team_share_default_init(void *share)
static void xt_exchanger_neigh_alltoall_s_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data)

Definition at line 122 of file xt_exchanger_neigh_alltoall.c.