QUDA  0.9.0
Macros | Typedefs | Functions
comm_quda.h File Reference
#include <cstdint>
Include dependency graph for comm_quda.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define comm_declare_send_relative(buffer, dim, dir, nbytes)   comm_declare_send_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes)
 
#define comm_declare_receive_relative(buffer, dim, dir, nbytes)   comm_declare_receive_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes)
 
#define comm_declare_strided_send_relative(buffer, dim, dir, blksize, nblocks, stride)   comm_declare_strided_send_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, blksize, nblocks, stride)
 
#define comm_declare_strided_receive_relative(buffer, dim, dir, blksize, nblocks, stride)   comm_declare_strided_receive_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, blksize, nblocks, stride)
 

Typedefs

typedef struct MsgHandle_s MsgHandle
 
typedef struct Topology_s Topology
 
typedef int(* QudaCommsMap) (const int *coords, void *fdata)
 

Functions

char * comm_hostname (void)
 
double comm_drand (void)
 
Topologycomm_create_topology (int ndim, const int *dims, QudaCommsMap rank_from_coords, void *map_data)
 
void comm_destroy_topology (Topology *topo)
 
int comm_ndim (const Topology *topo)
 
const intcomm_dims (const Topology *topo)
 
const intcomm_coords (const Topology *topo)
 
const intcomm_coords_from_rank (const Topology *topo, int rank)
 
int comm_rank_from_coords (const Topology *topo, const int *coords)
 
int comm_rank_displaced (const Topology *topo, const int displacement[])
 
void comm_set_default_topology (Topology *topo)
 
Topologycomm_default_topology (void)
 
void comm_set_neighbor_ranks (Topology *topo=NULL)
 
int comm_neighbor_rank (int dir, int dim)
 
int comm_dim (int dim)
 
int comm_coord (int dim)
 
MsgHandlecomm_declare_send_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t nbytes)
 
MsgHandlecomm_declare_receive_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t nbytes)
 
MsgHandlecomm_declare_strided_send_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t blksize, int nblocks, size_t stride)
 
MsgHandlecomm_declare_strided_receive_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t blksize, int nblocks, size_t stride)
 
void comm_finalize (void)
 
void comm_dim_partitioned_set (int dim)
 
int comm_dim_partitioned (int dim)
 
int comm_partitioned ()
 Loop over comm_dim_partitioned(dim) for all comms dimensions. More...
 
const char * comm_dim_partitioned_string ()
 Return a string that defines the comm partitioning (used as a tuneKey) More...
 
const char * comm_dim_topology_string ()
 Return a string that defines the comm topology (for use as a tuneKey) More...
 
void comm_init (int ndim, const int *dims, QudaCommsMap rank_from_coords, void *map_data)
 
int comm_rank (void)
 
int comm_size (void)
 
int comm_gpuid (void)
 
void comm_gather_hostname (char *hostname_recv_buf)
 Gather all hostnames. More...
 
void comm_gather_gpuid (int *gpuid_recv_buf)
 Gather all GPU ids. More...
 
void comm_peer2peer_init (const char *hostname_recv_buf)
 
int comm_peer2peer_enabled_global ()
 
bool comm_peer2peer_enabled (int dir, int dim)
 
void comm_enable_peer2peer (bool enable)
 Enable / disable peer-to-peer communication: used for dslash policies that do not presently support peer-to-peer communication. More...
 
bool comm_intranode_enabled (int dir, int dim)
 
void comm_enable_intranode (bool enable)
 Enable / disable intra-node (non-peer-to-peer) communication. More...
 
bool comm_gdr_enabled ()
 Query if GPU Direct RDMA communication is enabled (global setting) More...
 
bool comm_gdr_blacklist ()
 Query if GPU Direct RDMA communication is blacklisted for this GPU. More...
 
MsgHandlecomm_declare_send_displaced (void *buffer, const int displacement[], size_t nbytes)
 
MsgHandlecomm_declare_receive_displaced (void *buffer, const int displacement[], size_t nbytes)
 
MsgHandlecomm_declare_strided_send_displaced (void *buffer, const int displacement[], size_t blksize, int nblocks, size_t stride)
 
MsgHandlecomm_declare_strided_receive_displaced (void *buffer, const int displacement[], size_t blksize, int nblocks, size_t stride)
 
