QUDA  0.9.0
Public Member Functions | Protected Attributes | List of all members
quda::CloverField Class Reference

#include <clover_field.h>

Inheritance diagram for quda::CloverField:
Inheritance graph
[legend]
Collaboration diagram for quda::CloverField:
Collaboration graph
[legend]

Public Member Functions

 CloverField (const CloverFieldParam &param)
 
virtual ~CloverField ()
 
void * V (bool inverse=false)
 
void * Norm (bool inverse=false)
 
const void * V (bool inverse=false) const
 
const void * Norm (bool inverse=false) const
 
bool isNative () const
 
doubleTrLog () const
 
QudaCloverFieldOrder Order () const
 
size_t Bytes () const
 
size_t NormBytes () const
 
bool Csw () const
 
bool Twisted () const
 
double Mu2 () const
 
double Rho () const
 
void setRho (double rho)
 Bakes in the rho factor into the clover field, (for real diagonal additive Hasenbusch), e.g., A + rho. More...
 
- Public Member Functions inherited from quda::LatticeField
 LatticeField (const LatticeFieldParam &param)
 
 LatticeField (const LatticeField &field)
 
virtual ~LatticeField ()
 
void allocateGhostBuffer (size_t ghost_bytes) const
 Allocate the static ghost buffers. More...
 
void createComms (bool no_comms_fill=false)
 
void destroyComms ()
 
void createIPCComms ()
 
bool ipcCopyComplete (int dir, int dim)
 
bool ipcRemoteCopyComplete (int dir, int dim)
 
const cudaEvent_t & getIPCCopyEvent (int dir, int dim) const
 
const cudaEvent_t & getIPCRemoteCopyEvent (int dir, int dim) const
 
int Ndim () const
 
const intX () const
 
int Volume () const
 
int VolumeCB () const
 
const intSurfaceCB () const
 
int SurfaceCB (const int i) const
 
int Stride () const
 
int Pad () const
 
const intR () const
 
QudaGhostExchange GhostExchange () const
 
QudaPrecision Precision () const
 
virtual QudaSiteSubset SiteSubset () const
 
virtual QudaMemoryType MemType () const
 
int Nvec () const
 
QudaFieldLocation Location () const
 
size_t GBytes () const
 
void checkField (const LatticeField &a) const
 
virtual void read (char *filename)
 
virtual void write (char *filename)
 
virtual void gather (int nFace, int dagger, int dir, cudaStream_t *stream_p=NULL)
 
virtual void commsStart (int nFace, int dir, int dagger=0, cudaStream_t *stream_p=NULL, bool gdr_send=false, bool gdr_recv=true)
 
virtual int commsQuery (int nFace, int dir, int dagger=0, cudaStream_t *stream_p=NULL, bool gdr_send=false, bool gdr_recv=true)
 
virtual void commsWait (int nFace, int dir, int dagger=0, cudaStream_t *stream_p=NULL, bool gdr_send=false, bool gdr_recv=true)
 
virtual void scatter (int nFace, int dagger, int dir)
 
const char * VolString () const
 
virtual void backup () const
 Backs up the LatticeField. More...
 
virtual void restore ()
 Restores the cpuGaugeField. More...
 
- Public Member Functions inherited from quda::Object
 Object ()
 
virtual ~Object ()
 

Protected Attributes

size_t bytes
 
size_t norm_bytes
 
int length
 
int real_length
 
int nColor
 
int nSpin
 
void * clover
 
void * norm
 
void * cloverInv
 
void * invNorm
 
double csw
 
bool twisted
 
double mu2
 
double rho
 
QudaCloverFieldOrder order
 
QudaFieldCreate create
 
double trlog [2]
 
- Protected Attributes inherited from quda::LatticeField
int volume
 
int volumeCB
 
int stride
 
int pad
 
size_t total_bytes
 
int nDim
 
int x [QUDA_MAX_DIM]
 
int surface [QUDA_MAX_DIM]
 
int surfaceCB [QUDA_MAX_DIM]
 
int r [QUDA_MAX_DIM]
 
QudaPrecision precision
 
QudaSiteSubset siteSubset
 
QudaGhostExchange ghostExchange
 
int nDimComms
 
size_t ghost_bytes
 
size_t ghost_face_bytes [QUDA_MAX_DIM]
 
int ghostOffset [QUDA_MAX_DIM][2]
 
int ghostNormOffset [QUDA_MAX_DIM][2]
 
void * my_face_h [2]
 
void * my_face_hd [2]
 
void * my_face_dim_dir_h [2][QUDA_MAX_DIM][2]
 
