QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Namespaces | Functions | Variables
dslash_domain_wall_m5.cuh File Reference
#include <shared_memory_cache_helper.cuh>
#include <math_helper.cuh>
Include dependency graph for dslash_domain_wall_m5.cuh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  quda::coeff_5< real >
 Structure containing zMobius / Zolotarev coefficients. More...
 
struct  quda::is_variable< type >
 
struct  quda::is_variable< DSLASH5_MOBIUS_PRE >
 
struct  quda::is_variable< DSLASH5_MOBIUS >
 
struct  quda::is_variable< M5_INV_ZMOBIUS >
 
class  quda::coeff_type< real, is_variable, Arg >
 Helper class for grabbing the constant struct, whether we are on the GPU or CPU. More...
 
class  quda::coeff_type< real, true, Arg >
 Specialization for variable complex coefficients. More...
 
struct  quda::Dslash5Arg< Float, nColor >
 Parameter structure for applying the Dslash. More...
 

Namespaces

 quda
 

Functions

template<typename Float , int nColor, bool dagger, bool xpay, Dslash5Type type, typename Arg >
__device__ __host__ void quda::dslash5 (Arg &arg, int parity, int x_cb, int s)
 Apply the D5 operator at given site. More...
 
template<typename Float , int nColor, bool dagger, bool xpay, Dslash5Type type, typename Arg >
void quda::dslash5CPU (Arg &arg)
 CPU kernel for applying the D5 operator. More...
 
template<typename Float , int nColor, bool dagger, bool xpay, Dslash5Type type, typename Arg >
__global__ void quda::dslash5GPU (Arg arg)
 GPU kernel for applying the D5 operator. More...
 
template<typename real , int nColor, bool dagger, Dslash5Type type, bool shared, typename Vector , typename Arg >
__device__ __host__ Vector quda::constantInv (Arg &arg, int parity, int x_cb, int s_)
 Apply the M5 inverse operator at a given site on the lattice. This is the original algorithm as described in Kim and Izubushi (LATTICE 2013_033), where the b and c coefficients are constant along the Ls dimension, so is suitable for Shamir and Mobius domain-wall fermions. More...
 
template<typename real , int nColor, bool dagger, Dslash5Type type, bool shared, typename Vector , typename Arg >
__device__ __host__ Vector quda::variableInv (Arg &arg, int parity, int x_cb, int s_)
 Apply the M5 inverse operator at a given site on the lattice. This is an alternative algorithm that is applicable to variable b and c coefficients: here each thread in the s dimension starts computing at s = s_, and computes the left- and right-handed contributions in two separate passes. For the left-handed contribution we sweep through increasing s, e.g., s=s_, s_+1, s_+2, and for the right-handed one we do the transpose, s=s_, s_-1, s_-2. This allows us to progressively build up the scalar coefficients needed in a SIMD-friendly fashion. More...
 
template<typename Float , int nColor, bool dagger, bool xpay, Dslash5Type type, bool shared, bool var_inverse, typename Arg >
__device__ __host__ void quda::dslash5inv (Arg &arg, int parity, int x_cb, int s)
 Apply the M5 inverse operator at a given site on the lattice. More...
 
template<typename Float , int nColor, bool dagger, bool xpay, Dslash5Type type, bool shared, bool var_inverse, typename Arg >
__global__ void quda::dslash5invGPU (Arg arg)
 CPU kernel for applying the M5 inverse operator. More...
 

Variables

static __constant__ char quda::mobius_d [size]