ECP-VELOC Components
User documentation for all components
Enumerations | Functions
kvtree_mpi.h File Reference

Hash MPI transfer functions. More...

Go to the source code of this file.

Enumerations

enum  kvtree_exchange_enum { KVTREE_EXCHANGE_RIGHT = 0, KVTREE_EXCHANGE_LEFT }
 

Functions

int kvtree_send (const kvtree *hash, int rank, MPI_Comm comm)
 
int kvtree_recv (kvtree *hash, int rank, MPI_Comm comm)
 
int kvtree_sendrecv (const kvtree *hash_send, int rank_send, kvtree *hash_recv, int rank_recv, MPI_Comm comm)
 
int kvtree_bcast (kvtree *hash, int root, MPI_Comm comm)
 
int kvtree_exchange_sendq (kvtree *send_hash, int rank, const kvtree *msg)
 
int kvtree_exchange (const kvtree *hash_send, kvtree *hash_recv, MPI_Comm comm)
 
int kvtree_exchange_direction (const kvtree *hash_send, kvtree *hash_recv, MPI_Comm comm, kvtree_exchange_enum direction)
 
int kvtree_write_gather (const char *prefix, kvtree *data, MPI_Comm comm)
 
int kvtree_read_scatter (const char *prefix, kvtree *data, MPI_Comm comm)
 

Enumeration Type Documentation

◆ kvtree_exchange_enum

Enumerator
KVTREE_EXCHANGE_RIGHT 
KVTREE_EXCHANGE_LEFT 

Definition at line 59 of file kvtree_mpi.h.

Function Documentation

◆ kvtree_bcast()

int kvtree_bcast ( kvtree *  hash,
int  root,
MPI_Comm  comm 
)

broadcasts a hash from a root and unpacks it into specified hash on all other tasks

◆ kvtree_exchange()

int kvtree_exchange ( const kvtree *  hash_send,
kvtree *  hash_recv,
MPI_Comm  comm 
)

execute a (sparse) global exchange, similar to an alltoallv operation

hash_send specifies destinations as:

<rank_X>
  <hash_to_send_to_rank_X>
<rank_Y>
  <hash_to_send_to_rank_Y>

hash_recv returns hashes sent from remote ranks as:

<rank_A>
  <hash_received_from_rank_A>
<rank_B>
  <hash_received_from_rank_B>

◆ kvtree_exchange_direction()

int kvtree_exchange_direction ( const kvtree *  hash_send,
kvtree *  hash_recv,
MPI_Comm  comm,
kvtree_exchange_enum  direction 
)

like kvtree_exchange, but with a direction specified for Bruck's algorithm

◆ kvtree_exchange_sendq()

int kvtree_exchange_sendq ( kvtree *  send_hash,
int  rank,
const kvtree *  msg 
)

insert message destined for rank into send kvtree, merges msg with any existing data destined for the same rank

Parameters
[out]send_hash[OUT] kvtree to attach message to
[in]rank[IN] destination rank
[in]msg[IN] data to be send to rank

◆ kvtree_read_scatter()

int kvtree_read_scatter ( const char *  prefix,
kvtree *  data,
MPI_Comm  comm 
)

read from a series of files specified by the path and filename prefix, and scatter data to each process in comm

Parameters
[in]prefix[IN] - path/filename prefix to prepend to filenames
[out]data[OUT] - output data
[in]comm[IN] - communicator of participating processes

◆ kvtree_recv()

int kvtree_recv ( kvtree *  hash,
int  rank,
MPI_Comm  comm 
)

receives a hash from the specified rank and unpacks it into specified hash

◆ kvtree_send()

int kvtree_send ( const kvtree *  hash,
int  rank,
MPI_Comm  comm 
)

packs and send the given hash to the specified rank

◆ kvtree_sendrecv()

int kvtree_sendrecv ( const kvtree *  hash_send,
int  rank_send,
kvtree *  hash_recv,
int  rank_recv,
MPI_Comm  comm 
)

send and receive a hash in the same step

◆ kvtree_write_gather()

int kvtree_write_gather ( const char *  prefix,
kvtree *  data,
MPI_Comm  comm 
)

gather data from each process in comm, and write to a series of files specified by the path and filename prefix

Parameters
[in]prefix[IN] - path/filename prefix to prepend to filenames
[in]data[IN] - input data
[in]comm[IN] - communicator of participating processes
KVTREE_EXCHANGE_RIGHT
@ KVTREE_EXCHANGE_RIGHT
Definition: kvtree_mpi.h:60
kvtree_exchange_enum
kvtree_exchange_enum
Definition: kvtree_mpi.h:59
KVTREE_EXCHANGE_LEFT
@ KVTREE_EXCHANGE_LEFT
Definition: kvtree_mpi.h:61