void * my_face_dim_dir_hd [2][QUDA_MAX_DIM][2]
 
void * my_face_dim_dir_d [2][QUDA_MAX_DIM][2]
 
void * from_face_h [2]
 
void * from_face_hd [2]
 
void * from_face_dim_dir_h [2][QUDA_MAX_DIM][2]
 
void * from_face_dim_dir_hd [2][QUDA_MAX_DIM][2]
 
void * from_face_dim_dir_d [2][QUDA_MAX_DIM][2]
 
MsgHandlemh_recv_fwd [2][QUDA_MAX_DIM]
 
MsgHandlemh_recv_back [2][QUDA_MAX_DIM]
 
MsgHandlemh_send_fwd [2][QUDA_MAX_DIM]
 
MsgHandlemh_send_back [2][QUDA_MAX_DIM]
 
MsgHandlemh_recv_rdma_fwd [2][QUDA_MAX_DIM]
 
MsgHandlemh_recv_rdma_back [2][QUDA_MAX_DIM]
 
MsgHandlemh_send_rdma_fwd [2][QUDA_MAX_DIM]
 
MsgHandlemh_send_rdma_back [2][QUDA_MAX_DIM]
 
bool initComms
 
char vol_string [TuneKey::volume_n]
 
QudaMemoryType mem_type
 
char * backup_h
 
char * backup_norm_h
 
bool backed_up
 

Additional Inherited Members

- Static Public Member Functions inherited from quda::LatticeField
static void freeGhostBuffer (void)
 Free statically allocated ghost buffers. More...
 
static void destroyIPCComms ()
 
- Static Public Member Functions inherited from quda::Object
static void * operator new (std::size_t size)
 
static void operator delete (void *p)
 
static void * operator new[] (std::size_t size)
 
static void operator delete[] (void *p)
 
- Static Public Attributes inherited from quda::LatticeField
static int bufferIndex = 0
 
static bool ghost_field_reset = false
 
- Protected Member Functions inherited from quda::LatticeField
virtual void setTuningString ()
 
- Static Protected Attributes inherited from quda::LatticeField
static void * ghost_send_buffer_d [2] = {nullptr, nullptr}
 
static void * ghost_recv_buffer_d [2] = {nullptr, nullptr}
 
static void * ghost_pinned_buffer_h [2] = {nullptr, nullptr}
 
static void * ghost_pinned_buffer_hd [2] = {nullptr, nullptr}
 
static void * ghost_remote_send_buffer_d [2][QUDA_MAX_DIM][2]
 
static size_t ghostFaceBytes = 0
 
static bool initGhostFaceBuffer = false
 
static MsgHandlemh_send_p2p_fwd [2][QUDA_MAX_DIM] { }
 
static MsgHandlemh_send_p2p_back [2][QUDA_MAX_DIM] { }
 
static MsgHandlemh_recv_p2p_fwd [2][QUDA_MAX_DIM] { }
 
static MsgHandlemh_recv_p2p_back [2][QUDA_MAX_DIM] { }
 
static int buffer_send_p2p_fwd [2][QUDA_MAX_DIM] { }
 
static int buffer_recv_p2p_fwd [2][QUDA_MAX_DIM] { }
 
static int buffer_send_p2p_back [2][QUDA_MAX_DIM] { }
 
static int buffer_recv_p2p_back [2][QUDA_MAX_DIM] { }
 
static cudaEvent_t ipcCopyEvent [2][2][QUDA_MAX_DIM]
 
static cudaEvent_t ipcRemoteCopyEvent [2][2][QUDA_MAX_DIM]
 
static bool initIPCComms = false
 

Detailed Description

Definition at line 44 of file clover_field.h.

Constructor & Destructor Documentation

◆ CloverField()

quda::CloverField::CloverField ( const CloverFieldParam param)

Definition at line 37 of file clover_field.cpp.

◆ ~CloverField()

quda::CloverField::~CloverField ( )
virtual

Definition at line 61 of file clover_field.cpp.

Member Function Documentation

◆ Bytes()

size_t quda::CloverField::Bytes ( ) const
inline
Returns
The size of the fieldallocation

Definition at line 97 of file clover_field.h.

References bytes.

Referenced by quda::clover::Accessor< Float, nColor, nSpin, QUDA_PACKED_CLOVER_ORDER >::Accessor().

Here is the caller graph for this function:

◆ Csw()

bool quda::CloverField::Csw ( ) const
inline
Returns
Clover coefficient (usually includes kappa)

Definition at line 107 of file clover_field.h.

References csw.

Referenced by loadCloverQuda().

Here is the caller graph for this function:

◆ isNative()

