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

#include <lattice_field.h>

+ Inheritance diagram for quda::LatticeField:

Public Member Functions

 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
 
virtual int full_dim (int d) const =0
 
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 bool isNative () const =0
 
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 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

static int bufferIndex = 0
 
static bool ghost_field_reset = false
 

Protected Member Functions

virtual void setTuningString ()
 
void precisionCheck ()
 

Protected Attributes

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
 

Static Protected Attributes

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 145 of file lattice_field.h.

Constructor & Destructor Documentation

◆ LatticeField() [1/2]

quda::LatticeField::LatticeField ( const LatticeFieldParam param)

Constructor for creating a LatticeField from a LatticeFieldParam

Parameters
paramContains the metadata for creating the LatticeField

Definition at line 61 of file lattice_field.cpp.

◆ LatticeField() [2/2]

quda::LatticeField::LatticeField ( const LatticeField field)

Constructor for creating a LatticeField from another LatticeField

Parameters
fieldInstance of LatticeField from which we are inheriting metadata

Definition at line 154 of file lattice_field.cpp.

◆ ~LatticeField()

quda::LatticeField::~LatticeField ( )
virtual

Destructor for LatticeField

Definition at line 226 of file lattice_field.cpp.

Member Function Documentation

◆ allocateGhostBuffer()

void quda::LatticeField::allocateGhostBuffer ( size_t  ghost_bytes) const

Allocate the static ghost buffers.

Parameters
[in]ghost_bytesSize of the ghost buffer to allocate

Definition at line 228 of file lattice_field.cpp.

◆ AuxString()

const char* quda::LatticeField::AuxString ( ) const
inline

Return the aux string used by the autotuner

Definition at line 696 of file lattice_field.h.

◆ backup()

virtual void quda::LatticeField::backup ( ) const
inlinevirtual

◆ checkField()

void quda::LatticeField::checkField ( const LatticeField a) const

Check that the metadata of *this and a are compatible

Parameters
aThe LatticeField to which we are comparing

Definition at line 653 of file lattice_field.cpp.

◆ commsQuery()

virtual int quda::LatticeField::commsQuery ( int  nFace,
int  dir,
int  dagger = 0,
qudaStream_t stream_p = NULL,
bool  gdr_send = false,
bool  gdr_recv = true 
)
inlinevirtual

Reimplemented in quda::cudaColorSpinorField.

Definition at line 681 of file lattice_field.h.

◆ commsStart()

virtual void quda::LatticeField::commsStart ( int  nFace,
int  dir,
int  dagger = 0,
qudaStream_t stream_p = NULL,
bool  gdr_send = false,
bool  gdr_recv = true 
)
inlinevirtual

Reimplemented in quda::cudaColorSpinorField.

Definition at line 677 of file lattice_field.h.

◆ commsWait()

virtual void quda::LatticeField::commsWait ( int  nFace,
int  dir,
int  dagger = 0,
qudaStream_t stream_p = NULL,
bool  gdr_send = false,
bool  gdr_recv = true 
)
inlinevirtual

Reimplemented in quda::cudaColorSpinorField.

Definition at line 685 of file lattice_field.h.

◆ copy_from_buffer()

virtual void quda::LatticeField::copy_from_buffer ( void *  buffer)
pure virtual

Copy all contents of the field from a host buffer to this field.

Parameters
[in]thehost buffer to copy from.
Currently `buffer` has to be a host pointer:
  passing in UVM or device pointer leads to undefined behavior. ***

Implemented in quda::cpuGaugeField, quda::cudaGaugeField, quda::cpuColorSpinorField, quda::cudaColorSpinorField, quda::cpuCloverField, and quda::cudaCloverField.

◆ copy_to_buffer()

virtual void quda::LatticeField::copy_to_buffer ( void *  buffer) const
pure virtual

Copy all contents of the field to a host buffer.

Parameters
[in]thehost buffer to copy to.
Currently `buffer` has to be a host pointer:
  passing in UVM or device pointer leads to undefined behavior. ***

