QUDA
1.0.0
|
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, Accessor > | 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< real, Accessor > | 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 (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_type * | norm |
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 |
Accessor routine for CloverFields in native field order.
Float | Underlying storage data type of the field |
length | Total number of elements per packed clover matrix (e.g., 72) |
N | Number of real numbers per short vector |
add_rho | Whether to add the constant rho onto the diagonal. This is used to enable Hasenbusch mass preconditioning. |
huge_alloc | Template 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 541 of file clover_field_order.h.
using quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::Accessor = FloatNOrder<Float, length, N, add_rho, huge_alloc> |
Definition at line 542 of file clover_field_order.h.
typedef AllocType<huge_alloc>::type quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::AllocInt |
Definition at line 545 of file clover_field_order.h.
typedef float quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::norm_type |
Definition at line 546 of file clover_field_order.h.
using quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::real = typename mapper<Float>::type |
Definition at line 543 of file clover_field_order.h.
typedef VectorType<Float, N>::type quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::Vector |
Definition at line 544 of file clover_field_order.h.
|
inline |
host memory for backing up norm when tuning
Definition at line 571 of file clover_field_order.h.
References errorQuda, quda::LatticeField::Location(), quda::CloverField::Norm(), quda::LatticeField::Precision(), QUDA_CUDA_FIELD_LOCATION, QUDA_HALF_PRECISION, QUDA_QUARTER_PRECISION, and quda::CloverField::V().
|
inline |
Definition at line 781 of file clover_field_order.h.
References quda::blas::bytes, and length.
|
inline |
Load accessor for a single chiral block.
[out] | v | Vector of loaded elements |
[in] | x | Checkerboarded site index |
[in] | parity | Field parity |
[in] | chirality | Chiral block index |
Definition at line 650 of file clover_field_order.h.
References quda::copy(), and quda::copy_and_scale().
|
inline |
Load accessor for the clover matrix.
[out] | v | Vector of loaded elements |
[in] | x | Checkerboarded site index |
[in] | parity | Field parity |
[in] | chirality | Chiral block index |
Definition at line 735 of file clover_field_order.h.
References quda::clover_wrapper< Float, T >::chirality.
|
inline |
Restore the field from the host after tuning.
Definition at line 769 of file clover_field_order.h.
References checkCudaError, and host_free.
|
inline |
Definition at line 610 of file clover_field_order.h.
|
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.
[in] | x_cb | Checkerboarded space-time index we are requesting |
[in] | parity | Parity we are requesting |
[in] | chirality | Chirality we are requesting |
Definition at line 622 of file clover_field_order.h.
References quda::clover_wrapper< Float, T >::chirality, quda::clover_wrapper< Float, T >::parity, and quda::clover_wrapper< Float, T >::x_cb.
|
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.
[in] | x_cb | Checkerboarded space-time index we are requesting |
[in] | parity | Parity we are requesting |
[in] | chirality | Chirality we are requesting |
Definition at line 637 of file clover_field_order.h.
References quda::clover_wrapper< Float, T >::chirality, quda::clover_wrapper< Float, T >::parity, and quda::clover_wrapper< Float, T >::x_cb.
|
inline |
Store accessor for a single chiral block.
[out] | v | Vector of elements to be stored |
[in] | x | Checkerboarded site index |
[in] | parity | Field parity |
[in] | chirality | Chiral block index |
Definition at line 695 of file clover_field_order.h.
References tmp, and quda::vector_store().
|
inline |
Store accessor for the clover matrix.
[out] | v | Vector of elements to be stored |
[in] | x | Checkerboarded site index |
[in] | parity | Field parity |
[in] | chirality | Chiral block index |
Definition at line 747 of file clover_field_order.h.
References quda::clover_wrapper< Float, T >::chirality.
|
inline |
Backup the field to the host when tuning.
Definition at line 755 of file clover_field_order.h.
References checkCudaError, errorQuda, and safe_malloc.
|
inline |
Definition at line 609 of file clover_field_order.h.
void* quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::backup_h |
Definition at line 568 of file clover_field_order.h.
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 569 of file clover_field_order.h.
|
static |
Definition at line 548 of file clover_field_order.h.
size_t quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::bytes |
Definition at line 566 of file clover_field_order.h.
Float* quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::clover |
Definition at line 549 of file clover_field_order.h.
|
static |
Definition at line 547 of file clover_field_order.h.
const real quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::mu2 |
Definition at line 563 of file clover_field_order.h.
norm_type* quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::norm |
Definition at line 550 of file clover_field_order.h.
size_t quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::norm_bytes |
Definition at line 567 of file clover_field_order.h.
const AllocInt quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::norm_offset |
Definition at line 552 of file clover_field_order.h.
const AllocInt quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::offset |
Definition at line 551 of file clover_field_order.h.
const real quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::rho |
Definition at line 564 of file clover_field_order.h.
const int quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::stride |
Definition at line 560 of file clover_field_order.h.
const bool quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::twisted |
Definition at line 562 of file clover_field_order.h.
const int quda::clover::FloatNOrder< Float, length, N, add_rho, huge_alloc >::volumeCB |
Definition at line 559 of file clover_field_order.h.