QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Namespaces | Macros | Enumerations | Functions | Variables
dslash_policy.cuh File Reference
#include <tune_quda.h>
Include dependency graph for dslash_policy.cuh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  quda::dslash::DslashCommsPattern
 
struct  quda::dslash::DslashPolicyImp< Dslash >
 
struct  quda::dslash::DslashBasic< Dslash >
 
struct  quda::dslash::DslashFusedExterior< Dslash >
 
struct  quda::dslash::DslashGDR< Dslash >
 
struct  quda::dslash::DslashFusedGDR< Dslash >
 
struct  quda::dslash::DslashGDRRecv< Dslash >
 
struct  quda::dslash::DslashFusedGDRRecv< Dslash >
 
struct  quda::dslash::DslashAsync< Dslash >
 
struct  quda::dslash::DslashFusedExteriorAsync< Dslash >
 
struct  quda::dslash::DslashZeroCopyPack< Dslash >
 
struct  quda::dslash::DslashFusedZeroCopyPack< Dslash >
 
struct  quda::dslash::DslashZeroCopyPackGDRRecv< Dslash >
 
struct  quda::dslash::DslashFusedZeroCopyPackGDRRecv< Dslash >
 
struct  quda::dslash::DslashZeroCopy< Dslash >
 
struct  quda::dslash::DslashFusedZeroCopy< Dslash >
 
struct  quda::dslash::DslashNC< Dslash >
 
struct  quda::dslash::DslashFactory< Dslash >
 
class  quda::dslash::DslashPolicyTune< Dslash >
 

Namespaces

 quda
 
 quda::dslash
 

Macros

#define PROFILE(f, profile, idx)   f;
 
#define CUDA_CALL(call)   call
 

Enumerations

enum  quda::dslash::QudaDslashPolicy {
  quda::dslash::QudaDslashPolicy::QUDA_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_GDR_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_GDR_DSLASH,
  quda::dslash::QudaDslashPolicy::QUDA_GDR_RECV_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_GDR_RECV_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_ZERO_COPY_PACK_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_PACK_DSLASH,
  quda::dslash::QudaDslashPolicy::QUDA_ZERO_COPY_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_ZERO_COPY_PACK_GDR_RECV_DSLASH, quda::dslash::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_PACK_GDR_RECV_DSLASH,
  quda::dslash::QudaDslashPolicy::QUDA_DSLASH_ASYNC, quda::dslash::QudaDslashPolicy::QUDA_FUSED_DSLASH_ASYNC, quda::dslash::QudaDslashPolicy::QUDA_DSLASH_NC, quda::dslash::QudaDslashPolicy::QUDA_DSLASH_POLICY_DISABLED
}
 
enum  quda::dslash::QudaP2PPolicy { quda::dslash::QudaP2PPolicy::QUDA_P2P_DEFAULT, quda::dslash::QudaP2PPolicy::QUDA_P2P_COPY_ENGINE, quda::dslash::QudaP2PPolicy::QUDA_P2P_REMOTE_WRITE, quda::dslash::QudaP2PPolicy::QUDA_P2P_POLICY_DISABLED }
 

Functions

template<typename Arg , typename Dslash >
void quda::dslash::setFusedParam (Arg &param, Dslash &dslash, const int *faceVolumeCB)
 
template<typename Dslash >
void quda::dslash::issueRecv (cudaColorSpinorField &input, const Dslash &dslash, cudaStream_t *stream, bool gdr)
 This helper function simply posts all receives in all directions. More...
 
template<typename Dslash >
void quda::dslash::issuePack (cudaColorSpinorField &in, const Dslash &dslash, int parity, MemoryLocation location, int packIndex)
 This helper function simply posts the packing kernel needed for halo exchange. More...
 
template<typename Dslash >
void quda::dslash::issueGather (cudaColorSpinorField &in, const Dslash &dslash)
 This helper function simply posts the device-host memory copies of all halos in all dimensions and directions. More...
 
template<typename T >
int quda::dslash::getStreamIndex (const T &dslashParam)
 Returns a stream index for posting the pack/scatters to. We desire a stream index that is not being used for peer-to-peer communication. This is used by the fused halo dslash kernels where we post all scatters to the same stream so we only have a single event to wait on before the exterior kernel is applied, and by the zero-copy dslash kernels where we want to post the packing kernel to an unused stream. More...
 
template<typename Dslash >
bool quda::dslash::commsComplete (cudaColorSpinorField &in, const Dslash &dslash, int dim, int dir, bool gdr_send, bool gdr_recv, bool zero_copy_recv, bool async, int scatterIndex=-1)
 Wrapper for querying if communication is finished in the dslash, and if it is take the appropriate action: More...
 
template<typename T >
void quda::dslash::completeDslash (const ColorSpinorField &in, const T &dslashParam)
 Ensure that the dslash is complete. By construction, the dslash will have completed (or is in flight) on this process, however, we must also ensure that no local work begins until any communication in flight from this process to another has completed. This prevents a race condition where we could start updating the local buffers on a subsequent computation before we have finished sending. More...
 
template<typename Dslash >
void quda::dslash::setMappedGhost (Dslash &dslash, ColorSpinorField &in, bool to_mapped)
 Set the ghosts to the mapped CPU ghost buffer, or unsets if already set. Note this must not be called until after the interior dslash has been called, since sets the peer-to-peer ghost pointers, and this need to be done without the mapped ghost enabled. More...
 
void quda::dslash::enable_policy (QudaDslashPolicy p)
 
void quda::dslash::disable_policy (QudaDslashPolicy p)
 

Variables

int quda::dslash::it = 0
 
cudaEvent_t quda::dslash::packEnd [2]
 
cudaEvent_t quda::dslash::gatherStart [Nstream]
 
cudaEvent_t quda::dslash::gatherEnd [Nstream]
 
cudaEvent_t quda::dslash::scatterStart [Nstream]
 
cudaEvent_t quda::dslash::scatterEnd [Nstream]
 
cudaEvent_t quda::dslash::dslashStart [2]
 
Worker * quda::dslash::aux_worker
 
bool quda::dslash::dslash_pack_compute
 
bool quda::dslash::dslash_interior_compute
 
bool quda::dslash::dslash_exterior_compute
 
bool quda::dslash::dslash_comms
 
bool quda::dslash::dslash_copy
 
static cudaColorSpinorField * quda::dslash::inSpinor
 
bool quda::dslash::dslash_policy_init
 
int quda::dslash::first_active_policy
 
int quda::dslash::first_active_p2p_policy
 
std::vector< QudaDslashPolicy > quda::dslash::policies
 
char quda::dslash::policy_string [TuneKey::aux_n]
 
std::vector< QudaP2PPolicy > quda::dslash::p2p_policies
 

Macro Definition Documentation

◆ CUDA_CALL

#define CUDA_CALL (   call)    call

Definition at line 872 of file dslash_policy.cuh.

◆ PROFILE

#define PROFILE (   f,
  profile,
  idx 
)    f;