QUDA  0.9.0
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
quda::clover::FloatNOrder< Float, length, N, huge_alloc > Struct Template Reference

Accessor routine for CloverFields in native field order. More...

#include <clover_field_order.h>

Public Types

typedef mapper< Float >::type RegType
 
typedef VectorType< Float, N >::type Vector
 
typedef AllocType< huge_alloc >::type AllocInt
 

Public Member Functions

 FloatNOrder (const CloverField &clover, bool is_inverse, Float *clover_=0, float *norm_=0, bool override=false)
 host memory for backing up norm when tuning More...
 
bool Twisted () const
 
Float Mu2 () const
 
__device__ __host__ clover_wrapper< RegType, FloatNOrder< Float, length, N > > operator() (int x_cb, int parity, int chirality)
 This accessor routine returns a clover_wrapper to this object, allowing us to overload various operators for manipulating at the site level interms of matrix operations. More...
 
__device__ __host__ const clover_wrapper< RegType, FloatNOrder< Float, length, N > > operator() (int x_cb, int parity, int chirality) const
 This accessor routine returns a const colorspinor_wrapper to this object, allowing us to overload various operators for manipulating at the site level interms of matrix operations. More...
 
__device__ __host__ void load (RegType v[block], int x, int parity, int chirality) const
 Load accessor for a single chiral block. More...
 
__device__ __host__ void save (const RegType v[block], int x, int parity, int chirality)
 Store accessor for a single chiral block. More...
 
__device__ __host__ void load (RegType v[length], int x, int parity) const
 Load accessor for the clover matrix. More...
 
__device__ __host__ void save (const RegType v[length], int x, int parity)
 Store accessor for the clover matrix. More...
 
void save ()
 Backup the field to the host when tuning. More...
 
void load ()
 Restore the field from the host after tuning. More...
 
size_t Bytes () const
 

Public Attributes

Float * clover
 
floatnorm
 
const AllocInt offset
 
const AllocInt norm_offset
 
const int volumeCB
 
const int stride
 
const bool twisted
 
const Float mu2
 
size_t bytes
 
size_t norm_bytes
 
void * backup_h
 
void * backup_norm_h
 host memory for backing up the field when tuning More...
 

Static Public Attributes

static const int M =length/(N*2)
 
static const int block =length/2
 

Detailed Description

template<typename Float, int length, int N, bool huge_alloc = false>
struct quda::clover::FloatNOrder< Float, length, N, huge_alloc >

Accessor routine for CloverFields in native field order.

Template Parameters
FloatUnderlying storage data type of the field
lengthTotal number of elements per packed clover matrix (e.g., 72)
NNumber of real numbers per short vector
huge_allocTemplate parameter that enables 64-bit pointer arithmetic for huge allocations (e.g., packed set of vectors). Default is to use 32-bit pointer arithmetic.

Definition at line 367 of file clover_field_order.h.

Member Typedef Documentation

◆ AllocInt

template<typename Float , int length, int N, bool huge_alloc = false>
typedef AllocType<huge_alloc>::type quda::clover::FloatNOrder< Float, length, N, huge_alloc >::AllocInt

Definition at line 370 of file clover_field_order.h.

◆ RegType

template<typename Float , int length, int N, bool huge_alloc = false>
typedef mapper<Float>::type quda::clover::FloatNOrder< Float, length, N, huge_alloc >::RegType

Definition at line 368 of file clover_field_order.h.

◆ Vector

template<typename Float , int length, int N, bool huge_alloc = false>
typedef VectorType<Float,N>::type quda::clover::FloatNOrder< Float, length, N, huge_alloc >::Vector

Definition at line 369 of file clover_field_order.h.

Constructor & Destructor Documentation

◆ FloatNOrder()

template<typename Float , int length, int N, bool huge_alloc = false>
quda::clover::FloatNOrder< Float, length, N, huge_alloc >::FloatNOrder ( const CloverField clover,
bool  is_inverse,
Float *  clover_ = 0,
float norm_ = 0,
bool  override = false 
)
inline

host memory for backing up norm when tuning

Definition at line 394 of file clover_field_order.h.

References quda::clover::FloatNOrder< Float, length, N, huge_alloc >::clover, errorQuda, QUDA_CUDA_FIELD_LOCATION, QUDA_HALF_PRECISION, and tex.

Member Function Documentation

◆ Bytes()

template<typename Float , int length, int N, bool huge_alloc = false>
size_t quda::clover::FloatNOrder< Float, length, N, huge_alloc >::Bytes ( ) const
inline

◆ load() [1/3]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::load ( RegType  v[block],
int  x,
int  parity,
int  chirality 
) const
inline

◆ load() [2/3]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::load ( RegType  v[length],
int  x,
int  parity 
) const
inline

Load accessor for the clover matrix.

Parameters
[out]vVector of loaded elements
[in]xCheckerboarded site index
[in]parityField parity
[in]chiralityChiral block index

Definition at line 535 of file clover_field_order.h.

References quda::clover::FloatNOrder< Float, length, N, huge_alloc >::load(), parity, and x.

Here is the call graph for this function:

◆ load() [3/3]

template<typename Float , int length, int N, bool huge_alloc = false>
void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::load ( )
inline

◆ Mu2()

