|
QUDA
0.9.0
|
#include <cstdint>

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) |
| Topology * | comm_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 int * | comm_dims (const Topology *topo) |
| const int * | comm_coords (const Topology *topo) |
| const int * | comm_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) |
| Topology * | comm_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) |
| MsgHandle * | comm_declare_send_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t nbytes) |
| MsgHandle * | comm_declare_receive_relative_ (const char *func, const char *file, int line, void *buffer, int dim, int dir, size_t nbytes) |
| 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) |
| 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) |
| 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... | |
| MsgHandle * | comm_declare_send_displaced (void *buffer, const int displacement[], size_t nbytes) |
| MsgHandle * | comm_declare_receive_displaced (void *buffer, const int displacement[], size_t nbytes) |
| MsgHandle * | comm_declare_strided_send_displaced (void *buffer, const int displacement[], size_t blksize, int nblocks, size_t stride) |
| MsgHandle * | comm_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) |
| #define comm_declare_receive_relative | ( | buffer, | |
| dim, | |||
| dir, | |||
| nbytes | |||
| ) | comm_declare_receive_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes) |
Definition at line 74 of file comm_quda.h.
Referenced by quda::LatticeField::createComms(), quda::LatticeField::createIPCComms(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), and quda::cpuGaugeField::exchangeExtendedGhost().
| #define comm_declare_send_relative | ( | buffer, | |
| dim, | |||
| dir, | |||
| nbytes | |||
| ) | comm_declare_send_relative_(__func__, __FILE__, __LINE__, buffer, dim, dir, nbytes) |
Definition at line 59 of file comm_quda.h.
Referenced by quda::LatticeField::createComms(), quda::LatticeField::createIPCComms(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), and quda::cpuGaugeField::exchangeExtendedGhost().
| #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.
| #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 struct MsgHandle_s MsgHandle |
Definition at line 8 of file comm_quda.h.
Definition at line 12 of file comm_quda.h.
| typedef struct Topology_s Topology |
Definition at line 9 of file comm_quda.h.
| void comm_abort | ( | int | status | ) |
Definition at line 334 of file comm_mpi.cpp.
References exit().

| 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().


Definition at line 296 of file comm_mpi.cpp.
References memcpy(), MPI_Allreduce(), MPI_CHECK, QMP_CHECK, and size.
Referenced by reduceDoubleArray().


| 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().


| 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().


| 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.

| 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().


| 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().


Return the coording of this process in the dimension dim
| dim | Dimension which we are querying |
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().


Definition at line 314 of file comm_common.cpp.
References Topology_s::my_coords.
Referenced by comm_coord(), and comm_rank_displaced().

Definition at line 320 of file comm_common.cpp.
References Topology_s::coords, and rank.
| 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().


| MsgHandle* comm_declare_receive_displaced | ( | void * | buffer, |
| const int | displacement[], | ||
| size_t | nbytes | ||
| ) |
Create a persistent message handler for a relative receive
| buffer | Buffer into which message will be received |
| dim | Dimension from message will be received |
| dir | Direction from messaged with be recived (0 - backwards, 1 forwards) |
| nbytes | Size 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_().


| 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.
| buffer | Buffer into which message will be received |
| dim | Dimension from message will be received |
| dir | Direction from messaged with be recived (0 - backwards, 1 forwards) |
| nbytes | Size 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.

Create a persistent message handler for a relative send
| buffer | Buffer from which message will be sent |
| dim | Dimension in which message will be sent |
| dir | Direction in which messaged with be sent (0 - backwards, 1 forwards) |
| nbytes | Size 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_().


| 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.
| buffer | Buffer from which message will be sent |
| dim | Dimension in which message will be sent |
| dir | Direction in which messaged with be sent (0 - backwards, 1 forwards) |
| nbytes | Size 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.

| 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
| buffer | Buffer into which message will be received |
| displacement | Array of offsets specifying the relative node from which we are receiving |
| blksize | Size of block in bytes |
| nblocks | Number of blocks |
| stride | Stride 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_().


| 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.
| buffer | Buffer into which message will be received |
| dim | Dimension from message will be received |
| dir | Direction from messaged with be recived (0 - backwards, 1 forwards) |
| blksize | Size of block in bytes |
| nblocks | Number of blocks |
| stride | Stride 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.