void comm_free (MsgHandle *mh)
 
void comm_start (MsgHandle *mh)
 
void comm_wait (MsgHandle *mh)
 
int comm_query (MsgHandle *mh)
 
void comm_allreduce (double *data)
 
void comm_allreduce_max (double *data)
 
void comm_allreduce_array (double *data, size_t size)
 
void comm_allreduce_int (int *data)
 
void comm_allreduce_xor (uint64_t *data)
 
void comm_broadcast (void *data, size_t nbytes)
 
void comm_barrier (void)
 
void comm_abort (int status)
 
void reduceMaxDouble (double &)
 
void reduceDouble (double &)
 
void reduceDoubleArray (double *, const int len)
 
int commDim (int)
 
int commCoords (int)
 
int commDimPartitioned (int dir)
 
void commDimPartitionedSet (int dir)
 
void commDimPartitionedReset ()
 Reset the comm dim partioned array to zero,. More...
 
bool commGlobalReduction ()
 
void commGlobalReductionSet (bool global_reduce)
 
bool commAsyncReduction ()
 
void commAsyncReductionSet (bool global_reduce)
 

Macro Definition Documentation

◆ comm_declare_receive_relative

#define comm_declare_receive_relative (   buffer,
  dim,
  dir,
  nbytes 
)    comm_declare_receive_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes)

◆ comm_declare_send_relative

#define comm_declare_send_relative (   buffer,
  dim,
  dir,
  nbytes 
)    comm_declare_send_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes)

◆ comm_declare_strided_receive_relative

#define comm_declare_strided_receive_relative (   buffer,
  dim,
  dir,
  blksize,
  nblocks,
  stride 
)    comm_declare_strided_receive_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, blksize, nblocks, stride)

Definition at line 110 of file comm_quda.h.

◆ comm_declare_strided_send_relative

#define comm_declare_strided_send_relative (   buffer,
  dim,
  dir,
  blksize,
  nblocks,
  stride 
)    comm_declare_strided_send_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, blksize, nblocks, stride)

Definition at line 92 of file comm_quda.h.

Typedef Documentation

◆ MsgHandle

typedef struct MsgHandle_s MsgHandle

Definition at line 8 of file comm_quda.h.

◆ QudaCommsMap

typedef int(* QudaCommsMap) (const int *coords, void *fdata)

Definition at line 12 of file comm_quda.h.

◆ Topology

typedef struct Topology_s Topology

Definition at line 9 of file comm_quda.h.

Function Documentation

◆ comm_abort()

void comm_abort ( int  status)

Definition at line 334 of file comm_mpi.cpp.

References exit().

Here is the call graph for this function:

◆ comm_allreduce()

void comm_allreduce ( double data)

Definition at line 281 of file comm_mpi.cpp.

References MPI_Allreduce(), MPI_CHECK, and QMP_CHECK.

Referenced by norm2(), quda::colorspinor::FieldOrderCB< Float, nSpin, nColor, nVec, order >::norm2(), quda::gauge::FieldOrder< Float, nColor, nSpinCoarse, order, native_ghost >::norm2(), and reduceDouble().

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

◆ comm_allreduce_array()

void comm_allreduce_array ( double data,
size_t  size 
)

Definition at line 296 of file comm_mpi.cpp.

References memcpy(), MPI_Allreduce(), MPI_CHECK, QMP_CHECK, and size.

Referenced by reduceDoubleArray().

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

◆ comm_allreduce_int()

void comm_allreduce_int ( int data)

Definition at line 305 of file comm_mpi.cpp.

References MPI_Allreduce(), MPI_CHECK, and QMP_CHECK.

Referenced by comm_peer2peer_enabled_global(), quda::compareSpinor(), hisq_force_test(), main(), and TEST().

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

◆ comm_allreduce_max()

void comm_allreduce_max ( double data)

Definition at line 289 of file comm_mpi.cpp.

References MPI_Allreduce(), MPI_CHECK, and QMP_CHECK.

Referenced by reduceMaxDouble().

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

◆ comm_allreduce_xor()

void comm_allreduce_xor ( uint64_t data)

Definition at line 312 of file comm_mpi.cpp.

