QUDA  v1.1.0
A library for QCD on GPUs
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc > Struct Template Reference

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

#include <clover_field_order.h>

Public Types

using Accessor = FloatNOrder< Float, length, N, add_rho, huge_alloc >
 
using real = typename mapper< Float >::type
 
typedef VectorType< Float, N >::type Vector
 
typedef AllocType< huge_alloc >::type AllocInt
 
typedef float norm_type
 

Public Member Functions

 FloatNOrder (const CloverField &clover, bool is_inverse, Float *clover_=0, norm_type *norm_=0, bool override=false)
 host memory for backing up norm when tuning More...
 
bool Twisted () const
 
real Mu2 () const
 
__device__ __host__ clover_wrapper< real, Accessoroperator() (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< real, Accessoroperator() (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 (real v[block], int x, int parity, int chirality) const
 Load accessor for a single chiral block. More...
 
__device__ __host__ void save (const real v[block], int x, int parity, int chirality)
 Store accessor for a single chiral block. More...
 
__device__ __host__ void load (real v[length], int x, int parity) const
 Load accessor for the clover matrix. More...
 
__device__ __host__ void save (const real 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
 
norm_typenorm
 
const AllocInt offset
 
const AllocInt norm_offset
 
const int volumeCB
 
const int stride
 
const bool twisted
 
const real mu2
 
const real rho
 
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 add_rho = false, bool huge_alloc = false>
struct quda::clover::FloatNOrder< Float, length, N, add_rho, 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
add_rhoWhether to add the constant rho onto the diagonal. This is used to enable Hasenbusch mass preconditioning.
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 524 of file clover_field_order.h.

Member Typedef Documentation

◆ Accessor

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

Definition at line 525 of file clover_field_order.h.

◆ AllocInt

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

Definition at line 528 of file clover_field_order.h.

◆ norm_type

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
typedef float quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::norm_type

Definition at line 529 of file clover_field_order.h.

◆ real

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
using quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::real = typename mapper<Float>::type

Definition at line 526 of file clover_field_order.h.

◆ Vector

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

Definition at line 527 of file clover_field_order.h.

Constructor & Destructor Documentation

◆ FloatNOrder()

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

host memory for backing up norm when tuning

Definition at line 548 of file clover_field_order.h.

Member Function Documentation

◆ Bytes()

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

Definition at line 719 of file clover_field_order.h.

◆ load() [1/3]

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

Restore the field from the host after tuning.

Definition at line 707 of file clover_field_order.h.

◆ load() [2/3]

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

Load accessor for a single chiral block.

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

Definition at line 610 of file clover_field_order.h.

◆ load() [3/3]

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::load ( real  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 674 of file clover_field_order.h.

◆ Mu2()

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

Definition at line 570 of file clover_field_order.h.

◆ operator()() [1/2]

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
__device__ __host__ clover_wrapper<real, Accessor> quda::clover::FloatNOrder< Float, length, N, add_rho, 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 582 of file clover_field_order.h.

◆ operator()() [2/2]

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
__device__ __host__ const clover_wrapper<real, Accessor> quda::clover::FloatNOrder< Float, length, N, add_rho, 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 597 of file clover_field_order.h.

◆ save() [1/3]

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

Backup the field to the host when tuning.

Definition at line 694 of file clover_field_order.h.

◆ save() [2/3]

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

Store accessor for a single chiral block.

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

Definition at line 634 of file clover_field_order.h.

◆ save() [3/3]

template<typename Float , int length, int N, bool add_rho = false, bool huge_alloc = false>
__device__ __host__ void quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::save ( const real  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 686 of file clover_field_order.h.

◆ Twisted()

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

Definition at line 569 of file clover_field_order.h.

Member Data Documentation

◆ backup_h

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

Definition at line 545 of file clover_field_order.h.

◆ backup_norm_h

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

host memory for backing up the field when tuning

Definition at line 546 of file clover_field_order.h.

◆ block

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

Definition at line 531 of file clover_field_order.h.

◆ bytes

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

Definition at line 543 of file clover_field_order.h.

◆ clover

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

Definition at line 532 of file clover_field_order.h.

◆ M

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

Definition at line 530 of file clover_field_order.h.

◆ mu2

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

Definition at line 540 of file clover_field_order.h.

◆ norm

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

Definition at line 533 of file clover_field_order.h.

◆ norm_bytes

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

Definition at line 544 of file clover_field_order.h.

◆ norm_offset

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

Definition at line 535 of file clover_field_order.h.

◆ offset

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

Definition at line 534 of file clover_field_order.h.

◆ rho

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

Definition at line 541 of file clover_field_order.h.

◆ stride

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

Definition at line 537 of file clover_field_order.h.

◆ twisted

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

Definition at line 539 of file clover_field_order.h.

◆ volumeCB

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

Definition at line 536 of file clover_field_order.h.


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