| 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
| buffer | Buffer from which message will be sent |
| displacement | Array of offsets specifying the relative node to which we are sending |
| blksize | Size of block in bytes |
| nblocks | Number of blocks |
| stride | Stride 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_().


| 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.
| buffer | Buffer from which message will be sent |
| dim | Dimension in which message will be sent |
| dir | Direction in which messaged with be sent (0 - backwards, 1 forwards) |
| blksize | Size of block in bytes |
| nblocks | Number of blocks |
| stride | Stride 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.

| Topology* comm_default_topology | ( | void | ) |
Definition at line 361 of file comm_common.cpp.
References default_topo, and errorQuda.
Referenced by comm_coord(), comm_declare_receive_displaced(), comm_declare_send_displaced(), comm_declare_strided_receive_displaced(), comm_declare_strided_send_displaced(), comm_dim(), and comm_finalize().

| 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().

Return the number of processes in the dimension dim
| dim | Dimension which we are querying |
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().


Definition at line 597 of file comm_common.cpp.
References comm_dim(), dim, and manual_set_partition.
Referenced by quda::GenericPackGhostLauncher< Float, Ns, Ms, Nc, Mc, Arg >::bytes(), quda::calculateY(), quda::CalculateYArg< Float, coarseGauge, fineGauge, fineSpinor, fineSpinorTmp, fineClover >::CalculateYArg(), GaugeAlgTest::checkDimsPartitioned(), comm_init(), comm_partitioned(), commDimPartitioned(), quda::cudaGaugeField::commsComplete(), computeHISQForceQuda(), quda::GaugeField::createGhostZone(), quda::ColorSpinorField::createGhostZone(), DslashCuda::DslashCuda(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), quda::cudaGaugeField::exchangeExtendedGhost(), quda::cpuGaugeField::exchangeExtendedGhost(), quda::cudaGaugeField::exchangeGhost(), quda::cudaColorSpinorField::exchangeGhost(), quda::ExtractGhostArg< Order, nDim >::ExtractGhostArg(), quda::gaugefixingFFT(), gaugeLink_mgpu(), quda::GenericPackGhostLauncher< Float, Ns, Ms, Nc, Mc, Arg >::GenericPackGhostLauncher(), hisq_force_init(), hisq_force_test(), quda::cudaGaugeField::injectGhost(), main(), neighborIndex_mg(), quda::PackGhostArg< Field >::PackGhostArg(), quda::PGaugeExchange(), quda::cudaGaugeField::recvStart(), quda::cudaGaugeField::sendStart(), GaugeAlgTest::SetUp(), and quda::XSD::XSD().


| 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().

| const char* comm_dim_partitioned_string | ( | ) |
Return a string that defines the comm partitioning (used as a tuneKey)
Definition at line 342 of file comm_mpi.cpp.
References partition_string.
Referenced by quda::CalculateY< from_coarse, Float, fineSpin, fineColor, coarseSpin, coarseColor, Arg >::CalculateY(), quda::CalculateYhat< Float, n, Arg >::CalculateYhat(), quda::DslashCoarsePolicyTune::DslashCoarsePolicyTune(), quda::GenericPackGhostLauncher< Float, Ns, Ms, Nc, Mc, Arg >::GenericPackGhostLauncher(), and quda::WuppertalSmearing< Float, Ns, Nc, Arg >::WuppertalSmearing().

| const char* comm_dim_topology_string | ( | ) |
Return a string that defines the comm topology (for use as a tuneKey)
Definition at line 346 of file comm_mpi.cpp.
References topology_string.
Referenced by anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::tuneKey().

Definition at line 308 of file comm_common.cpp.
References Topology_s::dims.
Referenced by comm_dim(), and comm_rank_displaced().

| 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.
Definition at line 82 of file comm_common.cpp.
Referenced by insertNoise(), and quda::random().

| void comm_enable_intranode | ( | bool | enable | ) |
Enable / disable intra-node (non-peer-to-peer) communication.
| [in] | enable | Boolean flag to enable / disable intra-node (non peer-to-peer) communication |
Definition at line 298 of file comm_common.cpp.
References enable_intranode.
| 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.
| [in] | enable | Boolean 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().

| 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().