References errorQuda, MPI_Allreduce(), MPI_CHECK, and QMP_CHECK.

Here is the call graph for this function:

◆ comm_barrier()

void comm_barrier ( void  )

Definition at line 328 of file comm_mpi.cpp.

References MPI_Barrier(), MPI_CHECK, and QMP_CHECK.

Referenced by comm_gdr_blacklist(), comm_peer2peer_init(), and dslashCUDA().

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

◆ comm_broadcast()

void comm_broadcast ( void *  data,
size_t  nbytes 
)

broadcast from rank 0

Definition at line 322 of file comm_mpi.cpp.

References MPI_Bcast(), MPI_CHECK, and QMP_CHECK.

Referenced by quda::broadcastTuneCache().

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

◆ comm_coord()

int comm_coord ( int  dim)

Return the coording of this process in the dimension dim

Parameters
dimDimension which we are querying
Returns
Coordinate of this process

Definition at line 411 of file comm_common.cpp.

References comm_coords(), comm_default_topology(), and dim.

Referenced by commCoords(), DslashCuda::DslashCuda(), quda::launch_kernel_random(), and site_link_sanity_check_internal_12().

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

◆ comm_coords()

const int* comm_coords ( const Topology topo)

Definition at line 314 of file comm_common.cpp.

References Topology_s::my_coords.

Referenced by comm_coord(), and comm_rank_displaced().

Here is the caller graph for this function:

◆ comm_coords_from_rank()

const int* comm_coords_from_rank ( const Topology topo,
int  rank 
)

Definition at line 320 of file comm_common.cpp.

References Topology_s::coords, and rank.

◆ comm_create_topology()

Topology* comm_create_topology ( int  ndim,
const int dims,
QudaCommsMap  rank_from_coords,
void *  map_data 
)

Definition at line 94 of file comm_common.cpp.

References advance_coords(), comm_rank(), Topology_s::coords, Topology_s::dims, errorQuda, fused_exterior_ndeg_tm_dslash_cuda_gen::i, index(), int, Topology_s::my_coords, Topology_s::my_rank, Topology_s::ndim, ndim, nodes, QUDA_MAX_DIM, rand_seed, rank, Topology_s::ranks, safe_malloc, and x.

Referenced by comm_init().

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

◆ comm_declare_receive_displaced()

MsgHandle* comm_declare_receive_displaced ( void *  buffer,
const int  displacement[],
size_t  nbytes 
)

Create a persistent message handler for a relative receive

Parameters
bufferBuffer into which message will be received
dimDimension from message will be received
dirDirection from messaged with be recived (0 - backwards, 1 forwards)
nbytesSize of message in bytes

Declare a message handle for receiving from a node displaced in (x,y,z,t) according to "displacement"

Definition at line 174 of file comm_mpi.cpp.

References check_displacement(), comm_default_topology(), comm_ndim(), comm_rank_displaced(), MsgHandle_s::custom, errorQuda, MsgHandle_s::handle, fused_exterior_ndeg_tm_dslash_cuda_gen::i, max_displacement, MsgHandle_s::mem, MPI_CHECK, MPI_Recv_init(), ndim, pow(), rank, MsgHandle_s::request, and safe_malloc.

Referenced by comm_declare_receive_relative_().

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

◆ comm_declare_receive_relative_()

MsgHandle* comm_declare_receive_relative_ ( const char *  func,
const char *  file,
int  line,
void *  buffer,
int  dim,
int  dir,
size_t  nbytes 
)

Create a persistent message handler for a relative send. This should not be called directly, and instead the helper macro (without the trailing underscore) should be called instead.

Parameters
bufferBuffer into which message will be received
dimDimension from message will be received
dirDirection from messaged with be recived (0 - backwards, 1 forwards)
nbytesSize of message in bytes

Receive from the "dir" direction in the "dim" dimension

Definition at line 460 of file comm_common.cpp.

References attributes, checkCudaError, comm_declare_receive_displaced(), dim, e, err, errorQuda, func, printfQuda, and QUDA_MAX_DIM.

Here is the call graph for this function:

◆ comm_declare_send_displaced()

MsgHandle* comm_declare_send_displaced ( void *  buffer,
const int  displacement[],
size_t  nbytes 
)

Create a persistent message handler for a relative send

Parameters
bufferBuffer from which message will be sent
dimDimension in which message will be sent
dirDirection in which messaged with be sent (0 - backwards, 1 forwards)
nbytesSize of message in bytes

Declare a message handle for sending to a node displaced in (x,y,z,t) according to "displacement"

Definition at line 151 of file comm_mpi.cpp.

References check_displacement(), comm_default_topology(), comm_ndim(), comm_rank_displaced(), MsgHandle_s::custom, errorQuda, MsgHandle_s::handle, fused_exterior_ndeg_tm_dslash_cuda_gen::i, max_displacement, MsgHandle_s::mem, MPI_CHECK, MPI_Send_init(), ndim, pow(), rank, MsgHandle_s::request, and safe_malloc.

Referenced by comm_declare_send_relative_().

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

◆ comm_declare_send_relative_()

MsgHandle* comm_declare_send_relative_ ( const char *  func,
const char *  file,
int  line,
void *  buffer,
int  dim,
int  dir,
size_t  nbytes 
)

Create a persistent message handler for a relative send. This should not be called directly, and instead the helper macro (without the trailing underscore) should be called instead.

Parameters
bufferBuffer from which message will be sent
dimDimension in which message will be sent
dirDirection in which messaged with be sent (0 - backwards, 1 forwards)
nbytesSize of message in bytes

Send to the "dir" direction in the "dim" dimension

Definition at line 421 of file comm_common.cpp.

References attributes, checkCudaError, comm_declare_send_displaced(), quda::blas::copy(), device_free, device_malloc, dim, e, err, errorQuda, func, host_free, printfQuda, QUDA_MAX_DIM, safe_malloc, and tmp.

Here is the call graph for this function:

◆ comm_declare_strided_receive_displaced()

MsgHandle* comm_declare_strided_receive_displaced ( void *  buffer,
const int  displacement[],
size_t  blksize,
int  nblocks,
size_t  stride 
)

Create a persistent strided message handler for a displaced receive

Parameters
bufferBuffer into which message will be received
displacementArray of offsets specifying the relative node from which we are receiving
blksizeSize of block in bytes
nblocksNumber of blocks
strideStride between blocks in bytes

Declare a message handle for receiving from a node displaced in (x,y,z,t) according to "displacement"

Declare a message handle for strided receiving from a node displaced in (x,y,z,t) according to "displacement"

Definition at line 226 of file comm_mpi.cpp.

References check_displacement(), comm_default_topology(), comm_ndim(), comm_rank_displaced(), MsgHandle_s::custom, MsgHandle_s::datatype, errorQuda, MsgHandle_s::handle, fused_exterior_ndeg_tm_dslash_cuda_gen::i, max_displacement, MsgHandle_s::mem, MPI_CHECK, MPI_Recv_init(), ndim, pow(), rank, MsgHandle_s::request, and safe_malloc.

Referenced by comm_declare_strided_receive_relative_().

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

◆ comm_declare_strided_receive_relative_()

MsgHandle* comm_declare_strided_receive_relative_ ( const char *  func,
const char *  file,
int  line,
void *  buffer,
int  dim,
int  dir,
size_t  blksize,
int  nblocks,
size_t  stride 
)

Create a persistent strided message handler for a relative receive This should not be called directly, and instead the helper macro (without the trailing underscore) should be called instead.

Parameters
bufferBuffer into which message will be received
dimDimension from message will be received
dirDirection from messaged with be recived (0 - backwards, 1 forwards)
blksizeSize of block in bytes
nblocksNumber of blocks
strideStride between blocks in bytes

Strided receive from the "dir" direction in the "dim" dimension

Definition at line 538 of file comm_common.cpp.

References attributes, checkCudaError, comm_declare_strided_receive_displaced(), dim, e, err, errorQuda, func, fused_exterior_ndeg_tm_dslash_cuda_gen::i, printfQuda, and QUDA_MAX_DIM.

Here is the call graph for this function:

◆ comm_declare_strided_send_displaced()

MsgHandle* comm_declare_strided_send_displaced ( void *  buffer,
const int  displacement[],
size_t  blksize,
int  nblocks,
size_t  stride 
)

Create a persistent strided message handler for a displaced send