Implemented in quda::cpuGaugeField, quda::cudaGaugeField, quda::cpuColorSpinorField, quda::cudaColorSpinorField, quda::cpuCloverField, and quda::cudaCloverField.

◆ createComms()

void quda::LatticeField::createComms ( bool  no_comms_fill = false,
bool  bidir = true 
)

Create the communication handlers (both host and device)

Parameters
[in]no_comms_fillWhether to allocate halo buffers for dimensions that are not partitioned
[in]bidirWhether to allocate communication buffers to allow for simultaneous bi-directional exchange. If false, then the forwards and backwards buffers will alias (saving memory).

Definition at line 312 of file lattice_field.cpp.

◆ createIPCComms()

void quda::LatticeField::createIPCComms ( )

Create the inter-process communication handlers

Definition at line 418 of file lattice_field.cpp.

◆ destroyComms()

void quda::LatticeField::destroyComms ( )

Destroy the communication handlers

Definition at line 386 of file lattice_field.cpp.

◆ destroyIPCComms()

void quda::LatticeField::destroyIPCComms ( )
static

Destroy the statically allocated inter-process communication handlers

Definition at line 572 of file lattice_field.cpp.

◆ freeGhostBuffer()

void quda::LatticeField::freeGhostBuffer ( void  )
static

Free statically allocated ghost buffers.

Definition at line 283 of file lattice_field.cpp.

◆ full_dim()

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

Implemented in quda::GaugeField, quda::ColorSpinorField, and quda::CloverField.

◆ gather()

virtual void quda::LatticeField::gather ( int  nFace,
int  dagger,
int  dir,
qudaStream_t stream_p = NULL 
)
inlinevirtual

Reimplemented in quda::cudaColorSpinorField.

Definition at line 675 of file lattice_field.h.

◆ GBytes()

size_t quda::LatticeField::GBytes ( ) const
inline
Returns
The total storage allocated

Definition at line 609 of file lattice_field.h.

◆ getIPCCopyEvent()

const cudaEvent_t & quda::LatticeField::getIPCCopyEvent ( int  dir,
int  dim 
) const

Handle to local copy event used for peer-to-peer synchronization

Definition at line 634 of file lattice_field.cpp.

◆ getIPCRemoteCopyEvent()

const cudaEvent_t & quda::LatticeField::getIPCRemoteCopyEvent ( int  dir,
int  dim 
) const

Handle to remote copy event used for peer-to-peer synchronization

Definition at line 638 of file lattice_field.cpp.

◆ GhostExchange()

QudaGhostExchange quda::LatticeField::GhostExchange ( ) const
inline
Returns
Type of ghost exchange

Definition at line 562 of file lattice_field.h.

◆ GhostPrecision()

QudaPrecision quda::LatticeField::GhostPrecision ( ) const
inline
Returns
The ghost precision

Definition at line 572 of file lattice_field.h.

◆ ipcCopyComplete()

bool quda::LatticeField::ipcCopyComplete ( int  dir,
int  dim 
)
inline

Helper function to determine if local-to-remote (send) peer-to-peer copy is complete

Definition at line 624 of file lattice_field.cpp.

◆ ipcRemoteCopyComplete()

bool quda::LatticeField::ipcRemoteCopyComplete ( int  dir,
int  dim 
)
inline

Helper function to determine if local-to-remote (receive) peer-to-peer copy is complete

Definition at line 629 of file lattice_field.cpp.

◆ isNative()

virtual bool quda::LatticeField::isNative ( ) const
pure virtual

◆ LocalVolume()

size_t quda::LatticeField::LocalVolume ( ) const
inline
Returns
The local full-field volume without any overlapping region

Definition at line 525 of file lattice_field.h.

◆ LocalVolumeCB()

size_t quda::LatticeField::LocalVolumeCB ( ) const
inline
Returns
The local single-parity volume without any overlapping region

Definition at line 530 of file lattice_field.h.

◆ Location()

QudaFieldLocation quda::LatticeField::Location ( ) const
Returns
The location of the field

Definition at line 683 of file lattice_field.cpp.

◆ MemType()

