8 template <
typename Float,
int nColor, QudaReconstructType reconstruct_>
16 WilsonArg<Float,
nColor, reconstruct_>(out, in, U, a, x, parity, dagger, comm_override),
28 template <
typename Float,
int nDim,
int nColor,
int nParity,
bool dagger, KernelType kernel_type,
typename Arg>
39 int x_cb = getCoords<nDim, QUDA_4D_PC, kernel_type>(coord,
arg, idx,
parity, thread_dim);
45 applyWilson<Float, nDim, nColor, nParity, dagger, kernel_type>(
46 out,
arg, coord, x_cb, 0,
parity, idx, thread_dim, active);
49 Vector
x = arg.x(x_cb, my_spinor_parity);
50 x += arg.b * x.igamma(4);
51 out = x + arg.a *
out;
53 Vector
x = arg.out(x_cb, my_spinor_parity);
54 out = x + arg.a *
out;
61 template <
typename Float,
int nDim,
int nColor,
int nParity,
bool dagger, KernelType kernel_type,
typename Arg>
68 for (
int x_cb = 0; x_cb < arg.threads; x_cb++) {
69 twistedMass<Float, nDim, nColor, nParity, dagger, kernel_type>(
arg, x_cb,
parity);
75 template <
typename Float,
int nDim,
int nColor,
int nParity,
bool dagger,
bool xpay, KernelType kernel_type,
typename Arg>
78 int x_cb = blockIdx.x * blockDim.x + threadIdx.x;
79 if (x_cb >= arg.threads)
return;
82 int parity =
nParity == 2 ? blockDim.z * blockIdx.z + threadIdx.z : arg.parity;
85 case 0: twistedMass<Float, nDim, nColor, nParity, dagger, kernel_type>(
arg, x_cb, 0);
break;
86 case 1: twistedMass<Float, nDim, nColor, nParity, dagger, kernel_type>(
arg, x_cb, 1);
break;
__global__ void twistedMassGPU(Arg arg)
__device__ __host__ void twistedMass(Arg &arg, int idx, int parity)
Apply the twisted-mass dslash out(x) = M*in = a * D * in + (1 + i*b*gamma_5)*x Note this routine only...
TwistedMassArg(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override)
Parameter structure for driving the Wilson operator.
mapper< Float >::type real
void twistedMassCPU(Arg arg)
__host__ __device__ ValueType arg(const complex< ValueType > &z)
Returns the phase angle of z.