QUDA  v1.1.0
A library for QCD on GPUs
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
quda::CloverField Class Reference

#include <clover_field.h>

+ Inheritance diagram for quda::CloverField:

Public Types

using param_type = CloverFieldParam
 

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
 
double * TrLog () const
 
QudaCloverFieldOrder Order () const
 
size_t Bytes () const
 
size_t NormBytes () const
 
size_t TotalBytes () const
 
int Ncolor () const
 
int Nspin () const
 
double Csw () const
 
double Coeff () 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...
 
double norm1 (bool inverse=false) const
 Compute the L1 norm of the field. More...
 
double norm2 (bool inverse=false) const
 Compute the L2 norm squared of the field. More...
 
double abs_max (bool inverse=false) const
 Compute the absolute maximum of the field (Linfinity norm) More...
 
double abs_min (bool inverse=false) const
 Compute the absolute minimum of the field. More...
 
virtual int full_dim (int d) const
 
- 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, bool bidir=true)
 
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 int * X () const
 
size_t Volume () const
 
size_t VolumeCB () const
 
size_t LocalVolume () const
 
size_t LocalVolumeCB () const
 
const int * SurfaceCB () const
 
int SurfaceCB (const int i) const
 
size_t Stride () const
 
int Pad () const
 
const int * R () const
 
QudaGhostExchange GhostExchange () const
 
QudaPrecision Precision () const
 
QudaPrecision GhostPrecision () const
 
double Scale () const
 
void Scale (double scale_)
 Set the scale factor for a fixed-point field. More...
 
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)
 
void * myFace_h (int dir, int dim) const
 Return pointer to the local pinned my_face buffer in a given direction and dimension. More...
 
void * myFace_hd (int dir, int dim) const
 Return pointer to the local mapped my_face buffer in a given direction and dimension. More...
 
void * myFace_d (int dir, int dim) const
 Return pointer to the device send buffer in a given direction and dimension. More...
 
void * remoteFace_d (int dir, int dim) const
 Return base pointer to a remote device buffer for direct sending in a given direction and dimension. Since this is a base pointer, one still needs to take care of offsetting to the correct point for each direction/dimension. More...
 
void * remoteFace_r () const
 Return base pointer to the ghost recv buffer. Since this is a base pointer, one still needs to take care of offsetting to the correct point for each direction/dimension. More...
 
virtual void gather (int nFace, int dagger, int dir, qudaStream_t *stream_p=NULL)
 
virtual void commsStart (int nFace, int dir, int dagger=0, qudaStream_t *stream_p=NULL, bool gdr_send=false, bool gdr_recv=true)
 
virtual int commsQuery (int nFace, int dir, int dagger=0, qudaStream_t *stream_p=NULL, bool gdr_send=false, bool gdr_recv=true)
 
virtual void commsWait (int nFace, int dir, int dagger=0, qudaStream_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
 
const char * AuxString () const
 
virtual void backup () const
 Backs up the LatticeField. More...
 
virtual void restore () const
 Restores the LatticeField. More...
 
virtual void prefetch (QudaFieldLocation mem_space, qudaStream_t stream=0) const
 If managed memory and prefetch is enabled, prefetch all relevant memory fields to the current device or to the CPU. More...
 
virtual void copy_to_buffer (void *buffer) const =0
 Copy all contents of the field to a host buffer. More...
 
virtual void copy_from_buffer (void *buffer)=0
 Copy all contents of the field from a host buffer to this field. More...
 
- Public Member Functions inherited from quda::Object
 Object ()
 
virtual ~Object ()
 

Static Public Member Functions

static CloverFieldCreate (const CloverFieldParam &param)
 
- 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)
 

Protected Attributes

size_t bytes
 
size_t norm_bytes
 
size_t length
 
size_t real_length
 
int nColor
 
int nSpin
 
void * clover
 
void * norm
 
void * cloverInv
 
void * invNorm
 
double csw
 
double coeff
 
bool twisted
 
double mu2
 
double rho
 
QudaCloverFieldOrder order
 
QudaFieldCreate create
 
double trlog [2]
 
- Protected Attributes inherited from quda::LatticeField
size_t volume
 
size_t volumeCB
 
size_t localVolume
 
size_t localVolumeCB
 
size_t 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
 
QudaPrecision ghost_precision
 
bool ghost_precision_reset
 
double scale
 
QudaSiteSubset siteSubset
 
QudaGhostExchange ghostExchange
 
int nDimComms
 
size_t ghost_bytes
 
size_t ghost_bytes_old
 
size_t ghost_face_bytes [QUDA_MAX_DIM]
 
size_t ghost_face_bytes_aligned [QUDA_MAX_DIM]
 
size_t ghost_offset [QUDA_MAX_DIM][2]
 
void * my_face_h [2]
 
void * my_face_hd [2]
 