template<typename Float , int length, int N, bool huge_alloc = false>
Float quda::clover::FloatNOrder< Float, length, N, huge_alloc >::Mu2 ( ) const
inline

◆ operator()() [1/2]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ clover_wrapper<RegType,FloatNOrder<Float,length,N> > quda::clover::FloatNOrder< Float, length, N, huge_alloc >::operator() ( int  x_cb,
int  parity,
int  chirality 
)
inline

This accessor routine returns a clover_wrapper to this object, allowing us to overload various operators for manipulating at the site level interms of matrix operations.

Parameters
[in]x_cbCheckerboarded space-time index we are requesting
[in]parityParity we are requesting
[in]chiralityChirality we are requesting
Returns
Instance of a colorspinor_wrapper that curries in access to this field at the above coordinates.

Definition at line 436 of file clover_field_order.h.

References parity.

◆ operator()() [2/2]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ const clover_wrapper<RegType,FloatNOrder<Float,length,N> > quda::clover::FloatNOrder< Float, length, N, huge_alloc >::operator() ( int  x_cb,
int  parity,
int  chirality 
) const
inline

This accessor routine returns a const colorspinor_wrapper to this object, allowing us to overload various operators for manipulating at the site level interms of matrix operations.

Parameters
[in]x_cbCheckerboarded space-time index we are requesting
[in]parityParity we are requesting
[in]chiralityChirality we are requesting
Returns
Instance of a colorspinor_wrapper that curries in access to this field at the above coordinates.

Definition at line 451 of file clover_field_order.h.

References parity.

◆ save() [1/3]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::save ( const RegType  v[block],
int  x,
int  parity,
int  chirality 
)
inline

◆ save() [2/3]

template<typename Float , int length, int N, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::save ( const RegType  v[length],
int  x,
int  parity 
)
inline

Store accessor for the clover matrix.

Parameters
[out]vVector of elements to be stored
[in]xCheckerboarded site index
[in]parityField parity
[in]chiralityChiral block index

Definition at line 547 of file clover_field_order.h.

References parity, quda::clover::FloatNOrder< Float, length, N, huge_alloc >::save(), and x.

Here is the call graph for this function:

◆ save() [3/3]

template<typename Float , int length, int N, bool huge_alloc = false>
void quda::clover::FloatNOrder< Float, length, N, huge_alloc >::save ( )
inline

◆ Twisted()

template<typename Float , int length, int N, bool huge_alloc = false>
bool quda::clover::FloatNOrder< Float, length, N, huge_alloc >::Twisted ( ) const
inline

Member Data Documentation

◆ backup_h

template<typename Float , int length, int N, bool huge_alloc = false>
void* quda::clover::FloatNOrder< Float, length, N, huge_alloc >::backup_h

◆ backup_norm_h

template<typename Float , int length, int N, bool huge_alloc = false>
void* quda::clover::FloatNOrder< Float, length, N, huge_alloc >::backup_norm_h

host memory for backing up the field when tuning

Definition at line 392 of file clover_field_order.h.

Referenced by quda::clover::FloatNOrder< Float, length, N, huge_alloc >::load(), and quda::clover::FloatNOrder< Float, length, N, huge_alloc >::save().

◆ block

template<typename Float , int length, int N, bool huge_alloc = false>
const int quda::clover::FloatNOrder< Float, length, N, huge_alloc >::block =length/2
static

◆ bytes

template<typename Float , int length, int N, bool huge_alloc = false>
size_t quda::clover::FloatNOrder< Float, length, N, huge_alloc >::bytes

◆ clover

template<typename Float , int length, int N, bool huge_alloc = false>
Float* quda::clover::FloatNOrder< Float, length, N, huge_alloc >::clover

◆ M

template<typename Float , int length, int N, bool huge_alloc = false>
const int quda::clover::FloatNOrder< Float, length, N, huge_alloc >::M =length/(N*2)
static

◆ mu2

template<typename Float , int length, int N, bool huge_alloc = false>
const Float quda::clover::FloatNOrder< Float, length, N, huge_alloc >::mu2

◆ norm

template<typename Float , int length, int N, bool huge_alloc = false>
float* quda::clover::FloatNOrder< Float, length, N, huge_alloc >::norm

◆ norm_bytes

template<typename Float , int length, int N, bool huge_alloc = false>
size_t quda::clover::FloatNOrder< Float, length, N, huge_alloc >::norm_bytes

◆ norm_offset

template<typename Float , int length, int N, bool huge_alloc = false>
const AllocInt quda::clover::FloatNOrder< Float, length, N, huge_alloc >::norm_offset

◆ offset

template<typename Float , int length, int N, bool huge_alloc = false>
const AllocInt quda::clover::FloatNOrder< Float, length, N, huge_alloc >::offset

◆ stride

template<typename Float , int length, int N, bool huge_alloc = false>
const int quda::clover::FloatNOrder< Float, length, N, huge_alloc >::stride

◆ twisted

template<typename Float , int length, int N, bool huge_alloc = false>
const bool quda::clover::FloatNOrder< Float, length, N, huge_alloc >::twisted

◆ volumeCB

template<typename Float , int length, int N, bool huge_alloc = false>
const int quda::clover::FloatNOrder< Float, length, N, huge_alloc >::volumeCB

Definition at line 383 of file clover_field_order.h.


The documentation for this struct was generated from the following file: