QUDA  0.9.0
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
dslash_policy.cuh File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DslashCommsPattern
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashPolicyImp
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashBasic
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashPthreads
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedExterior
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashGDR
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedGDR
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashGDRRecv
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedGDRRecv
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashAsync
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedExteriorAsync
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPack
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPack
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPackGDRRecv
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPackGDRRecv
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashZeroCopy
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopy
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashNC
 
struct  anonymous_namespace{dslash_policy.cuh}::DslashFactory
 
class  anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune
 

Namespaces

 anonymous_namespace{dslash_policy.cuh}
 

Macros

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

Typedefs

typedef std::map< TuneKey, TuneParam > map
 

Enumerations

enum  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy {
  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_GDR_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_GDR_DSLASH,
  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_GDR_RECV_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_GDR_RECV_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_ZERO_COPY_PACK_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_PACK_DSLASH,
  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_ZERO_COPY_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_ZERO_COPY_PACK_GDR_RECV_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_ZERO_COPY_PACK_GDR_RECV_DSLASH,
  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_DSLASH_ASYNC, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_FUSED_DSLASH_ASYNC, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_PTHREADS_DSLASH, anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_DSLASH_NC,
  anonymous_namespace{dslash_policy.cuh}::QudaDslashPolicy::QUDA_DSLASH_POLICY_DISABLED
}
 
enum  anonymous_namespace{dslash_policy.cuh}::QudaP2PPolicy { anonymous_namespace{dslash_policy.cuh}::QudaP2PPolicy::QUDA_P2P_DEFAULT, anonymous_namespace{dslash_policy.cuh}::QudaP2PPolicy::QUDA_P2P_COPY_ENGINE, anonymous_namespace{dslash_policy.cuh}::QudaP2PPolicy::QUDA_P2P_REMOTE_WRITE, anonymous_namespace{dslash_policy.cuh}::QudaP2PPolicy::QUDA_P2P_POLICY_DISABLED }
 

Functions

const mapgetTuneCache ()
 
void disableProfileCount ()
 
void enableProfileCount ()
 
void setPolicyTuning (bool)
 
void setFusedParam (DslashParam &param, DslashCuda &dslash, const int *faceVolumeCB)
 
void anonymous_namespace{dslash_policy.cuh}::issueRecv (cudaColorSpinorField &input, const DslashCuda &dslash, cudaStream_t *stream, bool gdr)
 This helper function simply posts all receives in all directions. More...
 
void anonymous_namespace{dslash_policy.cuh}::issuePack (cudaColorSpinorField &in, const DslashCuda &dslash, int parity, MemoryLocation location, int packIndex)
 This helper function simply posts the packing kernel needed for halo exchange. More...
 
void anonymous_namespace{dslash_policy.cuh}::issueGather (cudaColorSpinorField &in, const DslashCuda &dslash)
 This helper function simply posts the device-host memory copies of all halos in all dimensions and directions. More...
 
template<typename T >
int anonymous_namespace{dslash_policy.cuh}::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...
 
bool anonymous_namespace{dslash_policy.cuh}::commsComplete (cudaColorSpinorField &in, const DslashCuda &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 anonymous_namespace{dslash_policy.cuh}::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...
 
void anonymous_namespace{dslash_policy.cuh}::setMappedGhost (DslashCuda &dslash, cudaColorSpinorField &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...
 
static std::vector< QudaDslashPolicy > anonymous_namespace{dslash_policy.cuh}::policies (static_cast< int >(QudaDslashPolicy::QUDA_DSLASH_POLICY_DISABLED), QudaDslashPolicy::QUDA_DSLASH_POLICY_DISABLED)
 
static std::vector< QudaP2PPolicy > anonymous_namespace{dslash_policy.cuh}::p2p_policies (static_cast< int >(QudaP2PPolicy::QUDA_P2P_POLICY_DISABLED), QudaP2PPolicy::QUDA_P2P_POLICY_DISABLED)
 
void anonymous_namespace{dslash_policy.cuh}::enable_policy (QudaDslashPolicy p)
 
void anonymous_namespace{dslash_policy.cuh}::disable_policy (QudaDslashPolicy p)
 

Variables

static cudaColorSpinorField * inSpinor
 
static bool dslash_pack_compute = true
 
static bool dslash_interior_compute = true
 
static bool dslash_exterior_compute = true
 
static bool dslash_comms = true
 
static bool dslash_copy = true
 
static bool anonymous_namespace{dslash_policy.cuh}::dslash_init = false
 
static int anonymous_namespace{dslash_policy.cuh}::config = 0
 
static int anonymous_namespace{dslash_policy.cuh}::first_active_policy =static_cast<int>(QudaDslashPolicy::QUDA_DSLASH_POLICY_DISABLED)
 
static int anonymous_namespace{dslash_policy.cuh}::first_active_p2p_policy =static_cast<int>(QudaP2PPolicy::QUDA_P2P_POLICY_DISABLED)
 

Macro Definition Documentation

◆ CUDA_CALL

#define CUDA_CALL (   call)    call

Definition at line 1030 of file dslash_policy.cuh.

◆ PROFILE

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

Typedef Documentation

◆ map

typedef std::map<TuneKey, TuneParam> map

Definition at line 4 of file dslash_policy.cuh.

Function Documentation

◆ disableProfileCount()

void disableProfileCount ( )

◆ enableProfileCount()

void enableProfileCount ( )

◆ getTuneCache()

const map& getTuneCache ( )

◆ setFusedParam()

void setFusedParam ( DslashParam param,
DslashCuda dslash,
const int faceVolumeCB 
)
inline

◆ setPolicyTuning()

void setPolicyTuning ( bool  )

Variable Documentation

◆ dslash_comms

bool dslash_comms = true
static

◆ dslash_copy

bool dslash_copy = true
static

◆ dslash_exterior_compute

bool dslash_exterior_compute = true
static

◆ dslash_interior_compute

bool dslash_interior_compute = true
static

◆ dslash_pack_compute

bool dslash_pack_compute = true
static

◆ inSpinor

cudaColorSpinorField* inSpinor
static

Definition at line 1 of file dslash_policy.cuh.