| void comm_free | ( | MsgHandle * | mh | ) |
Definition at line 252 of file comm_mpi.cpp.
References MsgHandle_s::custom, MsgHandle_s::datatype, MsgHandle_s::handle, host_free, MsgHandle_s::mem, MPI_CHECK, and MsgHandle_s::request.
Referenced by quda::LatticeField::createIPCComms(), quda::LatticeField::destroyComms(), quda::LatticeField::destroyIPCComms(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), and quda::cpuGaugeField::exchangeExtendedGhost().

| void comm_gather_gpuid | ( | int * | gpuid_recv_buf | ) |
Gather all GPU ids.
| [out] | gpuid_recv_buf | int 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().


| void comm_gather_hostname | ( | char * | hostname_recv_buf | ) |
Gather all hostnames.
| [out] | hostname_recv_buf | char 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().


| 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().


| bool comm_gdr_enabled | ( | ) |
Query if GPU Direct RDMA communication is enabled (global setting)
Definition at line 611 of file comm_common.cpp.
References getenv(), and strcmp().
Referenced by comm_peer2peer_init(), quda::cudaGaugeField::commsComplete(), quda::cudaColorSpinorField::commsQuery(), quda::cudaColorSpinorField::commsWait(), quda::LatticeField::createComms(), quda::DslashCoarsePolicyTune::DslashCoarsePolicyTune(), anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::DslashPolicyTune(), quda::cudaGaugeField::exchangeExtendedGhost(), quda::cudaGaugeField::exchangeGhost(), quda::cudaColorSpinorField::exchangeGhost(), quda::cudaGaugeField::injectGhost(), quda::cudaGaugeField::recvStart(), quda::cudaColorSpinorField::recvStart(), quda::cudaGaugeField::sendStart(), and quda::cudaColorSpinorField::sendStart().


| 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().

| char* comm_hostname | ( | void | ) |
Definition at line 58 of file comm_common.cpp.
Referenced by comm_gather_hostname(), comm_init(), and comm_peer2peer_init().

| void comm_init | ( | int | ndim, |
| const int * | dims, | ||
| QudaCommsMap | rank_from_coords, | ||
| void * | map_data | ||
| ) |
Definition at line 61 of file comm_mpi.cpp.
References comm_create_topology(), comm_dim(), comm_dim_partitioned(), comm_gather_hostname(), comm_hostname(), comm_peer2peer_init(), comm_rank(), comm_set_default_topology(), comm_size(), errorQuda, getenv(), gpuid, host_free, fused_exterior_ndeg_tm_dslash_cuda_gen::i, initialized, MPI_CHECK, ndim, partition_string, printf(), rank, safe_malloc, size, snprintf(), strcmp(), strncmp(), and topology_string.
Referenced by initCommsGridQuda().


Query if intra-node (non-peer-to-peer) communication is enabled in a given dimension and direction
| dir | Direction (0 - backwards, 1 forwards) |
| dim | Dimension (0-3) |
Definition at line 294 of file comm_common.cpp.
References dim, enable_intranode, and intranode_enabled.
Definition at line 302 of file comm_common.cpp.
References Topology_s::ndim.
Referenced by comm_declare_receive_displaced(), comm_declare_send_displaced(), comm_declare_strided_receive_displaced(), and comm_declare_strided_send_displaced().

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().


| int comm_partitioned | ( | ) |
Loop over comm_dim_partitioned(dim) for all comms dimensions.
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()().


Query if peer-to-peer communication is enabled
| dir | Direction (0 - backwards, 1 forwards) |
| dim | Dimension (0-3) |
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().

| int comm_peer2peer_enabled_global | ( | ) |
Query what peer-to-peer communication is enabled globally
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().


| void comm_peer2peer_init | ( | const char * | hostname_recv_buf | ) |
Enabled peer-to-peer communication.
| hostname_buf | Array 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().


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().


| int comm_rank | ( | void | ) |
Definition at line 120 of file comm_mpi.cpp.
References rank.
Referenced by quda::broadcastTuneCache(), comm_create_topology(), comm_gather_gpuid(), comm_gather_hostname(), comm_gdr_blacklist(), comm_init(), comm_peer2peer_init(), getRankVerbosity(), hisq_force_init(), quda::loadTuneCache(), quda::RNG::RNG(), quda::saveProfile(), quda::saveTuneCache(), and quda::tuneLaunch().

