QUDA  v1.1.0
A library for QCD on GPUs
Classes | Namespaces | Macros | Functions | Variables
gauge_field_order.h File Reference

Main header file for host and device accessors to GaugeFields. More...

#include <assert.h>
#include <type_traits>
#include <register_traits.h>
#include <convert.h>
#include <complex_quda.h>
#include <quda_matrix.h>
#include <index_helper.cuh>
#include <fast_intdiv.h>
#include <limits>
#include <atomic.cuh>
#include <gauge_field.h>
#include <trove_helper.cuh>
#include <transform_reduce.h>

Go to the source code of this file.

Classes

struct  quda::gauge_wrapper< Float, T >
 gauge_wrapper is an internal class that is used to wrap instances of gauge accessors, currying in a specific location on the field. The operator() accessors in gauge-field accessors return instances to this class, allowing us to then use operator overloading upon this class to interact with the Matrix class. As a result we can include gauge-field accessors directly in Matrix expressions in kernels without having to declare temporaries with explicit calls to the load/save methods in the gauge-field accessors. More...
 
struct  quda::gauge_ghost_wrapper< Float, T >
 gauge_ghost_wrapper is an internal class that is used to wrap instances of gauge ghost accessors, currying in a specific location and dimension on the field. The Ghost() accessors in gauge-field accessors return instances to this class, allowing us to then use operator overloading upon this class to interact with the Matrix class. As a result we can include gauge-field ghost accessors directly in Matrix expressions in kernels without having to declare temporaries with explicit calls to the load/save methods in the gauge-field accessors. More...
 
struct  quda::gauge::square_< ReduceType, Float >
 
struct  quda::gauge::square_< ReduceType, int8_t >
 
struct  quda::gauge::square_< ReduceType, short >
 
struct  quda::gauge::square_< ReduceType, int >
 
struct  quda::gauge::abs_< Float, storeFloat >
 
struct  quda::gauge::abs_< Float, int8_t >
 
struct  quda::gauge::abs_< Float, short >
 
struct  quda::gauge::abs_< Float, int >
 
struct  quda::gauge::fieldorder_wrapper< Float, storeFloat >
 fieldorder_wrapper is an internal class that is used to wrap instances of FieldOrder accessors, currying in the specific location on the field. This is used as a helper class for fixed-point accessors providing the necessary conversion and scaling when writing to a fixed-point field. More...
 
struct  quda::gauge::Accessor< Float, nColor, order, storeFloat >
 
struct  quda::gauge::GhostAccessor< Float, nColor, order, native_ghost, storeFloat >
 
struct  quda::gauge::Accessor< Float, nColor, QUDA_QDP_GAUGE_ORDER, storeFloat >
 
struct  quda::gauge::GhostAccessor< Float, nColor, QUDA_QDP_GAUGE_ORDER, native_ghost, storeFloat >
 
struct  quda::gauge::Accessor< Float, nColor, QUDA_MILC_GAUGE_ORDER, storeFloat >
 
struct  quda::gauge::GhostAccessor< Float, nColor, QUDA_MILC_GAUGE_ORDER, native_ghost, storeFloat >
 
struct  quda::gauge::Accessor< Float, nColor, QUDA_FLOAT2_GAUGE_ORDER, storeFloat >
 
struct  quda::gauge::GhostAccessor< Float, nColor, QUDA_FLOAT2_GAUGE_ORDER, native_ghost, storeFloat >
 
struct  quda::gauge::FieldOrder< Float_, nColor, nSpinCoarse, order, native_ghost, storeFloat_ >
 
struct  quda::gauge::Reconstruct< N, Float, ghostExchange_, QudaStaggeredPhase >
 Generic reconstruction helper with no reconstruction. More...
 
struct  quda::gauge::Reconstruct< 12, Float, ghostExchange_ >
 Gauge reconstruct 12 helper where we reconstruct the third row from the cross product of the first two rows. More...
 
struct  quda::gauge::Reconstruct< 11, Float, ghostExchange_ >
 Gauge reconstruct helper for Momentum field with 10 packed elements (really 9 from the Lie algebra, with zero for last element). We label this as 11 to avoid collisions with simple load/store of momentum field where we do not seek to unpack/pack. More...
 
struct  quda::gauge::Reconstruct< 13, Float, ghostExchange_, stag_phase >
 Gauge reconstruct 13 helper where we reconstruct the third row from the cross product of the first two rows, and include a non-trivial phase factor. More...
 
struct  quda::gauge::Reconstruct< 8, Float, ghostExchange_ >
 Gauge reconstruct 8 helper where we reconstruct the gauge matrix from 8 packed elements (maximal compression) More...
 
struct  quda::gauge::Reconstruct< 9, Float, ghostExchange_, stag_phase >
 Gauge reconstruct 9 helper where we reconstruct the gauge matrix from 8 packed elements (maximal compression) and include a non-trivial phase factor. More...
 
struct  quda::gauge::FloatNOrder< Float, length, N, reconLenParam, stag_phase, huge_alloc, ghostExchange_, use_inphase >
 
