Yet Another eXchange Tool 0.11.4
|
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <limits.h>
#include <mpi.h>
#include "xt/xt_idxlist.h"
#include "xt/xt_idxlist_collection.h"
#include "xt/xt_idxvec.h"
#include "xt/xt_idxstripes.h"
#include "xt/xt_idxempty.h"
#include "xt/xt_xmap.h"
#include "xt/xt_xmap_dist_dir.h"
#include "xt/xt_xmap_dist_dir_intercomm.h"
#include "xt/xt_mpi.h"
#include "xt_arithmetic_util.h"
#include "xt_idxstripes_internal.h"
#include "xt_mpi_internal.h"
#include "core/core.h"
#include "core/ppm_xfuncs.h"
#include "xt/xt_xmap_intersection.h"
#include "xt_idxlist_internal.h"
#include "xt_xmap_dist_dir_common.h"
#include "xt_config_internal.h"
#include "instr.h"
#include "xt/xt_sort.h"
#include "xt_xmap_dist_dir_bucket_gen_internal.h"
Go to the source code of this file.
Classes | |
struct | mmsg_buf |
struct | dd_result |
Typedefs | |
typedef int(* | tx_fp) (void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) |
Enumerations | |
enum | { SEND_SIZE = 0 , SEND_NUM = 1 , SEND_SIZE_ASIZE } |
Functions | |
static void | rank_no_send (size_t rank, int(*restrict send_size)[SEND_SIZE_ASIZE]) |
static struct mmsg_buf | compute_and_pack_bucket_intersections (void *bucket_gen_state, int bucket_type, Xt_idxlist idxlist, int(*send_size)[SEND_SIZE_ASIZE], MPI_Comm comm, int comm_size, Xt_config config) |
static void | compress_sizes (int(*restrict sizes)[SEND_SIZE_ASIZE], int comm_size, struct Xt_xmdd_txstat *tx_stat, int *counts) |
static void * | create_intersections (void *bucket_gen_state, int bucket_type, struct Xt_xmdd_txstat tx_stat[2], int recv_size[][SEND_SIZE_ASIZE], int send_size[][SEND_SIZE_ASIZE], Xt_idxlist idxlist, MPI_Comm comm, int comm_size, Xt_config config) |
static void | tx_intersections (size_t num_msg, const int(*sizes)[SEND_SIZE_ASIZE], unsigned char *buffer, MPI_Request *requests, int tag, MPI_Comm comm, tx_fp tx_op) |
static void | irecv_intersections (size_t num_msg, const int(*recv_size)[SEND_SIZE_ASIZE], void *recv_buffer, MPI_Request *requests, int tag, MPI_Comm comm) |
static void | isend_intersections (size_t num_msg, const int(*send_size)[SEND_SIZE_ASIZE], void *send_buffer, MPI_Request *requests, int tag, MPI_Comm comm) |
static struct dist_dir * | unpack_dist_dir (struct Xt_xmdd_txstat tx_stat, const int(*sizes)[SEND_SIZE_ASIZE], void *buffer, MPI_Comm comm) |
static struct dd_result | generate_distributed_directories (Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, const struct Xt_xmdd_bucket_gen_comms *comms, int remote_size, int comm_size, Xt_config config) |
static size_t | send_size_from_intersections (size_t num_intersections, const struct isect *restrict src_dst_intersections, enum xt_xmdd_direction target, MPI_Comm comm, int comm_size, int(*restrict send_size_target)[SEND_SIZE_ASIZE]) |
static struct mmsg_buf | pack_dist_dirs (size_t num_intersections, struct isect *restrict src_dst_intersections, int(*send_size)[SEND_SIZE_ASIZE], enum xt_xmdd_direction target, bool isect_idxlist_delete, MPI_Comm comm, int comm_size) |
static struct dist_dir * | unpack_dist_dir_results (struct Xt_xmdd_txstat tx_stat, void *restrict recv_buffer, int *restrict entry_counts, MPI_Comm comm) |
static struct dd_result | exchange_idxlists (Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, const struct Xt_xmdd_bucket_gen_comms *comms, Xt_config config) |
Xt_xmap | xt_xmap_dist_dir_intercomm_custom_new (Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm, Xt_config config) |
Xt_xmap | xt_xmap_dist_dir_intercomm_new (Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm) |
Definition in file xt_xmap_dist_dir_intercomm.c.
typedef int(* tx_fp) (void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) |
Definition at line 216 of file xt_xmap_dist_dir_intercomm.c.
anonymous enum |
Enumerator | |
---|---|
SEND_SIZE | |
SEND_NUM | |
SEND_SIZE_ASIZE |
Definition at line 81 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 178 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 102 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 195 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 467 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 290 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 235 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 245 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 402 of file xt_xmap_dist_dir_intercomm.c.
|
inlinestatic |
Definition at line 88 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 374 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 219 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 256 of file xt_xmap_dist_dir_intercomm.c.
|
static |
Definition at line 431 of file xt_xmap_dist_dir_intercomm.c.
Xt_xmap xt_xmap_dist_dir_intercomm_custom_new | ( | Xt_idxlist | src_idxlist, |
Xt_idxlist | dst_idxlist, | ||
MPI_Comm | inter_comm, | ||
MPI_Comm | intra_comm, | ||
Xt_config | config ) |
Construct an exchange map over an intercommunicator with custom parameters
This operation is collective over all processes in comm.
It uses a distributed directory for the initialisation
[in] | src_idxlist | source index list |
[in] | dst_idxlist | destination index list |
[in] | inter_comm | MPI intercommunicator that contains all processes that part in the exchange (xt_xmap_dist_dir_icomm_new will make its own copy of comm) |
[in] | intra_comm | MPI intracommunicator corresponding to the group of inter_comm that the calling rank belongs to |
[in] | config | custom parameter object |
Definition at line 582 of file xt_xmap_dist_dir_intercomm.c.
Xt_xmap xt_xmap_dist_dir_intercomm_new | ( | Xt_idxlist | src_idxlist, |
Xt_idxlist | dst_idxlist, | ||
MPI_Comm | inter_comm, | ||
MPI_Comm | intra_comm ) |
Construct an exchange map over an intercommunicator
This operation is collective over all processes in comm.
It uses a distributed directory for the initialisation
[in] | src_idxlist | source index list |
[in] | dst_idxlist | destination index list |
[in] | inter_comm | MPI intercommunicator that contains all processes that part in the exchange (xt_xmap_dist_dir_icomm_new will make its own copy of comm) |
[in] | intra_comm | MPI intracommunicator corresponding to the group of inter_comm that the calling rank belongs to |
Definition at line 630 of file xt_xmap_dist_dir_intercomm.c.