19 template <
template <
typename,
int, QudaReconstructType>
class Apply,
typename Recon,
typename Float,
int nColor,
24 #if QUDA_RECONSTRUCT & 4
25 Apply<Float, nColor, Recon::recon[0]>(out, in, U, args...);
27 errorQuda(
"QUDA_RECONSTRUCT=%d does not enable reconstruct-18", QUDA_RECONSTRUCT);
30 #if QUDA_RECONSTRUCT & 2
31 Apply<Float, nColor, Recon::recon[1]>(out, in, U, args...);
33 errorQuda(
"QUDA_RECONSTRUCT=%d does not enable reconstruct-12/13", QUDA_RECONSTRUCT);
36 #if QUDA_RECONSTRUCT & 1
37 Apply<Float, nColor, Recon::recon[2]>(out, in, U, args...);
39 errorQuda(
"QUDA_RECONSTRUCT=%d does not enable reconstruct-8/9", QUDA_RECONSTRUCT);
53 template <
template <
typename,
int, QudaReconstructType>
class Apply,
typename Recon,
typename Float,
typename... Args>
57 instantiate<Apply, Recon, Float, 3>(out, in, U, args...);
70 template <
template <
typename,
int, QudaReconstructType>
class Apply,
typename Recon = WilsonReconstruct,
typename... Args>
74 #if QUDA_PRECISION & 8
75 instantiate<Apply, Recon, double>(out, in, U, args...);
77 errorQuda(
"QUDA_PRECISION=%d does not enable double precision", QUDA_PRECISION);
80 #if QUDA_PRECISION & 4
81 instantiate<Apply, Recon, float>(out, in, U, args...);
83 errorQuda(
"QUDA_PRECISION=%d does not enable single precision", QUDA_PRECISION);
86 #if QUDA_PRECISION & 2
87 instantiate<Apply, Recon, short>(out, in, U, args...);
89 errorQuda(
"QUDA_PRECISION=%d does not enable half precision", QUDA_PRECISION);
92 #if QUDA_PRECISION & 1
93 instantiate<Apply, Recon, int8_t>(out, in, U, args...);
95 errorQuda(
"QUDA_PRECISION=%d does not enable quarter precision", QUDA_PRECISION);
112 template <
template <
typename,
int, QudaReconstructType>
class Apply,
typename Recon = WilsonReconstruct,
typename... Args>
117 #if QUDA_PRECISION & 2
118 instantiate<Apply, Recon, short>(out, in, U, args...);
120 errorQuda(
"QUDA_PRECISION=%d does not enable half precision", QUDA_PRECISION);
123 #if QUDA_PRECISION & 1
124 instantiate<Apply, Recon, int8_t>(out, in, U, args...);
126 errorQuda(
"QUDA_PRECISION=%d does not enable quarter precision", QUDA_PRECISION);
QudaReconstructType Reconstruct() const
QudaPrecision Precision() const
constexpr void instantiate(G &U, Args &&... args)
This instantiate function is used to instantiate the colors.
void instantiatePreconditioner(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, Args &&... args)
This instantiatePrecondtiioner function is used to instantiate the precisions for a preconditioner....
FloatingPoint< float > Float