struct  quda::gauge::S< real, length >
 This is just a dummy structure we use for trove to define the required structure size. More...
 
struct  quda::gauge::LegacyOrder< Float, length >
 The LegacyOrder defines the ghost zone storage and ordering for all cpuGaugeFields, which use the same ghost zone storage. More...
 
struct  quda::gauge::QDPOrder< Float, length >
 
struct  quda::gauge::QDPJITOrder< Float, length >
 
struct  quda::gauge::MILCOrder< Float, length >
 
struct  quda::gauge::MILCSiteOrder< Float, length >
 struct to define gauge fields packed into an opaque MILC site struct: More...
 
struct  quda::gauge::CPSOrder< Float, length >
 
struct  quda::gauge::BQCDOrder< Float, length >
 struct to define BQCD ordered gauge fields: More...
 
struct  quda::gauge::TIFROrder< Float, length >
 struct to define TIFR ordered gauge fields: [mu][parity][volumecb][col][row] More...
 
struct  quda::gauge::TIFRPaddedOrder< Float, length >
 
struct  quda::gauge_mapper< T, QudaReconstructType, N, stag, huge_alloc, ghostExchange, use_inphase, order >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_NO, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_13, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_12, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_10, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_9, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< double, QUDA_RECONSTRUCT_8, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_NO, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_13, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_12, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_10, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_9, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< float, QUDA_RECONSTRUCT_8, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_NO, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_13, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_12, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_10, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_9, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< short, QUDA_RECONSTRUCT_8, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_NO, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_13, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_12, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_10, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_9, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< int8_t, QUDA_RECONSTRUCT_8, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_NATIVE_GAUGE_ORDER >
 
struct  quda::gauge_mapper< T, recon, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_MILC_GAUGE_ORDER >
 
struct  quda::gauge_mapper< T, recon, N, stag, huge_alloc, ghostExchange, use_inphase, QUDA_QDP_GAUGE_ORDER >
 
struct  quda::gauge_order_mapper< T, order, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_QDP_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_QDPJIT_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_MILC_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_CPS_WILSON_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_BQCD_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_TIFR_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_TIFR_PADDED_GAUGE_ORDER, Nc >
 
struct  quda::gauge_order_mapper< T, QUDA_FLOAT2_GAUGE_ORDER, Nc >
 

Namespaces

 quda
 
 quda::gauge
 

Macros

#define N8   4
 

Functions

template<typename Float , typename storeFloat >
__host__ constexpr __device__ bool quda::gauge::fixed_point ()
 
template<>
__host__ constexpr __device__ bool quda::gauge::fixed_point< float, int8_t > ()
 
template<>
__host__ constexpr __device__ bool quda::gauge::fixed_point< float, short > ()
 
template<>
__host__ constexpr __device__ bool quda::gauge::fixed_point< float, int > ()
 
template<typename Float , typename storeFloat >
__host__ constexpr __device__ bool quda::gauge::match ()
 
template<>
__host__ constexpr __device__ bool quda::gauge::match< int, int > ()
 
template<>
__host__ constexpr __device__ bool quda::gauge::match< short, short > ()
 
template<typename Float , typename storeFloat >
__device__ __host__ complex< Float > quda::gauge::operator* (const Float &a, const fieldorder_wrapper< Float, storeFloat > &b)
 
template<typename Float , typename storeFloat >
__device__ __host__ complex< Float > quda::gauge::operator+ (const fieldorder_wrapper< Float, storeFloat > &a, const complex< Float > &b)
 
template<typename Float , typename storeFloat >
__device__ __host__ complex< Float > quda::gauge::operator+ (const complex< Float > &a, const fieldorder_wrapper< Float, storeFloat > &b)
 
template<int nColor, int N>
__device__ __host__ int quda::gauge::indexFloatN (int dim, int parity, int x_cb, int row, int col, int stride, int offset_cb)
 
template<QudaGhostExchange ghostExchange_, typename T , typename I >
__device__ __host__ T quda::gauge::timeBoundary (int idx, const I X[QUDA_MAX_DIM], const int R[QUDA_MAX_DIM], T tBoundary, T scale, int firstTimeSliceBound, int lastTimeSliceBound, bool isFirstTimeSlice, bool isLastTimeSlice, QudaGhostExchange ghostExchange=QUDA_GHOST_EXCHANGE_NO)
 timeBoundary Compute boundary condition correction More...
 
template<typename Float , typename I >
__device__ __host__ Float quda::gauge::milcStaggeredPhase (int dim, const int x[], const I R[])
 
__host__ constexpr __device__ int quda::gauge::ct_sqrt (int n, int i=1)
 
__host__ constexpr __device__ int quda::gauge::Ncolor (int length)
 Return the number of colors of the accessor based on the length of the field. More...
 
template<QudaStaggeredPhase phase>
__host__ __device__ bool quda::gauge::static_phase ()
 

Variables

constexpr bool quda::gauge::default_huge_alloc = true
 

Detailed Description

Main header file for host and device accessors to GaugeFields.

Definition in file gauge_field_order.h.

Macro Definition Documentation

◆ N8

#define N8   4

Definition at line 3203 of file gauge_field_order.h.