virtual QudaMemoryType quda::LatticeField::MemType ( ) const
inlinevirtual
Returns
Mem type

Definition at line 593 of file lattice_field.h.

◆ myFace_d()

void* quda::LatticeField::myFace_d ( int  dir,
int  dim 
) const
inline

Return pointer to the device send buffer in a given direction and dimension.

Parameters
[in]dirDirection we are requesting
[in]dimDimension we are requesting
Returns
Pointer to pinned memory buffer

Definition at line 654 of file lattice_field.h.

◆ myFace_h()

void* quda::LatticeField::myFace_h ( int  dir,
int  dim 
) const
inline

Return pointer to the local pinned my_face buffer in a given direction and dimension.

Parameters
[in]dirDirection we are requesting
[in]dimDimension we are requesting
Returns
Pointer to pinned memory buffer

Definition at line 636 of file lattice_field.h.

◆ myFace_hd()

void* quda::LatticeField::myFace_hd ( int  dir,
int  dim 
) const
inline

Return pointer to the local mapped my_face buffer in a given direction and dimension.

Parameters
[in]dirDirection we are requesting
[in]dimDimension we are requesting
Returns
Pointer to pinned memory buffer

Definition at line 645 of file lattice_field.h.

◆ Ndim()

int quda::LatticeField::Ndim ( ) const
inline
Returns
The dimension of the lattice

Definition at line 500 of file lattice_field.h.

◆ Nvec()

int quda::LatticeField::Nvec ( ) const
Returns
The vector storage length used for native fields , 2 for Float2, 4 for Float4

Definition at line 707 of file lattice_field.cpp.

◆ Pad()

int quda::LatticeField::Pad ( ) const
inline
Returns
The field padding

Definition at line 552 of file lattice_field.h.

◆ Precision()

QudaPrecision quda::LatticeField::Precision ( ) const
inline
Returns
The field precision

Definition at line 567 of file lattice_field.h.

◆ precisionCheck()

void quda::LatticeField::precisionCheck ( )
inlineprotected

Definition at line 396 of file lattice_field.h.

◆ prefetch()

virtual void quda::LatticeField::prefetch ( QudaFieldLocation  mem_space,
qudaStream_t  stream = 0 
) const
inlinevirtual

If managed memory and prefetch is enabled, prefetch all relevant memory fields to the current device or to the CPU.

Parameters
[in]mem_spaceMemory space we are prefetching to

Reimplemented in quda::cudaGaugeField, quda::cudaColorSpinorField, and quda::cudaCloverField.

Definition at line 709 of file lattice_field.h.

◆ R()

const int* quda::LatticeField::R ( ) const
inline
Returns
Extended field radius

Definition at line 557 of file lattice_field.h.

◆ read()

void quda::LatticeField::read ( char *  filename)
virtual

Read in the field specified by filenemae

Parameters
filenameThe name of the file to read

Definition at line 699 of file lattice_field.cpp.

◆ remoteFace_d()

void* quda::LatticeField::remoteFace_d ( int  dir,
int  dim 
) const
inline

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.

Parameters
[in]dirDirection we are requesting
[in]dimDimension we are requesting
Returns
Pointer to remote memory buffer

Definition at line 665 of file lattice_field.h.

◆ remoteFace_r()

void* quda::LatticeField::remoteFace_r ( ) const
inline

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.

Returns
Pointer to remote memory buffer

Definition at line 673 of file lattice_field.h.

◆ restore()

virtual void quda::LatticeField::restore ( ) const
inlinevirtual

◆ Scale() [1/2]

double quda::LatticeField::Scale ( ) const
inline
Returns
The global scaling factor for a fixed-point field

Definition at line 577 of file lattice_field.h.

◆ Scale() [2/2]

void quda::LatticeField::Scale ( double  scale_)
inline

Set the scale factor for a fixed-point field.

Parameters
[in]scale_The new scale factor

Definition at line 583 of file lattice_field.h.

◆ scatter()

virtual void quda::LatticeField::scatter ( int  nFace,
int  dagger,
int  dir 
)
inlinevirtual

Reimplemented in quda::cudaColorSpinorField.

Definition at line 689 of file lattice_field.h.

◆ setTuningString()

void quda::LatticeField::setTuningString ( )
protectedvirtual

Sets the vol_string for use in tuning

Reimplemented in quda::GaugeField, and quda::ColorSpinorField.

Definition at line 642 of file lattice_field.cpp.

◆ SiteSubset()

virtual QudaSiteSubset quda::LatticeField::SiteSubset ( ) const
inlinevirtual
Returns
Field subset type

Reimplemented in quda::ColorSpinorField.

Definition at line 588 of file lattice_field.h.

◆ Stride()

size_t quda::LatticeField::Stride ( ) const
inline
Returns
The single-parity stride of the field

Definition at line 547 of file lattice_field.h.

◆ SurfaceCB() [1/2]

const int* quda::LatticeField::SurfaceCB ( ) const
inline
Parameters
iThe dimension of the requested surface
Returns
The single-parity surface of dimension i

Definition at line 536 of file lattice_field.h.

◆ SurfaceCB() [2/2]

int quda::LatticeField::SurfaceCB ( const int  i) const
inline
Parameters
iThe dimension of the requested surface
Returns
The single-parity surface of dimension i

Definition at line 542 of file lattice_field.h.

◆ VolString()

const char* quda::LatticeField::VolString ( ) const
inline

Return the volume string used by the autotuner

Definition at line 693 of file lattice_field.h.

◆ Volume()

size_t quda::LatticeField::Volume ( ) const
inline
Returns
The full-field volume

Definition at line 515 of file lattice_field.h.

◆ VolumeCB()

size_t quda::LatticeField::VolumeCB ( ) const
inline
Returns
The single-parity volume

Definition at line 520 of file lattice_field.h.

◆ write()

void quda::LatticeField::write ( char *  filename)
virtual

Write the field in the file specified by filename

Parameters
filenameThe name of the file to write

Definition at line 703 of file lattice_field.cpp.

◆ X()

const int* quda::LatticeField::X ( ) const
inline
Returns
The pointer to the lattice-dimension array

Definition at line 505 of file lattice_field.h.

Member Data Documentation

◆ aux_string

char quda::LatticeField::aux_string[TuneKey::aux_n]
protected

used as a label in the autotuner

Definition at line 388 of file lattice_field.h.

◆ backed_up

bool quda::LatticeField::backed_up
mutableprotected

Definition at line 409 of file lattice_field.h.

◆ backup_h

char* quda::LatticeField::backup_h
mutableprotected

Definition at line 407 of file lattice_field.h.

◆ backup_norm_h

char* quda::LatticeField::backup_norm_h
mutableprotected

Definition at line 408 of file lattice_field.h.

◆ buffer_recv_p2p_back

int quda::LatticeField::buffer_recv_p2p_back { }
staticprotected

Buffer used by peer-to-peer message handler

Definition at line 370 of file lattice_field.h.

◆ buffer_recv_p2p_fwd

int quda::LatticeField::buffer_recv_p2p_fwd { }
staticprotected

Buffer used by peer-to-peer message handler

Definition at line 364 of file lattice_field.h.

◆ buffer_send_p2p_back

int quda::LatticeField::buffer_send_p2p_back { }
staticprotected

Buffer used by peer-to-peer message handler

Definition at line 367 of file lattice_field.h.

◆ buffer_send_p2p_fwd

int quda::LatticeField::buffer_send_p2p_fwd { }
staticprotected

Buffer used by peer-to-peer message handler

Definition at line 361 of file lattice_field.h.

◆ bufferIndex

int quda::LatticeField::bufferIndex = 0
static

Static variable that is determined which ghost buffer we are using

Definition at line 490 of file lattice_field.h.

◆ from_face_d

void* quda::LatticeField::from_face_d[2]
protected

Device memory buffer for receiving messages

Definition at line 313 of file lattice_field.h.

◆ from_face_dim_dir_d

void* quda::LatticeField::from_face_dim_dir_d[2][QUDA_MAX_DIM][2]
protected