bool quda::CloverField::isNative ( ) const
Returns
True if the field is stored in an internal field order for the given precision.

Definition at line 63 of file clover_field.cpp.

References order, quda::LatticeField::precision, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_CLOVER_ORDER, QUDA_FLOAT4_CLOVER_ORDER, QUDA_HALF_PRECISION, and QUDA_SINGLE_PRECISION.

◆ Mu2()

double quda::CloverField::Mu2 ( ) const
inline
Returns
mu^2 factor baked into inverse clover field (for twisted-clover inverse)

Definition at line 117 of file clover_field.h.

References mu2.

◆ Norm() [1/2]

void* quda::CloverField::Norm ( bool  inverse = false)
inline

Definition at line 74 of file clover_field.h.

References invNorm, and norm.

◆ Norm() [2/2]

const void* quda::CloverField::Norm ( bool  inverse = false) const
inline

Definition at line 76 of file clover_field.h.

References invNorm, and norm.

◆ NormBytes()

size_t quda::CloverField::NormBytes ( ) const
inline
Returns
The size of the norm allocation

Definition at line 102 of file clover_field.h.

References norm_bytes.

◆ Order()

QudaCloverFieldOrder quda::CloverField::Order ( ) const
inline
Returns
The order of the field

Definition at line 92 of file clover_field.h.

References order.

Referenced by quda::LatticeField::Nvec().

Here is the caller graph for this function:

◆ Rho()

double quda::CloverField::Rho ( ) const
inline
Returns
rho factor backed into the clover field, (for real diagonal additive Hasenbusch), e.g., A + rho

Definition at line 123 of file clover_field.h.

References rho.

◆ setRho()

void quda::CloverField::setRho ( double  rho)

Bakes in the rho factor into the clover field, (for real diagonal additive Hasenbusch), e.g., A + rho.

Definition at line 73 of file clover_field.cpp.

References rho.

Referenced by loadCloverQuda().

Here is the caller graph for this function:

◆ TrLog()

double* quda::CloverField::TrLog ( ) const
inline
Returns
Pointer to array storing trlog on each parity

Definition at line 87 of file clover_field.h.

References trlog.

Referenced by loadCloverQuda().

Here is the caller graph for this function:

◆ Twisted()

bool quda::CloverField::Twisted ( ) const
inline
Returns
If the clover field is associated with twisted-clover fermions

Definition at line 112 of file clover_field.h.

References twisted.

◆ V() [1/2]

void* quda::CloverField::V ( bool  inverse = false)
inline

◆ V() [2/2]

const void* quda::CloverField::V ( bool  inverse = false) const
inline

Definition at line 75 of file clover_field.h.

References clover, and cloverInv.

Member Data Documentation

◆ bytes

size_t quda::CloverField::bytes
protected

◆ clover

void* quda::CloverField::clover
protected

◆ cloverInv

void* quda::CloverField::cloverInv
protected

◆ create

QudaFieldCreate quda::CloverField::create
protected

◆ csw

double quda::CloverField::csw
protected

Definition at line 59 of file clover_field.h.

Referenced by Csw().

◆ invNorm

void* quda::CloverField::invNorm
protected

◆ length

int quda::CloverField::length
protected

Definition at line 49 of file clover_field.h.

◆ mu2

double quda::CloverField::mu2
protected

Definition at line 61 of file clover_field.h.

Referenced by quda::cudaCloverField::cudaCloverField(), and Mu2().

◆ nColor

int quda::CloverField::nColor
protected

Definition at line 51 of file clover_field.h.

◆ norm

void* quda::CloverField::norm
protected

◆ norm_bytes

size_t quda::CloverField::norm_bytes
protected

◆ nSpin

int quda::CloverField::nSpin
protected

Definition at line 52 of file clover_field.h.

◆ order

QudaCloverFieldOrder quda::CloverField::order
protected

Definition at line 64 of file clover_field.h.

Referenced by quda::cpuCloverField::cpuCloverField(), isNative(), and Order().

◆ real_length

int quda::CloverField::real_length
protected

Definition at line 50 of file clover_field.h.

◆ rho

double quda::CloverField::rho
protected

Definition at line 62 of file clover_field.h.

Referenced by Rho(), and setRho().

◆ trlog

double quda::CloverField::trlog[2]
mutableprotected

Definition at line 67 of file clover_field.h.

Referenced by TrLog().

◆ twisted

bool quda::CloverField::twisted
protected

Definition at line 60 of file clover_field.h.

Referenced by quda::cudaCloverField::cudaCloverField(), and Twisted().


The documentation for this class was generated from the following files: