QUDA  v0.5.0
A library for QCD on GPUs
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Macros | Functions
pack_spinor.h File Reference

Go to the source code of this file.

Classes

struct  FloatNOrder< Float, Ns, Nc, N >
 
struct  SpaceColorSpinorOrder< Float, Ns, Nc >
 
struct  SpaceSpinorColorOrder< Float, Ns, Nc >
 
class  PreserveBasis< FloatOut, FloatIn, Ns, Nc >
 
struct  NonRelBasis< FloatOut, FloatIn, Ns, Nc >
 
struct  RelBasis< FloatOut, FloatIn, Ns, Nc >
 
class  PackSpinor< FloatOut, FloatIn, Ns, Nc, OutOrder, InOrder, Basis >
 

Macros

#define PRESERVE_SPINOR_NORM
 
#define kP   (1.0/sqrt(2.0))
 
#define kU   (1.0/sqrt(2.0))
 

Functions

template<typename Float , int Ns, int Nc>
__device__ void load_shared (Float v[Ns *Nc *2], Float *field, int x, int volume)
 
template<typename Float , int Ns, int Nc>
__device__ void save_shared (Float *field, const Float v[Ns *Nc *2], int x, int volume)
 
template<typename FloatOut , typename FloatIn , int Ns, int Nc, typename OutOrder , typename InOrder , typename Basis >
void packSpinor (OutOrder &outOrder, const InOrder &inOrder, Basis basis, int volume)
 
template<typename FloatOut , typename FloatIn , int Ns, int Nc, typename OutOrder , typename InOrder , typename Basis >
__global__ void packSpinorKernel (OutOrder outOrder, const InOrder inOrder, Basis basis, int volume)
 
template<int Ns, int Nc, typename OutOrder , typename InOrder , typename FloatOut , typename FloatIn >
void packParitySpinor (FloatOut *dst, FloatIn *src, OutOrder &outOrder, const InOrder &inOrder, int Vh, int pad, QudaGammaBasis dstBasis, QudaGammaBasis srcBasis, QudaFieldLocation location)
 
template<int Nc, int Ns, int N, typename dstFloat , typename srcFloat >
void packSpinor (dstFloat *Dst, srcFloat *Src, ColorSpinorField &dst, const ColorSpinorField &src, QudaFieldLocation location)
 

Macro Definition Documentation

#define kP   (1.0/sqrt(2.0))

Definition at line 38 of file pack_spinor.h.

#define kU   (1.0/sqrt(2.0))

Definition at line 39 of file pack_spinor.h.

#define PRESERVE_SPINOR_NORM

Definition at line 35 of file pack_spinor.h.

Function Documentation

template<typename Float , int Ns, int Nc>
__device__ void load_shared ( Float  v[Ns *Nc *2],
Float field,
int  x,
int  volume 
)
inline

Definition at line 134 of file pack_spinor.h.

template<int Ns, int Nc, typename OutOrder , typename InOrder , typename FloatOut , typename FloatIn >
void packParitySpinor ( FloatOut *  dst,
FloatIn *  src,
OutOrder &  outOrder,
const InOrder &  inOrder,
int  Vh,
int  pad,
QudaGammaBasis  dstBasis,
QudaGammaBasis  srcBasis,
QudaFieldLocation  location 
)

Decide whether we are changing basis or not

Definition at line 415 of file pack_spinor.h.

template<typename FloatOut , typename FloatIn , int Ns, int Nc, typename OutOrder , typename InOrder , typename Basis >
void packSpinor ( OutOrder &  outOrder,
const InOrder &  inOrder,
Basis  basis,
int  volume 
)

CPU function to reorder spinor fields.

Definition at line 323 of file pack_spinor.h.

template<int Nc, int Ns, int N, typename dstFloat , typename srcFloat >
void packSpinor ( dstFloat *  Dst,
srcFloat *  Src,
ColorSpinorField &  dst,
const ColorSpinorField &  src,
QudaFieldLocation  location 
)

Definition at line 450 of file pack_spinor.h.

template<typename FloatOut , typename FloatIn , int Ns, int Nc, typename OutOrder , typename InOrder , typename Basis >
__global__ void packSpinorKernel ( OutOrder  outOrder,
const InOrder  inOrder,
Basis  basis,
int  volume 
)

CUDA kernel to reorder spinor fields. Adopts a similar form as the CPU version, using the same inlined functions.

Definition at line 335 of file pack_spinor.h.

template<typename Float , int Ns, int Nc>
__device__ void save_shared ( Float field,
const Float  v[Ns *Nc *2],
int  x,
int  volume 
)
inline

Definition at line 169 of file pack_spinor.h.