11 bool user_set_comm_handle,
void *user_comm)
13 comm_init(nDim, commDims, rank_from_coords, map_data);
18 constexpr
int nDim = 4;
25 for (
int d = 0; d < nDim; d++) {
26 assert(other.
comm_dim(d) % comm_split[d] == 0);
27 comm_dims_split[d] = other.
comm_dim(d) / comm_split[d];
28 comm_key_split[d] = other.
comm_coord(d) % comm_dims_split[d];
29 comm_color_split[d] = other.
comm_coord(d) / comm_dims_split[d];
35 printf(
"Creating a split communicator for a single build, which doesn't really make sense.\n");
42 for (
int d = 0; d < ndim; d++) {
43 if (dims[d] > 1)
errorQuda(
"Grid dimension grid[%d] = %d greater than 1", d, dims[d]);
71 int nblocks,
size_t stride)
77 int nblocks,
size_t stride)
char * comm_hostname(void)
int(* QudaCommsMap)(const int *coords, void *fdata)
int lex_rank_from_coords_dim_t(const int *coords, void *fdata)
void comm_allreduce_max(double *data)
void comm_wait(MsgHandle *mh)
void comm_allreduce(double *data)
void comm_broadcast(void *data, size_t nbytes)
int comm_query(MsgHandle *mh)
void comm_gather_gpuid(int *gpuid_recv_buf)
void comm_init(int ndim, const int *dims, QudaCommsMap rank_from_coords, void *map_data)
void comm_allreduce_min(double *data)
static int comm_rank_global()
MsgHandle * comm_declare_strided_send_displaced(void *buffer, const int displacement[], size_t blksize, int nblocks, size_t stride)
static void comm_abort_(int status)
MsgHandle * comm_declare_send_rank(void *buffer, int rank, int tag, size_t nbytes)
MsgHandle * comm_declare_strided_receive_displaced(void *buffer, const int displacement[], size_t blksize, int nblocks, size_t stride)
void comm_allreduce_max_array(double *data, size_t size)
MsgHandle * comm_declare_send_displaced(void *buffer, const int displacement[], size_t nbytes)
void comm_gather_hostname(char *hostname_recv_buf)
void comm_allreduce_xor(uint64_t *data)
void comm_allreduce_int(int *data)
MsgHandle * comm_declare_receive_displaced(void *buffer, const int displacement[], size_t nbytes)
void comm_free(MsgHandle *&mh)
MsgHandle * comm_declare_recv_rank(void *buffer, int rank, int tag, size_t nbytes)
void comm_init_common(int ndim, const int *dims, QudaCommsMap rank_from_coords, void *map_data)
void comm_start(MsgHandle *mh)
void comm_allreduce_array(double *data, size_t size)