From 919d126af1b862540871d5f55652be1de6dd9ca8 Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Wed, 19 Aug 2026 19:37:29 -0400 Subject: [PATCH] Remove D2 lattice fields; remove WilsonCompressor based half precision project; add sComplex lexLattice layouts Fix staggered instantiations for new types --- Grid/qcd/action/fermion/CloverHelpers.h | 4 ++ Grid/qcd/action/fermion/DomainWallVec5dImpl.h | 14 +----- Grid/qcd/action/fermion/Fermion.h | 50 +++++++++---------- Grid/qcd/action/fermion/FermionOperatorImpl.h | 37 -------------- Grid/qcd/action/fermion/GparityWilsonImpl.h | 10 +--- Grid/qcd/action/fermion/StaggeredImpl.h | 9 ++++ Grid/qcd/action/fermion/WilsonCompressor.h | 31 ++++++------ Grid/qcd/action/fermion/WilsonImpl.h | 17 ++++--- .../implementation/StaggeredKernelsAsm.h | 8 +-- .../StaggeredKernelsInstantiation.cc.master | 1 + .../instantiation/generate_instantiations.sh | 19 +++---- 11 files changed, 77 insertions(+), 123 deletions(-) diff --git a/Grid/qcd/action/fermion/CloverHelpers.h b/Grid/qcd/action/fermion/CloverHelpers.h index cee2bc2f6..e95413a09 100644 --- a/Grid/qcd/action/fermion/CloverHelpers.h +++ b/Grid/qcd/action/fermion/CloverHelpers.h @@ -143,6 +143,8 @@ public: static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-12,R);} static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-12,R);} static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-6,R);} + static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-12,R);} + static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-6,R);} static void Instantiate(CloverField& Clover, CloverField& CloverInv, RealD csw_t, RealD diag_mass) { GridBase* grid = Clover.Grid(); @@ -268,6 +270,8 @@ public: static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-12,R);} static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-6,R);} + static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-12,R);} + static int getNMAX(Lattice> &t, RealD R) {return getNMAX(1e-6,R);} static void InstantiateClover(CloverField& Clover, CloverField& CloverInv, RealD csw_t, RealD diag_mass) { diff --git a/Grid/qcd/action/fermion/DomainWallVec5dImpl.h b/Grid/qcd/action/fermion/DomainWallVec5dImpl.h index 3de1ceb06..5be7de46e 100644 --- a/Grid/qcd/action/fermion/DomainWallVec5dImpl.h +++ b/Grid/qcd/action/fermion/DomainWallVec5dImpl.h @@ -40,15 +40,12 @@ public: static const int Dimension = Representation::Dimension; static const bool isFundamental = Representation::isFundamental; static const bool LsVectorised=true; - static const int Nhcs = Options::Nhcs; typedef typename Options::_Coeff_t Coeff_t; - typedef typename Options::template PrecisionMapper::LowerPrecVector SimdL; template using iImplSpinor = iScalar, Ns> >; template using iImplPropagator = iScalar, Ns> >; template using iImplHalfSpinor = iScalar, Nhs> >; - template using iImplHalfCommSpinor = iScalar, Nhcs> >; template using iImplDoubledGaugeField = iVector >, Nds>; template using iImplGaugeField = iVector >, Nd>; template using iImplGaugeLink = iScalar > >; @@ -56,7 +53,6 @@ public: typedef iImplSpinor SiteSpinor; typedef iImplPropagator SitePropagator; typedef iImplHalfSpinor SiteHalfSpinor; - typedef iImplHalfCommSpinor SiteHalfCommSpinor; typedef Lattice FermionField; typedef Lattice PropagatorField; @@ -68,7 +64,7 @@ public: typedef iImplGaugeLink SiteScalarGaugeLink; // scalar typedef Lattice DoubledGaugeField; - typedef WilsonCompressor Compressor; + typedef WilsonCompressor Compressor; typedef WilsonImplParams ImplParams; typedef WilsonStencil StencilImpl; typedef typename StencilImpl::View_type StencilView; @@ -201,16 +197,8 @@ typedef DomainWallVec5dImpl Doma typedef DomainWallVec5dImpl DomainWallVec5dImplF; // Float typedef DomainWallVec5dImpl DomainWallVec5dImplD; // Double -typedef DomainWallVec5dImpl DomainWallVec5dImplRL; // Real.. whichever prec -typedef DomainWallVec5dImpl DomainWallVec5dImplFH; // Float -typedef DomainWallVec5dImpl DomainWallVec5dImplDF; // Double - typedef DomainWallVec5dImpl ZDomainWallVec5dImplR; // Real.. whichever prec typedef DomainWallVec5dImpl ZDomainWallVec5dImplF; // Float typedef DomainWallVec5dImpl ZDomainWallVec5dImplD; // Double - -typedef DomainWallVec5dImpl ZDomainWallVec5dImplRL; // Real.. whichever prec -typedef DomainWallVec5dImpl ZDomainWallVec5dImplFH; // Float -typedef DomainWallVec5dImpl ZDomainWallVec5dImplDF; // Double NAMESPACE_END(Grid); diff --git a/Grid/qcd/action/fermion/Fermion.h b/Grid/qcd/action/fermion/Fermion.h index a3d96d9b0..54be556db 100644 --- a/Grid/qcd/action/fermion/Fermion.h +++ b/Grid/qcd/action/fermion/Fermion.h @@ -114,7 +114,7 @@ NAMESPACE_CHECK(DWFutils); // Cayley 5d NAMESPACE_BEGIN(Grid); -typedef WilsonFermion WilsonFermionD2; +//typedef WilsonFermion WilsonFermionD2; typedef WilsonFermion WilsonFermionF; typedef WilsonFermion WilsonFermionD; @@ -138,7 +138,7 @@ typedef WilsonFermion SpWilsonTwoIndexSymmetricF typedef WilsonFermion SpWilsonTwoIndexSymmetricFermionD; // Twisted mass fermion -typedef WilsonTMFermion WilsonTMFermionD2; +//typedef WilsonTMFermion WilsonTMFermionD2; typedef WilsonTMFermion WilsonTMFermionF; typedef WilsonTMFermion WilsonTMFermionD; @@ -146,11 +146,11 @@ typedef WilsonTMFermion WilsonTMFermionD; template using WilsonClover = WilsonCloverFermion>; template using WilsonExpClover = WilsonCloverFermion>; -typedef WilsonClover WilsonCloverFermionD2; +//typedef WilsonClover WilsonCloverFermionD2; typedef WilsonClover WilsonCloverFermionF; typedef WilsonClover WilsonCloverFermionD; -typedef WilsonExpClover WilsonExpCloverFermionD2; +//typedef WilsonExpClover WilsonExpCloverFermionD2; typedef WilsonExpClover WilsonExpCloverFermionF; typedef WilsonExpClover WilsonExpCloverFermionD; @@ -168,15 +168,15 @@ template using CompactWilsonClover = CompactWilsonCloverFermion template using CompactWilsonClover5D = CompactWilsonCloverFermion5D>; template using CompactWilsonExpClover = CompactWilsonCloverFermion>; -typedef CompactWilsonClover CompactWilsonCloverFermionD2; +//typedef CompactWilsonClover CompactWilsonCloverFermionD2; typedef CompactWilsonClover CompactWilsonCloverFermionF; typedef CompactWilsonClover CompactWilsonCloverFermionD; -typedef CompactWilsonClover5D CompactWilsonCloverFermion5DD2; +//typedef CompactWilsonClover5D CompactWilsonCloverFermion5DD2; typedef CompactWilsonClover5D CompactWilsonCloverFermion5DF; typedef CompactWilsonClover5D CompactWilsonCloverFermion5DD; -typedef CompactWilsonExpClover CompactWilsonExpCloverFermionD2; +//typedef CompactWilsonExpClover CompactWilsonExpCloverFermionD2; typedef CompactWilsonExpClover CompactWilsonExpCloverFermionF; typedef CompactWilsonExpClover CompactWilsonExpCloverFermionD; @@ -192,56 +192,56 @@ typedef CompactWilsonClover CompactWilsonClove // Domain Wall fermions typedef DomainWallFermion DomainWallFermionF; typedef DomainWallFermion DomainWallFermionD; -typedef DomainWallFermion DomainWallFermionD2; +//typedef DomainWallFermion DomainWallFermionD2; -typedef DomainWallEOFAFermion DomainWallEOFAFermionD2; +//typedef DomainWallEOFAFermion DomainWallEOFAFermionD2; typedef DomainWallEOFAFermion DomainWallEOFAFermionF; typedef DomainWallEOFAFermion DomainWallEOFAFermionD; -typedef MobiusFermion MobiusFermionD2; +//typedef MobiusFermion MobiusFermionD2; typedef MobiusFermion MobiusFermionF; typedef MobiusFermion MobiusFermionD; -typedef MobiusEOFAFermion MobiusEOFAFermionD2; +//typedef MobiusEOFAFermion MobiusEOFAFermionD2; typedef MobiusEOFAFermion MobiusEOFAFermionF; typedef MobiusEOFAFermion MobiusEOFAFermionD; -typedef ZMobiusFermion ZMobiusFermionD2; +//typedef ZMobiusFermion ZMobiusFermionD2; typedef ZMobiusFermion ZMobiusFermionF; typedef ZMobiusFermion ZMobiusFermionD; -typedef ScaledShamirFermion ScaledShamirFermionD2; +//typedef ScaledShamirFermion ScaledShamirFermionD2; typedef ScaledShamirFermion ScaledShamirFermionF; typedef ScaledShamirFermion ScaledShamirFermionD; -typedef MobiusZolotarevFermion MobiusZolotarevFermionD2; +//typedef MobiusZolotarevFermion MobiusZolotarevFermionD2; typedef MobiusZolotarevFermion MobiusZolotarevFermionF; typedef MobiusZolotarevFermion MobiusZolotarevFermionD; -typedef ShamirZolotarevFermion ShamirZolotarevFermionD2; +//typedef ShamirZolotarevFermion ShamirZolotarevFermionD2; typedef ShamirZolotarevFermion ShamirZolotarevFermionF; typedef ShamirZolotarevFermion ShamirZolotarevFermionD; -typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD2; +//typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD2; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionF; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD; -typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD2; +//typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD2; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionF; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD; // Continued fraction -typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD2; +//typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD2; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionF; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD; -typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD2; +//typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD2; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionF; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD; // Partial fraction -typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD2; +//typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD2; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionF; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD; -typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD2; +//typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD2; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionF; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD; @@ -252,19 +252,19 @@ typedef WilsonFermion GparityWilsonFermionD; typedef DomainWallFermion GparityDomainWallFermionF; typedef DomainWallFermion GparityDomainWallFermionD; -typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD2; +//typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD2; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionF; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD; -typedef WilsonTMFermion GparityWilsonTMFermionD2; +//typedef WilsonTMFermion GparityWilsonTMFermionD2; typedef WilsonTMFermion GparityWilsonTMFermionF; typedef WilsonTMFermion GparityWilsonTMFermionD; -typedef MobiusFermion GparityMobiusFermionD2; +//typedef MobiusFermion GparityMobiusFermionD2; typedef MobiusFermion GparityMobiusFermionF; typedef MobiusFermion GparityMobiusFermionD; -typedef MobiusEOFAFermion GparityMobiusEOFAFermionD2; +//typedef MobiusEOFAFermion GparityMobiusEOFAFermionD2; typedef MobiusEOFAFermion GparityMobiusEOFAFermionF; typedef MobiusEOFAFermion GparityMobiusEOFAFermionD; diff --git a/Grid/qcd/action/fermion/FermionOperatorImpl.h b/Grid/qcd/action/fermion/FermionOperatorImpl.h index 56aaca12c..84aba4701 100644 --- a/Grid/qcd/action/fermion/FermionOperatorImpl.h +++ b/Grid/qcd/action/fermion/FermionOperatorImpl.h @@ -88,51 +88,14 @@ NAMESPACE_BEGIN(Grid); // } ////////////////////////////////////////////// -template struct SamePrecisionMapper { - typedef T HigherPrecVector ; - typedef T LowerPrecVector ; -}; -template struct LowerPrecisionMapper { }; -template <> struct LowerPrecisionMapper { - typedef vRealF HigherPrecVector ; - typedef vRealH LowerPrecVector ; -}; -template <> struct LowerPrecisionMapper { - typedef vRealD HigherPrecVector ; - typedef vRealF LowerPrecVector ; -}; -template <> struct LowerPrecisionMapper { - typedef vComplexF HigherPrecVector ; - typedef vComplexH LowerPrecVector ; -}; -template <> struct LowerPrecisionMapper { - typedef vComplexD HigherPrecVector ; - typedef vComplexF LowerPrecVector ; -}; struct CoeffReal { public: typedef RealD _Coeff_t; - static const int Nhcs = 2; - template using PrecisionMapper = SamePrecisionMapper; -}; -struct CoeffRealHalfComms { -public: - typedef RealD _Coeff_t; - static const int Nhcs = 1; - template using PrecisionMapper = LowerPrecisionMapper; }; struct CoeffComplex { public: typedef ComplexD _Coeff_t; - static const int Nhcs = 2; - template using PrecisionMapper = SamePrecisionMapper; -}; -struct CoeffComplexHalfComms { -public: - typedef ComplexD _Coeff_t; - static const int Nhcs = 1; - template using PrecisionMapper = LowerPrecisionMapper; }; //////////////////////////////////////////////////////////////////////// diff --git a/Grid/qcd/action/fermion/GparityWilsonImpl.h b/Grid/qcd/action/fermion/GparityWilsonImpl.h index 2649ffe71..51b156c83 100644 --- a/Grid/qcd/action/fermion/GparityWilsonImpl.h +++ b/Grid/qcd/action/fermion/GparityWilsonImpl.h @@ -48,7 +48,6 @@ public: static const int Dimension = Representation::Dimension; static const bool isFundamental = Representation::isFundamental; - static const int Nhcs = Options::Nhcs; static const bool LsVectorised=false; static const bool isGparity=true; @@ -56,18 +55,15 @@ public: INHERIT_GIMPL_TYPES(Gimpl); typedef typename Options::_Coeff_t Coeff_t; - typedef typename Options::template PrecisionMapper::LowerPrecVector SimdL; template using iImplSpinor = iVector, Ns>, Ngp>; template using iImplPropagator = iMatrix, Ns>, Ngp>; template using iImplHalfSpinor = iVector, Nhs>, Ngp>; - template using iImplHalfCommSpinor = iVector, Nhcs>, Ngp>; template using iImplDoubledGaugeField = iVector >, Nds>, Ngp>; typedef iImplSpinor SiteSpinor; typedef iImplPropagator SitePropagator; typedef iImplHalfSpinor SiteHalfSpinor; - typedef iImplHalfCommSpinor SiteHalfCommSpinor; typedef iImplDoubledGaugeField SiteDoubledGaugeField; typedef Lattice FermionField; @@ -75,7 +71,7 @@ public: typedef Lattice DoubledGaugeField; typedef GparityWilsonImplParams ImplParams; - typedef WilsonCompressor Compressor; + typedef WilsonCompressor Compressor; typedef WilsonStencil StencilImpl; typedef typename StencilImpl::View_type StencilView; @@ -408,9 +404,5 @@ public: typedef GparityWilsonImpl GparityWilsonImplR; // Real.. whichever prec typedef GparityWilsonImpl GparityWilsonImplF; // Float typedef GparityWilsonImpl GparityWilsonImplD; // Double - -//typedef GparityWilsonImpl GparityWilsonImplRL; // Real.. whichever prec -//typedef GparityWilsonImpl GparityWilsonImplFH; // Float -//typedef GparityWilsonImpl GparityWilsonImplDF; // Double NAMESPACE_END(Grid); diff --git a/Grid/qcd/action/fermion/StaggeredImpl.h b/Grid/qcd/action/fermion/StaggeredImpl.h index fee7613fc..4162834b3 100644 --- a/Grid/qcd/action/fermion/StaggeredImpl.h +++ b/Grid/qcd/action/fermion/StaggeredImpl.h @@ -176,4 +176,13 @@ typedef StaggeredImpl StaggeredImplR; / typedef StaggeredImpl StaggeredImplF; // Float typedef StaggeredImpl StaggeredImplD; // Double +///////////////////////////////////////////////////////////////////////////// +// Lexicographic staggered implementations +///////////////////////////////////////////////////////////////////////////// +typedef StaggeredImpl lexStaggeredImplF; +typedef StaggeredImpl lexStaggeredImplD; +///////////////////////////////////////////////////////////////////////////// +// End lexicographic staggered implementations +///////////////////////////////////////////////////////////////////////////// + NAMESPACE_END(Grid); diff --git a/Grid/qcd/action/fermion/WilsonCompressor.h b/Grid/qcd/action/fermion/WilsonCompressor.h index c3a5e4cfc..7bc3e23bb 100644 --- a/Grid/qcd/action/fermion/WilsonCompressor.h +++ b/Grid/qcd/action/fermion/WilsonCompressor.h @@ -38,7 +38,7 @@ NAMESPACE_BEGIN(Grid); //Could make FaceGather a template param, but then behaviour is runtime not compile time -template +template class WilsonCompressorTemplate : public FaceGatherSimple { public: @@ -53,13 +53,11 @@ public: typedef _Spinor SiteSpinor; typedef _Hspinor SiteHalfSpinor; - typedef _HCspinor SiteHalfCommSpinor; - typedef typename SiteHalfCommSpinor::vector_type vComplexLow; - typedef typename SiteHalfSpinor::vector_type vComplexHigh; - constexpr static int Nw=sizeof(SiteHalfSpinor)/sizeof(vComplexHigh); + typedef typename SiteHalfSpinor::vector_type vector_type; + constexpr static int Nw=sizeof(SiteHalfSpinor)/sizeof(vector_type); accelerator_inline int CommDatumSize(void) const { - return sizeof(SiteHalfCommSpinor); + return sizeof(SiteHalfSpinor); } /*****************************************************/ @@ -159,7 +157,7 @@ public: spProj(result,in); \ } \ }; \ - template using Compressor = WilsonCompressorTemplate; + template using Compressor = WilsonCompressorTemplate; DECLARE_PROJ(WilsonXpProjector,WilsonXpCompressor,spProjXp); DECLARE_PROJ(WilsonYpProjector,WilsonYpCompressor,spProjYp); @@ -188,7 +186,7 @@ public: } } }; -template using WilsonCompressor = WilsonCompressorTemplate; +template using WilsonCompressor = WilsonCompressorTemplate; // Fast comms buffer manipulation which should inline right through (avoid direction // dependent logic that prevents inlining @@ -237,7 +235,6 @@ public: // Use types to select the write direction by directon compressor typedef typename compressor::SiteSpinor SiteSpinor; typedef typename compressor::SiteHalfSpinor SiteHalfSpinor; - typedef typename compressor::SiteHalfCommSpinor SiteHalfCommSpinor; this->_grid->StencilBarrier(); @@ -245,14 +242,14 @@ public: this->u_comm_offset=0; - WilsonXpCompressor XpCompress; - WilsonYpCompressor YpCompress; - WilsonZpCompressor ZpCompress; - WilsonTpCompressor TpCompress; - WilsonXmCompressor XmCompress; - WilsonYmCompressor YmCompress; - WilsonZmCompressor ZmCompress; - WilsonTmCompressor TmCompress; + WilsonXpCompressor XpCompress; + WilsonYpCompressor YpCompress; + WilsonZpCompressor ZpCompress; + WilsonTpCompressor TpCompress; + WilsonXmCompressor XmCompress; + WilsonYmCompressor YmCompress; + WilsonZmCompressor ZmCompress; + WilsonTmCompressor TmCompress; int dag = compress.dag; int face_idx=0; diff --git a/Grid/qcd/action/fermion/WilsonImpl.h b/Grid/qcd/action/fermion/WilsonImpl.h index 3643e581d..77a29f8f8 100644 --- a/Grid/qcd/action/fermion/WilsonImpl.h +++ b/Grid/qcd/action/fermion/WilsonImpl.h @@ -42,7 +42,6 @@ public: static const bool isFundamental = Representation::isFundamental; static const bool LsVectorised=false; static const bool isGparity=false; - static const int Nhcs = Options::Nhcs; typedef PeriodicGaugeImpl > Gimpl; INHERIT_GIMPL_TYPES(Gimpl); @@ -51,25 +50,22 @@ public: constexpr bool is_fundamental() const{return Dimension == Nc ? 1 : 0;} typedef typename Options::_Coeff_t Coeff_t; - typedef typename Options::template PrecisionMapper::LowerPrecVector SimdL; template using iImplSpinor = iScalar, Ns> >; template using iImplPropagator = iScalar, Ns> >; template using iImplHalfSpinor = iScalar, Nhs> >; - template using iImplHalfCommSpinor = iScalar, Nhcs> >; template using iImplDoubledGaugeField = iVector >, Nds>; typedef iImplSpinor SiteSpinor; typedef iImplPropagator SitePropagator; typedef iImplHalfSpinor SiteHalfSpinor; - typedef iImplHalfCommSpinor SiteHalfCommSpinor; typedef iImplDoubledGaugeField SiteDoubledGaugeField; typedef Lattice FermionField; typedef Lattice PropagatorField; typedef Lattice DoubledGaugeField; - typedef WilsonCompressor Compressor; + typedef WilsonCompressor Compressor; typedef WilsonImplParams ImplParams; typedef WilsonStencil StencilImpl; typedef const typename StencilImpl::View_type StencilView; @@ -242,12 +238,19 @@ public: typedef WilsonImpl WilsonImplR; // Real.. whichever prec typedef WilsonImpl WilsonImplF; // Float typedef WilsonImpl WilsonImplD; // Double -typedef WilsonImpl WilsonImplD2; // Double + +///////////////////////////////////////////////////////////////////////////// +// Lexicographic Wilson implementations +///////////////////////////////////////////////////////////////////////////// +typedef WilsonImpl lexWilsonImplF; +typedef WilsonImpl lexWilsonImplD; +///////////////////////////////////////////////////////////////////////////// +// End lexicographic Wilson implementations +///////////////////////////////////////////////////////////////////////////// typedef WilsonImpl ZWilsonImplR; // Real.. whichever prec typedef WilsonImpl ZWilsonImplF; // Float typedef WilsonImpl ZWilsonImplD; // Double -typedef WilsonImpl ZWilsonImplD2; // Double typedef WilsonImpl WilsonAdjImplR; // Real.. whichever prec typedef WilsonImpl WilsonAdjImplF; // Float diff --git a/Grid/qcd/action/fermion/implementation/StaggeredKernelsAsm.h b/Grid/qcd/action/fermion/implementation/StaggeredKernelsAsm.h index 4857c25a9..299f26224 100644 --- a/Grid/qcd/action/fermion/implementation/StaggeredKernelsAsm.h +++ b/Grid/qcd/action/fermion/implementation/StaggeredKernelsAsm.h @@ -684,7 +684,7 @@ void StaggeredKernels::DhopSiteAsm(StencilView &st, #ifdef STAG_VEC5D // This is the single precision 5th direction vectorised kernel #include -template <> void StaggeredKernels::DhopSiteAsm(StencilView &st, +template <> inline void StaggeredKernels::DhopSiteAsm(StencilView &st, DoubledGaugeFieldView &U, DoubledGaugeFieldView &UUU, SiteSpinor *buf, int sF, @@ -739,7 +739,7 @@ template <> void StaggeredKernels::DhopSiteAsm(StencilView } #include -template <> void StaggeredKernels::DhopSiteAsm(StencilView &st, +template <> inline void StaggeredKernels::DhopSiteAsm(StencilView &st, DoubledGaugeFieldView &U, DoubledGaugeFieldView &UUU, SiteSpinor *buf, int sF, @@ -825,7 +825,7 @@ template <> void StaggeredKernels::DhopSiteAsm(StencilView // This is the single precision 5th direction vectorised kernel #include -template <> void StaggeredKernels::DhopSiteAsm(StencilView &st, +template <> inline void StaggeredKernels::DhopSiteAsm(StencilView &st, DoubledGaugeFieldView &U, DoubledGaugeFieldView &UUU, SiteSpinor *buf, int sF, @@ -894,7 +894,7 @@ template <> void StaggeredKernels::DhopSiteAsm(StencilView &st, } #include -template <> void StaggeredKernels::DhopSiteAsm(StencilView &st, +template <> inline void StaggeredKernels::DhopSiteAsm(StencilView &st, DoubledGaugeFieldView &U, DoubledGaugeFieldView &UUU, SiteSpinor *buf, int sF, diff --git a/Grid/qcd/action/fermion/instantiation/StaggeredKernelsInstantiation.cc.master b/Grid/qcd/action/fermion/instantiation/StaggeredKernelsInstantiation.cc.master index c3acf9636..7af909d3f 100644 --- a/Grid/qcd/action/fermion/instantiation/StaggeredKernelsInstantiation.cc.master +++ b/Grid/qcd/action/fermion/instantiation/StaggeredKernelsInstantiation.cc.master @@ -29,6 +29,7 @@ directory #include #include #include +#include NAMESPACE_BEGIN(Grid); diff --git a/Grid/qcd/action/fermion/instantiation/generate_instantiations.sh b/Grid/qcd/action/fermion/instantiation/generate_instantiations.sh index 18194a23b..3b4659ac3 100755 --- a/Grid/qcd/action/fermion/instantiation/generate_instantiations.sh +++ b/Grid/qcd/action/fermion/instantiation/generate_instantiations.sh @@ -2,14 +2,15 @@ STAG_IMPL_LIST=" \ StaggeredImplF \ - StaggeredImplD " - -STAG5_IMPL_LIST="" + StaggeredImplD \ + lexStaggeredImplF \ + lexStaggeredImplD " WILSON_IMPL_LIST=" \ WilsonImplF \ WilsonImplD \ - WilsonImplD2 \ + lexWilsonImplF \ + lexWilsonImplD \ SpWilsonImplF \ SpWilsonImplD \ WilsonAdjImplF \ @@ -32,9 +33,10 @@ COMPACT_WILSON_IMPL_LIST=" \ DWF_IMPL_LIST=" \ WilsonImplF \ WilsonImplD \ - WilsonImplD2 \ + lexWilsonImplF \ + lexWilsonImplD \ ZWilsonImplF \ - ZWilsonImplD2 " + ZWilsonImplD " GDWF_IMPL_LIST=" \ GparityWilsonImplF \ @@ -109,8 +111,3 @@ do ln -f -s ../$f.cc.master $impl/$f$impl.cc done done - -CC_LIST=" \ - ImprovedStaggeredFermion5DInstantiation \ - StaggeredKernelsInstantiation " -