QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
dslash_quda.h
Go to the documentation of this file.
1 #ifndef _DSLASH_QUDA_H
2 #define _DSLASH_QUDA_H
3 
4 #include <quda_internal.h>
5 #include <tune_quda.h>
6 #include <color_spinor_field.h>
7 #include <gauge_field.h>
8 #include <clover_field.h>
9 #include <worker.h>
10 
11 namespace quda {
12 
16  void setKernelPackT(bool pack);
17 
21  bool getKernelPackT();
22 
23  void pushKernelPackT(bool pack);
24  void popKernelPackT();
25 
32  void setPackComms(const int *dim_pack);
33 
34  bool getDslashLaunch();
35 
36  void createDslashEvents();
37  void destroyDslashEvents();
38 
60  void ApplyWilson(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double kappa,
61  const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
62 
85  void ApplyWilsonClover(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &A,
86  double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
87 
125  void ApplyWilsonCloverPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U,
126  const CloverField &A, double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override,
127  TimeProfile &profile);
128 
150  void ApplyTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b,
151  const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
152 
189  void ApplyTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a,
190  double b, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric,
191  const int *comm_override, TimeProfile &profile);
192 
220  void ApplyNdegTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b,
221  double c, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
222 
268  void ApplyNdegTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U,
269  double a, double b, double c, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric,
270  const int *comm_override, TimeProfile &profile);
271 
295  void ApplyTwistedClover(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &C,
296  double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override,
297  TimeProfile &profile);
298 
336  void ApplyTwistedCloverPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U,
337  const CloverField &C, double a, double b, bool xpay, const ColorSpinorField &x, int parity, bool dagger,
338  const int *comm_override, TimeProfile &profile);
339 
364  void ApplyDomainWall5D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_f,
365  const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
366 
392  void ApplyDomainWall4D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_5,
393  const Complex *b_5, const Complex *c_5, const ColorSpinorField &x, int parity, bool dagger,
394  const int *comm_override, TimeProfile &profile);
395 
397 
413  void ApplyDslash5(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &x, double m_f,
414  double m_5, const Complex *b_5, const Complex *c_5, double a, bool dagger, Dslash5Type type);
415 
434  void ApplyLaplace(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, int dir, double kappa,
435  const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
436 
456  void ApplyCovDev(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, int mu, int parity,
457  bool dagger, const int *comm_override, TimeProfile &profile);
458 
467  void ApplyClover(
468  ColorSpinorField &out, const ColorSpinorField &in, const CloverField &clover, bool inverse, int parity);
469 
481  void ApplyStaggered(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a,
482  const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile);
483 
497  const GaugeField &L, double a, const ColorSpinorField &x, int parity, bool dagger,
498  const int *comm_override, TimeProfile &profile);
499 
511  void ApplyTwistGamma(ColorSpinorField &out, const ColorSpinorField &in, int d, double kappa, double mu,
512  double epsilon, int dagger, QudaTwistGamma5Type type);
513 
528  void ApplyTwistClover(ColorSpinorField &out, const ColorSpinorField &in, const CloverField &clover,
529  double kappa, double mu, double epsilon, int parity, int dagger, QudaTwistGamma5Type twist);
530 
545  void PackGhost(void *ghost[2 * QUDA_MAX_DIM], const ColorSpinorField &field, MemoryLocation location, int nFace,
546  bool dagger, int parity, bool spin_project, double a, double b, double c, const cudaStream_t &stream);
547 
553  void gamma5(ColorSpinorField &out, const ColorSpinorField &in);
554 
555 }
556 
557 #endif // _DSLASH_QUDA_H
double mu
Definition: test_util.cpp:1648
bool getKernelPackT()
Definition: dslash_quda.cu:26
double kappa
Definition: test_util.cpp:1647
double epsilon
Definition: test_util.cpp:1649
cudaStream_t * stream
void ApplyWilsonCloverPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &A, double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned Wilson-clover stencil.
void ApplyTwistedClover(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &C, double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the twisted-clover stencil.
void ApplyLaplace(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, int dir, double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Laplace stencil.
Definition: laplace.cu:188
void ApplyDomainWall5D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_f, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Domain-wall 5-d stencil to a 5-d vector with 5-d preconditioned data order...
void ApplyDslash5(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &x, double m_f, double m_5, const Complex *b_5, const Complex *c_5, double a, bool dagger, Dslash5Type type)
Apply either the domain-wall / mobius Dslash5 operator or the M5 inverse operator. In the current implementation, it is expected that the color-spinor fields are 4-d preconditioned.
void ApplyCovDev(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, int mu, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the covariant derivative.
Definition: covDev.cu:185
void xpay(ColorSpinorField &x, double a, ColorSpinorField &y)
Definition: blas_quda.h:37
void popKernelPackT()
Definition: dslash_quda.cu:42
void ApplyNdegTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, double c, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the non-degenerate twisted-mass stencil.
bool getDslashLaunch()
void ApplyTwistGamma(ColorSpinorField &out, const ColorSpinorField &in, int d, double kappa, double mu, double epsilon, int dagger, QudaTwistGamma5Type type)
Apply the twisted-mass gamma operator to a color-spinor field.
Definition: dslash_quda.cu:416
cpuColorSpinorField * in
void createDslashEvents()
Definition: dslash_quda.cu:95
std::complex< double > Complex
Definition: quda_internal.h:46
void ApplyDomainWall4D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_5, const Complex *b_5, const Complex *c_5, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the batched Wilson 4-d stencil to a 5-d vector with 4-d preconditioned data order...
void PackGhost(void *ghost[2 *QUDA_MAX_DIM], const ColorSpinorField &field, MemoryLocation location, int nFace, bool dagger, int parity, bool spin_project, double a, double b, double c, const cudaStream_t &stream)
Dslash face packing routine.
__device__ __host__ Matrix< T, 3 > inverse(const Matrix< T, 3 > &u)
Definition: quda_matrix.h:611
cpuColorSpinorField * out
void ApplyTwistedCloverPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &C, double a, double b, bool xpay, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned twisted-clover stencil.
__device__ __host__ void pack(Arg &arg, int ghost_idx, int s, int parity)
Definition: dslash_pack.cuh:83
void ApplyClover(ColorSpinorField &out, const ColorSpinorField &in, const CloverField &clover, bool inverse, int parity)
Apply clover-matrix field to a color-spinor field.
Definition: dslash_quda.cu:604
Dslash5Type
Definition: dslash_quda.h:396
void ApplyTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the twisted-mass stencil.
void ApplyWilsonClover(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const CloverField &A, double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Wilson-clover stencil.
void ApplyWilson(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double kappa, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Wilson stencil.
void ApplyStaggered(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Apply the staggered dslash operator to a color-spinor field.
void ApplyImprovedStaggered(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, const GaugeField &L, double a, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Apply the improved staggered dslash operator to a color-spinor field.
void setKernelPackT(bool pack)
Definition: dslash_quda.cu:24
void gamma5(ColorSpinorField &out, const ColorSpinorField &in)
Applies a gamma5 matrix to a spinor (wrapper to ApplyGamma)
Definition: dslash_quda.cu:461
void ApplyTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned twisted-mass stencil.
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
void pushKernelPackT(bool pack)
Definition: dslash_quda.cu:30
#define QUDA_MAX_DIM
Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5...
QudaDagType dagger
Definition: test_util.cpp:1620
void ApplyNdegTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, double c, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned non-degenerate twisted-mass stencil.
QudaParity parity
Definition: covdev_test.cpp:54
void destroyDslashEvents()
Definition: dslash_quda.cu:144
void setPackComms(const int *dim_pack)
Helper function that sets which dimensions the packing kernel should be packing for.
Definition: dslash_pack2.cu:14
void ApplyTwistClover(ColorSpinorField &out, const ColorSpinorField &in, const CloverField &clover, double kappa, double mu, double epsilon, int parity, int dagger, QudaTwistGamma5Type twist)
Apply twisted clover-matrix field to a color-spinor field.
Definition: dslash_quda.cu:769