Local pointers to the device ghost_recv buffer

Definition at line 322 of file lattice_field.h.

◆ from_face_dim_dir_h

void* quda::LatticeField::from_face_dim_dir_h[2][QUDA_MAX_DIM][2]
protected

Local pointers to the pinned from_face buffer

Definition at line 316 of file lattice_field.h.

◆ from_face_dim_dir_hd

void* quda::LatticeField::from_face_dim_dir_hd[2][QUDA_MAX_DIM][2]
protected

Local pointers to the mapped from_face buffer

Definition at line 319 of file lattice_field.h.

◆ from_face_h

void* quda::LatticeField::from_face_h[2]
protected

Memory buffer used for receiving all messages

Definition at line 303 of file lattice_field.h.

◆ from_face_hd

void* quda::LatticeField::from_face_hd[2]
protected

Mapped version of from_face_h

Definition at line 308 of file lattice_field.h.

◆ ghost_bytes

size_t quda::LatticeField::ghost_bytes
mutableprotected

Size in bytes of this ghost field

Definition at line 254 of file lattice_field.h.

◆ ghost_bytes_old

size_t quda::LatticeField::ghost_bytes_old
mutableprotected

Size in bytes of prior ghost allocation

Definition at line 259 of file lattice_field.h.

◆ ghost_face_bytes

size_t quda::LatticeField::ghost_face_bytes[QUDA_MAX_DIM]
mutableprotected

Size in bytes of the ghost in each dimension

Definition at line 264 of file lattice_field.h.

◆ ghost_face_bytes_aligned

size_t quda::LatticeField::ghost_face_bytes_aligned[QUDA_MAX_DIM]
mutableprotected

Actual allocated size in bytes of the ghost in each dimension

Definition at line 269 of file lattice_field.h.

◆ ghost_field_reset

bool quda::LatticeField::ghost_field_reset = false
static

Bool which is triggered if the ghost field is reset

Definition at line 495 of file lattice_field.h.

◆ ghost_offset

size_t quda::LatticeField::ghost_offset[QUDA_MAX_DIM][2]
mutableprotected

Byte offsets to each ghost zone

Definition at line 274 of file lattice_field.h.

◆ ghost_pinned_recv_buffer_h

void * quda::LatticeField::ghost_pinned_recv_buffer_h = {nullptr, nullptr}
staticprotected

Double buffered static pinned recv buffers

Definition at line 224 of file lattice_field.h.

◆ ghost_pinned_recv_buffer_hd

void * quda::LatticeField::ghost_pinned_recv_buffer_hd = {nullptr, nullptr}
staticprotected

Mapped version of pinned recv buffers

Definition at line 234 of file lattice_field.h.

◆ ghost_pinned_send_buffer_h

void * quda::LatticeField::ghost_pinned_send_buffer_h = {nullptr, nullptr}
staticprotected

Double buffered static pinned send buffers

Definition at line 219 of file lattice_field.h.

◆ ghost_pinned_send_buffer_hd

void * quda::LatticeField::ghost_pinned_send_buffer_hd = {nullptr, nullptr}
staticprotected

Mapped version of pinned send buffers

Definition at line 229 of file lattice_field.h.

◆ ghost_precision

QudaPrecision quda::LatticeField::ghost_precision
mutableprotected

Precision of the ghost

Definition at line 181 of file lattice_field.h.

◆ ghost_precision_reset

bool quda::LatticeField::ghost_precision_reset
mutableprotected

Bool which is triggered if the ghost precision is reset

Definition at line 184 of file lattice_field.h.

◆ ghost_recv_buffer_d

void * quda::LatticeField::ghost_recv_buffer_d = {nullptr, nullptr}
staticprotected

Double buffered static GPU halo receive buffer

Definition at line 214 of file lattice_field.h.

◆ ghost_remote_send_buffer_d

void * quda::LatticeField::ghost_remote_send_buffer_d
staticprotected

Remove ghost pointer for sending to

Definition at line 239 of file lattice_field.h.

◆ ghost_send_buffer_d