Parameters
bufferBuffer from which message will be sent
displacementArray of offsets specifying the relative node to which we are sending
blksizeSize of block in bytes
nblocksNumber of blocks
strideStride between blocks in bytes

Declare a message handle for sending to a node displaced in (x,y,z,t) according to "displacement"

Declare a message handle for strided sending to a node displaced in (x,y,z,t) according to "displacement"

Definition at line 197 of file comm_mpi.cpp.

References check_displacement(), comm_default_topology(), comm_ndim(), comm_rank_displaced(), MsgHandle_s::custom, MsgHandle_s::datatype, errorQuda, MsgHandle_s::handle, fused_exterior_ndeg_tm_dslash_cuda_gen::i, max_displacement, MsgHandle_s::mem, MPI_CHECK, MPI_Send_init(), ndim, pow(), rank, MsgHandle_s::request, and safe_malloc.

Referenced by comm_declare_strided_send_relative_().

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

◆ comm_declare_strided_send_relative_()

MsgHandle* comm_declare_strided_send_relative_ ( const char *  func,
const char *  file,
int  line,
void *  buffer,
int  dim,
int  dir,
size_t  blksize,
int  nblocks,
size_t  stride 
)

Create a persistent strided message handler for a relative send. This should not be called directly, and instead the helper macro (without the trailing underscore) should be called instead.

Parameters
bufferBuffer from which message will be sent
dimDimension in which message will be sent
dirDirection in which messaged with be sent (0 - backwards, 1 forwards)
blksizeSize of block in bytes
nblocksNumber of blocks
strideStride between blocks in bytes

Strided send to the "dir" direction in the "dim" dimension

Definition at line 495 of file comm_common.cpp.

References attributes, checkCudaError, comm_declare_strided_send_displaced(), quda::blas::copy(), device_free, device_malloc, dim, e, err, errorQuda, func, host_free, fused_exterior_ndeg_tm_dslash_cuda_gen::i, printfQuda, QUDA_MAX_DIM, safe_malloc, and tmp.

Here is the call graph for this function:

◆ comm_default_topology()

Topology* comm_default_topology ( void  )

◆ comm_destroy_topology()

void comm_destroy_topology ( Topology topo)

Definition at line 137 of file comm_common.cpp.

References Topology_s::coords, host_free, and Topology_s::ranks.

Referenced by comm_finalize().

Here is the caller graph for this function:

◆ comm_dim()

int comm_dim ( int  dim)

Return the number of processes in the dimension dim

Parameters
dimDimension which we are querying
Returns
Length of process dimensions

Definition at line 404 of file comm_common.cpp.

References comm_default_topology(), comm_dims(), and dim.

Referenced by quda::calculateY(), comm_dim_partitioned(), comm_init(), comm_peer2peer_init(), commDim(), quda::LatticeField::createIPCComms(), quda::LatticeField::destroyIPCComms(), DslashCuda::DslashCuda(), quda::launch_kernel_random(), set_layout(), and site_link_sanity_check_internal_12().

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

◆ comm_dim_partitioned()

int comm_dim_partitioned ( int  dim)

◆ comm_dim_partitioned_set()

void comm_dim_partitioned_set ( int  dim)

Definition at line 583 of file comm_common.cpp.

References dim, and manual_set_partition.

Referenced by commDimPartitionedSet().

Here is the caller graph for this function:

◆ comm_dim_partitioned_string()

const char* comm_dim_partitioned_string ( )

◆ comm_dim_topology_string()

const char* comm_dim_topology_string ( )

Return a string that defines the comm topology (for use as a tuneKey)

Returns
String specifying comm topology

Definition at line 346 of file comm_mpi.cpp.

References topology_string.

Referenced by anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::tuneKey().

Here is the caller graph for this function:

◆ comm_dims()

const int* comm_dims ( const Topology topo)

Definition at line 308 of file comm_common.cpp.

References Topology_s::dims.

Referenced by comm_dim(), and comm_rank_displaced().

Here is the caller graph for this function:

◆ comm_drand()

double comm_drand ( void  )

We provide our own random number generator to avoid re-seeding rand(), which might also be used by the calling application. This is a clone of rand48(), provided by stdlib.h on UNIX.

Returns
a random double in the interval [0,1)

Definition at line 82 of file comm_common.cpp.

References a, and rand_seed.

Referenced by insertNoise(), and quda::random().

Here is the caller graph for this function:

◆ comm_enable_intranode()

void comm_enable_intranode ( bool  enable)

Enable / disable intra-node (non-peer-to-peer) communication.

Parameters
[in]enableBoolean flag to enable / disable intra-node (non peer-to-peer) communication

Definition at line 298 of file comm_common.cpp.

References enable_intranode.

◆ comm_enable_peer2peer()

void comm_enable_peer2peer ( bool  enable)

Enable / disable peer-to-peer communication: used for dslash policies that do not presently support peer-to-peer communication.

Parameters
[in]enableBoolean flag to enable / disable peer-to-peer communication

Definition at line 288 of file comm_common.cpp.

References enable_p2p.

Referenced by anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::apply(), and anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::DslashPolicyTune().

Here is the caller graph for this function:

◆ comm_finalize()

void comm_finalize ( void  )

Definition at line 573 of file comm_common.cpp.

References comm_default_topology(), comm_destroy_topology(), and comm_set_default_topology().

Referenced by endQuda().

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

◆ comm_free()

void comm_free ( MsgHandle mh)

◆ comm_gather_gpuid()

void comm_gather_gpuid ( int gpuid_recv_buf)

Gather all GPU ids.

Parameters
[out]gpuid_recv_bufint array of length comm_size() that will be filled in GPU ids for all processes (in rank order).

Definition at line 56 of file comm_mpi.cpp.

References comm_gpuid(), comm_rank(), comm_size(), gpuid, fused_exterior_ndeg_tm_dslash_cuda_gen::i, MPI_Allgather(), and MPI_CHECK.

Referenced by comm_peer2peer_init().

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

◆ comm_gather_hostname()

void comm_gather_hostname ( char *  hostname_recv_buf)

Gather all hostnames.

Parameters
[out]hostname_recv_bufchar array of length 128*comm_size() that will be filled in GPU ids for all processes. Each hostname is in rank order, with 128 bytes for each.

Definition at line 50 of file comm_mpi.cpp.