void * my_face_d [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_d [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]
 
char aux_string [TuneKey::aux_n]
 
QudaMemoryType mem_type
 
char * backup_h
 
char * backup_norm_h
 
bool backed_up
 

Additional Inherited Members

- 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 ()
 
void precisionCheck ()
 
- 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_send_buffer_h [2] = {nullptr, nullptr}
 
static void * ghost_pinned_recv_buffer_h [2] = {nullptr, nullptr}
 
static void * ghost_pinned_send_buffer_hd [2] = {nullptr, nullptr}
 
static void * ghost_pinned_recv_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 106 of file clover_field.h.

Member Typedef Documentation

◆ param_type

Define the parameter type for this field.

Definition at line 146 of file clover_field.h.

Constructor & Destructor Documentation

◆ CloverField()

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

Definition at line 39 of file clover_field.cpp.

◆ ~CloverField()

quda::CloverField::~CloverField ( )
virtual

Definition at line 63 of file clover_field.cpp.

Member Function Documentation

◆ abs_max()

double quda::CloverField::abs_max ( bool  inverse = false) const

Compute the absolute maximum of the field (Linfinity norm)

Returns
Absolute maximum value

◆ abs_min()

double quda::CloverField::abs_min ( bool  inverse = false) const

Compute the absolute minimum of the field.

Returns
Absolute minimum value

◆ Bytes()

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

Definition at line 167 of file clover_field.h.

◆ Coeff()

double quda::CloverField::Coeff ( ) const
inline
Returns
Clover coefficient (explicitly includes kappa)

Definition at line 202 of file clover_field.h.

◆ Create()

CloverField * quda::CloverField::Create ( const CloverFieldParam param)
static

Definition at line 65 of file clover_field.cpp.

◆ Csw()

double quda::CloverField::Csw ( ) const
inline
Returns
Csw coefficient (does not include kappa)

Definition at line 197 of file clover_field.h.

◆ full_dim()

virtual int quda::CloverField::full_dim ( int  d) const
inlinevirtual
Returns
The pointer to the full lattice-dimension array

Implements quda::LatticeField.

Definition at line 250 of file clover_field.h.

◆ isNative()

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

Implements quda::LatticeField.

Definition at line 152 of file clover_field.h.

◆ Mu2()

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

Definition at line 212 of file clover_field.h.

◆ Ncolor()

int quda::CloverField::Ncolor ( ) const
inline
Returns
Number of colors

Definition at line 187 of file clover_field.h.

◆ Norm() [1/2]

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

Definition at line 139 of file clover_field.h.

◆ Norm() [2/2]

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

Definition at line 141 of file clover_field.h.

◆ norm1()

double quda::CloverField::norm1 ( bool  inverse = false) const

Compute the L1 norm of the field.

Returns
L1 norm

◆ norm2()

double quda::CloverField::norm2 ( bool  inverse = false) const

Compute the L2 norm squared of the field.

Returns
L2 norm squared

◆ NormBytes()

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

Definition at line 172 of file clover_field.h.

◆ Nspin()

int quda::CloverField::Nspin ( ) const
inline
Returns
Number of spins

Definition at line 192 of file clover_field.h.

◆ Order()

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

Definition at line 162 of file clover_field.h.

◆ 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 218 of file clover_field.h.

◆ 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 80 of file clover_field.cpp.

◆ TotalBytes()

size_t quda::CloverField::TotalBytes ( ) const
inline
Returns
The total bytes of allocation

Definition at line 177 of file clover_field.h.

◆ TrLog()

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

Definition at line 157 of file clover_field.h.

◆ Twisted()

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

Definition at line 207 of file clover_field.h.

◆ V() [1/2]

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

Definition at line 138 of file clover_field.h.

◆ V() [2/2]

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

Definition at line 140 of file clover_field.h.

Member Data Documentation

◆ bytes

size_t quda::CloverField::bytes
protected

Definition at line 109 of file clover_field.h.

◆ clover

void* quda::CloverField::clover
protected

Definition at line 116 of file clover_field.h.

◆ cloverInv

void* quda::CloverField::cloverInv
protected

Definition at line 118 of file clover_field.h.

◆ coeff

double quda::CloverField::coeff
protected

Definition at line 122 of file clover_field.h.

◆ create

QudaFieldCreate quda::CloverField::create
protected

Definition at line 128 of file clover_field.h.

◆ csw

double quda::CloverField::csw
protected

Definition at line 121 of file clover_field.h.

◆ invNorm

void* quda::CloverField::invNorm
protected

Definition at line 119 of file clover_field.h.

◆ length

size_t quda::CloverField::length
protected

Definition at line 111 of file clover_field.h.

◆ mu2

double quda::CloverField::mu2
protected

Definition at line 124 of file clover_field.h.

◆ nColor

int quda::CloverField::nColor
protected

Definition at line 113 of file clover_field.h.

◆ norm

void* quda::CloverField::norm
protected

Definition at line 117 of file clover_field.h.

◆ norm_bytes

size_t quda::CloverField::norm_bytes
protected

Definition at line 110 of file clover_field.h.

◆ nSpin

int quda::CloverField::nSpin
protected

Definition at line 114 of file clover_field.h.

◆ order

QudaCloverFieldOrder quda::CloverField::order
protected

Definition at line 127 of file clover_field.h.

◆ real_length

size_t quda::CloverField::real_length
protected

Definition at line 112 of file clover_field.h.

◆ rho

double quda::CloverField::rho
protected

Definition at line 125 of file clover_field.h.

◆ trlog

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

Definition at line 130 of file clover_field.h.

◆ twisted

bool quda::CloverField::twisted
protected

Definition at line 123 of file clover_field.h.


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