void * quda::LatticeField::ghost_send_buffer_d = {nullptr, nullptr}
staticprotected

Double buffered static GPU halo send buffer

Definition at line 209 of file lattice_field.h.

◆ ghostExchange

QudaGhostExchange quda::LatticeField::ghostExchange
protected

Type of ghost exchange to perform

Definition at line 193 of file lattice_field.h.

◆ ghostFaceBytes

size_t quda::LatticeField::ghostFaceBytes = 0
staticprotected

The current size of the static ghost allocation

Definition at line 244 of file lattice_field.h.

◆ initComms

bool quda::LatticeField::initComms
protected

Whether we have initialized communication for this field

Definition at line 379 of file lattice_field.h.

◆ initGhostFaceBuffer

bool quda::LatticeField::initGhostFaceBuffer = false
staticprotected

Whether the ghost buffers have been initialized

Definition at line 249 of file lattice_field.h.

◆ initIPCComms

bool quda::LatticeField::initIPCComms = false
staticprotected

Whether we have initialized peer-to-peer communication

Definition at line 382 of file lattice_field.h.

◆ ipcCopyEvent

cudaEvent_t quda::LatticeField::ipcCopyEvent
staticprotected

Local copy of event used for peer-to-peer synchronization

Definition at line 373 of file lattice_field.h.

◆ ipcRemoteCopyEvent

cudaEvent_t quda::LatticeField::ipcRemoteCopyEvent
staticprotected

Remote copy of event used for peer-to-peer synchronization

Definition at line 376 of file lattice_field.h.

◆ localVolume

size_t quda::LatticeField::localVolume
protected

Local lattice volume

Definition at line 155 of file lattice_field.h.

◆ localVolumeCB

size_t quda::LatticeField::localVolumeCB
protected

Checkerboarded local volume

Definition at line 158 of file lattice_field.h.

◆ mem_type

QudaMemoryType quda::LatticeField::mem_type
protected

The type of allocation we are going to do for this field

Definition at line 394 of file lattice_field.h.

◆ mh_recv_back

MsgHandle* quda::LatticeField::mh_recv_back[2][QUDA_MAX_DIM]
protected

Message handles for receiving from backwards

Definition at line 328 of file lattice_field.h.

◆ mh_recv_fwd

MsgHandle* quda::LatticeField::mh_recv_fwd[2][QUDA_MAX_DIM]
protected

Message handles for receiving from forwards

Definition at line 325 of file lattice_field.h.

◆ mh_recv_p2p_back

MsgHandle * quda::LatticeField::mh_recv_p2p_back { }
staticprotected

Peer-to-peer message handler for signaling event posting

Definition at line 358 of file lattice_field.h.

◆ mh_recv_p2p_fwd

MsgHandle * quda::LatticeField::mh_recv_p2p_fwd { }
staticprotected

Peer-to-peer message handler for signaling event posting

Definition at line 355 of file lattice_field.h.

◆ mh_recv_rdma_back

MsgHandle* quda::LatticeField::mh_recv_rdma_back[2][QUDA_MAX_DIM]
protected

Message handles for rdma receiving from backwards

Definition at line 340 of file lattice_field.h.

◆ mh_recv_rdma_fwd

MsgHandle* quda::LatticeField::mh_recv_rdma_fwd[2][QUDA_MAX_DIM]
protected

Message handles for rdma receiving from forwards

Definition at line 337 of file lattice_field.h.

◆ mh_send_back

MsgHandle* quda::LatticeField::mh_send_back[2][QUDA_MAX_DIM]
protected

Message handles for sending backwards

Definition at line 334 of file lattice_field.h.

◆ mh_send_fwd

MsgHandle* quda::LatticeField::mh_send_fwd[2][QUDA_MAX_DIM]
protected

Message handles for sending forwards

Definition at line 331 of file lattice_field.h.

◆ mh_send_p2p_back

MsgHandle * quda::LatticeField::mh_send_p2p_back { }
staticprotected

Peer-to-peer message handler for signaling event posting

Definition at line 352 of file lattice_field.h.

◆ mh_send_p2p_fwd