References comm_hostname(), comm_rank(), comm_size(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, MPI_Allgather(), MPI_CHECK, and strncpy().

Referenced by comm_init().

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

◆ comm_gdr_blacklist()

bool comm_gdr_blacklist ( )

Query if GPU Direct RDMA communication is blacklisted for this GPU.

Definition at line 627 of file comm_common.cpp.

References comm_barrier(), comm_gpuid(), comm_rank(), errorQuda, getenv(), getVerbosity(), printf(), and QUDA_SILENT.

Referenced by comm_peer2peer_init(), and anonymous_namespace{dslash_policy.cuh}::DslashFactory::create().

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

◆ comm_gdr_enabled()

bool comm_gdr_enabled ( )

◆ comm_gpuid()

int comm_gpuid ( void  )

Definition at line 132 of file comm_mpi.cpp.

References gpuid.

Referenced by comm_gather_gpuid(), comm_gdr_blacklist(), comm_peer2peer_init(), anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::DslashPolicyTune(), and initQudaDevice().

Here is the caller graph for this function:

◆ comm_hostname()

char* comm_hostname ( void  )

Definition at line 58 of file comm_common.cpp.

Referenced by comm_gather_hostname(), comm_init(), and comm_peer2peer_init().

Here is the caller graph for this function:

◆ comm_init()

void comm_init ( int  ndim,
const int dims,
QudaCommsMap  rank_from_coords,
void *  map_data 
)

◆ comm_intranode_enabled()

bool comm_intranode_enabled ( int  dir,
int  dim 
)

Query if intra-node (non-peer-to-peer) communication is enabled in a given dimension and direction

Parameters
dirDirection (0 - backwards, 1 forwards)
dimDimension (0-3)
Returns
Whether intra-node communication is enabled

Definition at line 294 of file comm_common.cpp.

References dim, enable_intranode, and intranode_enabled.

◆ comm_ndim()

int comm_ndim ( const Topology topo)

◆ comm_neighbor_rank()

int comm_neighbor_rank ( int  dir,
int  dim 
)

Definition at line 396 of file comm_common.cpp.

References comm_set_neighbor_ranks(), dim, neighbor_rank, and neighbors_cached.

Referenced by comm_peer2peer_init().

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

◆ comm_partitioned()

int comm_partitioned ( )

Loop over comm_dim_partitioned(dim) for all comms dimensions.

Returns
Whether any communications dimensions are partitioned

Definition at line 602 of file comm_common.cpp.

References comm_dim_partitioned(), and fused_exterior_ndeg_tm_dslash_cuda_gen::i.

Referenced by quda::DslashCoarseLaunch::operator()().

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

◆ comm_peer2peer_enabled()

bool comm_peer2peer_enabled ( int  dir,
int  dim 
)

Query if peer-to-peer communication is enabled

Parameters
dirDirection (0 - backwards, 1 forwards)
dimDimension (0-3)
Returns
Whether peer-to-peer is enabled

Definition at line 265 of file comm_common.cpp.

References dim, enable_p2p, and peer2peer_enabled.

Referenced by comm_peer2peer_enabled_global(), anonymous_namespace{dslash_policy.cuh}::commsComplete(), quda::cudaGaugeField::commsComplete(), quda::cudaColorSpinorField::commsQuery(), quda::cudaColorSpinorField::commsWait(), anonymous_namespace{dslash_policy.cuh}::completeDslash(), quda::LatticeField::createIPCComms(), quda::LatticeField::destroyIPCComms(), quda::cudaGaugeField::exchangeExtendedGhost(), quda::cudaGaugeField::exchangeGhost(), quda::cudaColorSpinorField::exchangeGhost(), quda::cudaColorSpinorField::gather(), anonymous_namespace{dslash_policy.cuh}::getStreamIndex(), quda::cudaGaugeField::injectGhost(), anonymous_namespace{dslash_policy.cuh}::issueGather(), anonymous_namespace{dslash_policy.cuh}::issuePack(), anonymous_namespace{dslash_policy.cuh}::DslashBasic::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashPthreads::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedExterior::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashGDR::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedGDR::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPack::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPack::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPackGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPackGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopy::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopy::operator()(), quda::cudaGaugeField::recvStart(), quda::cudaColorSpinorField::recvStart(), quda::cudaColorSpinorField::scatter(), quda::cudaGaugeField::sendStart(), quda::cudaColorSpinorField::sendStart(), and DslashCuda::setParam().

Here is the caller graph for this function:

◆ comm_peer2peer_enabled_global()

int comm_peer2peer_enabled_global ( )

Query what peer-to-peer communication is enabled globally

Returns
2-bit number reporting 1 for copy engine, 2 for remote writes

Definition at line 269 of file comm_common.cpp.

References comm_allreduce_int(), comm_peer2peer_enabled(), dim, enable_p2p, enable_peer_to_peer, and quda::blas::init().

Referenced by anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::apply(), quda::DslashCoarsePolicyTune::DslashCoarsePolicyTune(), anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::DslashPolicyTune(), and quda::cudaColorSpinorField::exchangeGhost().

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

◆ comm_peer2peer_init()

void comm_peer2peer_init ( const char *  hostname_recv_buf)

Enabled peer-to-peer communication.

Parameters
hostname_bufArray that holds all process hostnames

Definition at line 154 of file comm_common.cpp.

References abs(), atoi(), checkCudaErrorNoSync, comm_barrier(), comm_dim(), comm_gather_gpuid(), comm_gdr_blacklist(), comm_gdr_enabled(), comm_gpuid(), comm_hostname(), comm_neighbor_rank(), comm_rank(), comm_set_neighbor_ranks(), comm_size(), dim, enable_peer_to_peer, errorQuda, getenv(), getVerbosity(), gpuid, host_free, intranode_enabled, neighbor_rank, peer2peer_enabled, peer2peer_init, printf(), printfQuda, prop, QUDA_SILENT, safe_malloc, and strncmp().

Referenced by comm_init().

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

◆ comm_query()

int comm_query ( MsgHandle mh)

Definition at line 272 of file comm_mpi.cpp.

References MsgHandle_s::handle, MPI_CHECK, MPI_Test(), and MsgHandle_s::request.

Referenced by quda::cudaColorSpinorField::commsQuery().

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

◆ comm_rank()

int comm_rank ( void  )

◆ comm_rank_displaced()

int comm_rank_displaced ( const Topology topo,
const int  displacement[] 
)

◆ comm_rank_from_coords()

int comm_rank_from_coords ( const Topology topo,
const int coords 
)

Definition at line 326 of file comm_common.cpp.

References Topology_s::dims, index(), Topology_s::ndim, and Topology_s::ranks.

Referenced by comm_rank_displaced().

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

◆ comm_set_default_topology()

void comm_set_default_topology ( Topology topo)

Definition at line 355 of file comm_common.cpp.

References default_topo.

Referenced by comm_finalize(), and comm_init().

Here is the caller graph for this function:

◆ comm_set_neighbor_ranks()

void comm_set_neighbor_ranks ( Topology topo = NULL)

Definition at line 374 of file comm_common.cpp.

References comm_rank_displaced(), d, default_topo, errorQuda, neighbor_rank, and neighbors_cached.

Referenced by comm_neighbor_rank(), and comm_peer2peer_init().

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

◆ comm_size()

int comm_size ( void  )

◆ comm_start()

void comm_start ( MsgHandle mh)

◆ comm_wait()

void comm_wait ( MsgHandle mh)

◆ commAsyncReduction()

bool commAsyncReduction ( )

Definition at line 684 of file comm_common.cpp.

References asyncReduce.

Referenced by quda::blas::caxpyXmazMR(), quda::ReduceArg< T >::ReduceArg(), and reduceLaunch().

Here is the caller graph for this function:

◆ commAsyncReductionSet()

void commAsyncReductionSet ( bool  global_reduce)

Definition at line 686 of file comm_common.cpp.

References asyncReduce.

Referenced by quda::MR::operator()().

Here is the caller graph for this function:

◆ commCoords()

int commCoords ( int  )

Definition at line 672 of file comm_common.cpp.

References comm_coord().

Referenced by applyGaugeFieldScaling(), createSiteLinkCPU(), and quda::GCR::operator()().

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

◆ commDim()

int commDim ( int  )

Definition at line 670 of file comm_common.cpp.

References comm_dim().

Referenced by applyGaugeFieldScaling(), createSiteLinkCPU(), quda::DiracTwistedCloverPC::Dslash(), quda::DiracTwistedCloverPC::DslashXpay(), quda::exchangeExtendedGhost(), quda::extractGhost(), and quda::extractGhostEx().

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

◆ commDimPartitioned()

int commDimPartitioned ( int  dir)

◆ commDimPartitionedReset()

void commDimPartitionedReset ( )

Reset the comm dim partioned array to zero,.

This should only be needed for automated testing when different partitioning is applied within a single run.

Definition at line 678 of file comm_common.cpp.

References comm_dim_partitioned_reset().

Referenced by end().

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

◆ commDimPartitionedSet()

void commDimPartitionedSet ( int  dir)

Definition at line 676 of file comm_common.cpp.

References comm_dim_partitioned_set().

Referenced by process_command_line_option(), StaggeredDslashTest::SetUp(), and DslashTest::SetUp().

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

◆ commGlobalReduction()

bool commGlobalReduction ( )

Definition at line 680 of file comm_common.cpp.

References globalReduce.

Referenced by quda::tuneLaunch().

Here is the caller graph for this function:

◆ commGlobalReductionSet()

void commGlobalReductionSet ( bool  global_reduce)

Definition at line 682 of file comm_common.cpp.

References globalReduce.

Referenced by quda::IncEigCG::eigCGsolve(), quda::PreconCG::operator()(), quda::MR::operator()(), and quda::SD::operator()().

Here is the caller graph for this function:

◆ reduceDouble()

void reduceDouble ( double )

Definition at line 665 of file comm_common.cpp.

References comm_allreduce(), globalReduce, and sum().

Referenced by quda::blas::normCpu(), quda::blas::reDotProductCpu(), and quda::SolverParam::updateInvertParam().

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

◆ reduceDoubleArray()

void reduceDoubleArray ( double ,
const int  len 
)

◆ reduceMaxDouble()

void reduceMaxDouble ( double )

Definition at line 663 of file comm_common.cpp.

References comm_allreduce_max().

Referenced by quda::maxGauge().

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