Definition at line 337 of file comm_common.cpp.
References comm_coords(), comm_dims(), comm_rank_from_coords(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, mod(), Topology_s::ndim, and QUDA_MAX_DIM.
Referenced by comm_declare_receive_displaced(), comm_declare_send_displaced(), comm_declare_strided_receive_displaced(), comm_declare_strided_send_displaced(), and comm_set_neighbor_ranks().


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().


| 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().

| 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().


| int comm_size | ( | void | ) |
Definition at line 126 of file comm_mpi.cpp.
References size.
Referenced by comm_gather_gpuid(), comm_gather_hostname(), comm_init(), comm_peer2peer_init(), quda::compareSpinor(), computeGaugeFixingOVRQuda(), quda::LatticeField::createIPCComms(), quda::blas::HeavyQuarkResidualNorm(), quda::blas::HeavyQuarkResidualNormCpu(), hisq_force_test(), main(), TEST(), and quda::blas::xpyHeavyQuarkResidualNorm().

| void comm_start | ( | MsgHandle * | mh | ) |
Definition at line 260 of file comm_mpi.cpp.
References MsgHandle_s::handle, MPI_CHECK, MPI_Start(), QMP_CHECK, and MsgHandle_s::request.
Referenced by quda::LatticeField::createIPCComms(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), quda::cpuGaugeField::exchangeExtendedGhost(), quda::cudaGaugeField::recvStart(), quda::cudaColorSpinorField::recvStart(), quda::cudaGaugeField::sendStart(), and quda::cudaColorSpinorField::sendStart().


| void comm_wait | ( | MsgHandle * | mh | ) |
Definition at line 266 of file comm_mpi.cpp.
References MsgHandle_s::handle, MPI_CHECK, MPI_Wait(), QMP_CHECK, and MsgHandle_s::request.
Referenced by quda::cudaGaugeField::commsComplete(), quda::cudaColorSpinorField::commsWait(), quda::LatticeField::createIPCComms(), quda::GaugeField::exchange(), quda::ColorSpinorField::exchange(), and quda::cpuGaugeField::exchangeExtendedGhost().


| bool commAsyncReduction | ( | ) |
Definition at line 684 of file comm_common.cpp.
References asyncReduce.
Referenced by quda::blas::caxpyXmazMR(), quda::ReduceArg< T >::ReduceArg(), and reduceLaunch().

| void commAsyncReductionSet | ( | bool | global_reduce | ) |
Definition at line 686 of file comm_common.cpp.
References asyncReduce.
Referenced by quda::MR::operator()().

Definition at line 672 of file comm_common.cpp.
References comm_coord().
Referenced by applyGaugeFieldScaling(), createSiteLinkCPU(), and quda::GCR::operator()().


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().


Definition at line 674 of file comm_common.cpp.
References comm_dim_partitioned().
Referenced by quda::cudaColorSpinorField::commsQuery(), quda::cudaColorSpinorField::commsWait(), createCloverQuda(), quda::LatticeField::createComms(), quda::cudaColorSpinorField::createComms(), quda::LatticeField::destroyComms(), initQudaMemory(), loadGaugeQuda(), quda::cudaColorSpinorField::recvStart(), quda::cudaColorSpinorField::scatter(), quda::cudaColorSpinorField::scatterExtended(), quda::cudaColorSpinorField::sendStart(), quda::shiftColorSpinorField(), quda::ShiftColorSpinorFieldArg< Output, Input >::ShiftColorSpinorFieldArg(), and updateR().


| 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().


| 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().


| bool commGlobalReduction | ( | ) |
Definition at line 680 of file comm_common.cpp.
References globalReduce.
Referenced by quda::tuneLaunch().

| 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()().

| 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().


Definition at line 667 of file comm_common.cpp.
References comm_allreduce_array(), globalReduce, len, and sum().
Referenced by quda::blas::cDotProduct(), quda::blas::cDotProductCopy(), quda::blas::cDotProductCpu(), quda::blas::hDotProduct(), quda::blas::hDotProduct_Anorm(), quda::blas::HeavyQuarkResidualNormCpu(), quda::blas::reDotProduct(), reduceCuda(), and mixed::reduceCuda().


| void reduceMaxDouble | ( | double & | ) |
Definition at line 663 of file comm_common.cpp.
References comm_allreduce_max().
Referenced by quda::maxGauge().


1.8.14