MsgHandle * quda::LatticeField::mh_send_p2p_fwd { }
staticprotected

Peer-to-peer message handler for signaling event posting

Definition at line 349 of file lattice_field.h.

◆ mh_send_rdma_back

MsgHandle* quda::LatticeField::mh_send_rdma_back[2][QUDA_MAX_DIM]
protected

Message handles for rdma sending to backwards

Definition at line 346 of file lattice_field.h.

◆ mh_send_rdma_fwd

MsgHandle* quda::LatticeField::mh_send_rdma_fwd[2][QUDA_MAX_DIM]
protected

Message handles for rdma sending to forwards

Definition at line 343 of file lattice_field.h.

◆ my_face_d

void* quda::LatticeField::my_face_d[2]
protected

Device memory buffer for sending messages

Definition at line 289 of file lattice_field.h.

◆ my_face_dim_dir_d

void* quda::LatticeField::my_face_dim_dir_d[2][QUDA_MAX_DIM][2]
protected

Local pointers to the device ghost_send buffer

Definition at line 298 of file lattice_field.h.

◆ my_face_dim_dir_h

void* quda::LatticeField::my_face_dim_dir_h[2][QUDA_MAX_DIM][2]
protected

Local pointers to the pinned my_face buffer

Definition at line 292 of file lattice_field.h.

◆ my_face_dim_dir_hd

void* quda::LatticeField::my_face_dim_dir_hd[2][QUDA_MAX_DIM][2]
protected

Local pointers to the mapped my_face buffer

Definition at line 295 of file lattice_field.h.

◆ my_face_h

void* quda::LatticeField::my_face_h[2]
protected

Pinned memory buffer used for sending messages

Definition at line 279 of file lattice_field.h.

◆ my_face_hd

void* quda::LatticeField::my_face_hd[2]
protected

Mapped version of my_face_h

Definition at line 284 of file lattice_field.h.

◆ nDim

int quda::LatticeField::nDim
protected

Number of field dimensions

Definition at line 166 of file lattice_field.h.

◆ nDimComms

int quda::LatticeField::nDimComms
protected

The number of dimensions we partition for communication

Definition at line 198 of file lattice_field.h.

◆ pad

int quda::LatticeField::pad
protected

Definition at line 161 of file lattice_field.h.

◆ precision

QudaPrecision quda::LatticeField::precision
protected

Precision of the field

Definition at line 178 of file lattice_field.h.

◆ r

int quda::LatticeField::r[QUDA_MAX_DIM]
protected

The extended lattice radius (if applicable)

Definition at line 175 of file lattice_field.h.

◆ scale

double quda::LatticeField::scale
protected

For fixed-point fields that need a global scaling factor

Definition at line 187 of file lattice_field.h.

◆ siteSubset

QudaSiteSubset quda::LatticeField::siteSubset
protected

Whether the field is full or single parity

Definition at line 190 of file lattice_field.h.

◆ stride

size_t quda::LatticeField::stride
protected

Definition at line 160 of file lattice_field.h.

◆ surface

int quda::LatticeField::surface[QUDA_MAX_DIM]
protected

Definition at line 171 of file lattice_field.h.

◆ surfaceCB

int quda::LatticeField::surfaceCB[QUDA_MAX_DIM]
protected

Definition at line 172 of file lattice_field.h.

◆ total_bytes

size_t quda::LatticeField::total_bytes
protected

Definition at line 163 of file lattice_field.h.

◆ vol_string

char quda::LatticeField::vol_string[TuneKey::volume_n]
protected

Used as a label in the autotuner

Definition at line 385 of file lattice_field.h.

◆ volume

size_t quda::LatticeField::volume
protected

Lattice volume

Definition at line 149 of file lattice_field.h.

◆ volumeCB

size_t quda::LatticeField::volumeCB
protected

Checkerboarded volume

Definition at line 152 of file lattice_field.h.

◆ x

int quda::LatticeField::x[QUDA_MAX_DIM]
protected

Array storing the length of dimension

Definition at line 169 of file lattice_field.h.


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