From abd5df1729126b3a17ceb9208d2696a566246ff4 Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Wed, 19 Aug 2026 19:35:59 -0400 Subject: [PATCH] Discourage use of D2 lattices -- it was low performance. Introduce scalar lexLattice layout --- Grid/qcd/QCD.h | 135 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 92 insertions(+), 43 deletions(-) diff --git a/Grid/qcd/QCD.h b/Grid/qcd/QCD.h index 5b35dc646..cff273611 100644 --- a/Grid/qcd/QCD.h +++ b/Grid/qcd/QCD.h @@ -127,7 +127,6 @@ typedef iSpinMatrix SpinMatrixD; typedef iSpinMatrix vSpinMatrix; typedef iSpinMatrix vSpinMatrixF; typedef iSpinMatrix vSpinMatrixD; -typedef iSpinMatrix vSpinMatrixD2; // Colour Matrix typedef iColourMatrix ColourMatrix; @@ -137,7 +136,6 @@ typedef iColourMatrix ColourMatrixD; typedef iColourMatrix vColourMatrix; typedef iColourMatrix vColourMatrixF; typedef iColourMatrix vColourMatrixD; -typedef iColourMatrix vColourMatrixD2; // SpinColour matrix typedef iSpinColourMatrix SpinColourMatrix; @@ -147,7 +145,6 @@ typedef iSpinColourMatrix SpinColourMatrixD; typedef iSpinColourMatrix vSpinColourMatrix; typedef iSpinColourMatrix vSpinColourMatrixF; typedef iSpinColourMatrix vSpinColourMatrixD; -typedef iSpinColourMatrix vSpinColourMatrixD2; // SpinColourSpinColour matrix typedef iSpinColourSpinColourMatrix SpinColourSpinColourMatrix; @@ -157,17 +154,6 @@ typedef iSpinColourSpinColourMatrix SpinColourSpinColourMatrixD; typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrix; typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixF; typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixD; -typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixD2; - -// SpinColourSpinColour matrix -typedef iSpinColourSpinColourMatrix SpinColourSpinColourMatrix; -typedef iSpinColourSpinColourMatrix SpinColourSpinColourMatrixF; -typedef iSpinColourSpinColourMatrix SpinColourSpinColourMatrixD; - -typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrix; -typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixF; -typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixD; -typedef iSpinColourSpinColourMatrix vSpinColourSpinColourMatrixD2; // LorentzColour typedef iLorentzColourMatrix LorentzColourMatrix; @@ -177,7 +163,6 @@ typedef iLorentzColourMatrix LorentzColourMatrixD; typedef iLorentzColourMatrix vLorentzColourMatrix; typedef iLorentzColourMatrix vLorentzColourMatrixF; typedef iLorentzColourMatrix vLorentzColourMatrixD; -typedef iLorentzColourMatrix vLorentzColourMatrixD2; // LorentzComplex typedef iLorentzComplex LorentzComplex; @@ -196,7 +181,6 @@ typedef iDoubleStoredColourMatrix DoubleStoredColourMatrixD; typedef iDoubleStoredColourMatrix vDoubleStoredColourMatrix; typedef iDoubleStoredColourMatrix vDoubleStoredColourMatrixF; typedef iDoubleStoredColourMatrix vDoubleStoredColourMatrixD; -typedef iDoubleStoredColourMatrix vDoubleStoredColourMatrixD2; //G-parity flavour matrix typedef iGparityFlavourMatrix GparityFlavourMatrix; @@ -206,7 +190,6 @@ typedef iGparityFlavourMatrix GparityFlavourMatrixD; typedef iGparityFlavourMatrix vGparityFlavourMatrix; typedef iGparityFlavourMatrix vGparityFlavourMatrixF; typedef iGparityFlavourMatrix vGparityFlavourMatrixD; -typedef iGparityFlavourMatrix vGparityFlavourMatrixD2; // Spin vector @@ -217,7 +200,6 @@ typedef iSpinVector SpinVectorD; typedef iSpinVector vSpinVector; typedef iSpinVector vSpinVectorF; typedef iSpinVector vSpinVectorD; -typedef iSpinVector vSpinVectorD2; // Colour vector typedef iColourVector ColourVector; @@ -227,7 +209,6 @@ typedef iColourVector ColourVectorD; typedef iColourVector vColourVector; typedef iColourVector vColourVectorF; typedef iColourVector vColourVectorD; -typedef iColourVector vColourVectorD2; // SpinColourVector typedef iSpinColourVector SpinColourVector; @@ -237,7 +218,6 @@ typedef iSpinColourVector SpinColourVectorD; typedef iSpinColourVector vSpinColourVector; typedef iSpinColourVector vSpinColourVectorF; typedef iSpinColourVector vSpinColourVectorD; -typedef iSpinColourVector vSpinColourVectorD2; // HalfSpin vector typedef iHalfSpinVector HalfSpinVector; @@ -247,7 +227,6 @@ typedef iHalfSpinVector HalfSpinVectorD; typedef iHalfSpinVector vHalfSpinVector; typedef iHalfSpinVector vHalfSpinVectorF; typedef iHalfSpinVector vHalfSpinVectorD; -typedef iHalfSpinVector vHalfSpinVectorD2; // HalfSpinColour vector typedef iHalfSpinColourVector HalfSpinColourVector; @@ -257,7 +236,6 @@ typedef iHalfSpinColourVector HalfSpinColourVectorD; typedef iHalfSpinColourVector vHalfSpinColourVector; typedef iHalfSpinColourVector vHalfSpinColourVectorF; typedef iHalfSpinColourVector vHalfSpinColourVectorD; -typedef iHalfSpinColourVector vHalfSpinColourVectorD2; //G-parity flavour vector typedef iGparityFlavourVector GparityFlavourVector; @@ -267,7 +245,6 @@ typedef iGparityFlavourVector GparityFlavourVectorD; typedef iGparityFlavourVector vGparityFlavourVector; typedef iGparityFlavourVector vGparityFlavourVectorF; typedef iGparityFlavourVector vGparityFlavourVectorD; -typedef iGparityFlavourVector vGparityFlavourVectorD2; // singlets typedef iSinglet TComplex; // FIXME This is painful. Tensor singlet complex type. @@ -277,7 +254,6 @@ typedef iSinglet TComplexD; // FIXME This is painful. Tenso typedef iSinglet vTComplex ; // what if we don't know the tensor structure typedef iSinglet vTComplexF; // what if we don't know the tensor structure typedef iSinglet vTComplexD; // what if we don't know the tensor structure -typedef iSinglet vTComplexD2; // what if we don't know the tensor structure typedef iSinglet TReal; // Shouldn't need these; can I make it work without? typedef iSinglet TRealF; // Shouldn't need these; can I make it work without? @@ -295,27 +271,22 @@ typedef iSinglet TInteger; typedef Lattice LatticeColourMatrix; typedef Lattice LatticeColourMatrixF; typedef Lattice LatticeColourMatrixD; -typedef Lattice LatticeColourMatrixD2; typedef Lattice LatticeSpinMatrix; typedef Lattice LatticeSpinMatrixF; typedef Lattice LatticeSpinMatrixD; -typedef Lattice LatticeSpinMatrixD2; typedef Lattice LatticeSpinColourMatrix; typedef Lattice LatticeSpinColourMatrixF; typedef Lattice LatticeSpinColourMatrixD; -typedef Lattice LatticeSpinColourMatrixD2; typedef Lattice LatticeSpinColourSpinColourMatrix; typedef Lattice LatticeSpinColourSpinColourMatrixF; typedef Lattice LatticeSpinColourSpinColourMatrixD; -typedef Lattice LatticeSpinColourSpinColourMatrixD2; typedef Lattice LatticeLorentzColourMatrix; typedef Lattice LatticeLorentzColourMatrixF; typedef Lattice LatticeLorentzColourMatrixD; -typedef Lattice LatticeLorentzColourMatrixD2; typedef Lattice LatticeLorentzComplex; typedef Lattice LatticeLorentzComplexF; @@ -325,32 +296,26 @@ typedef Lattice LatticeLorentzComplexD; typedef Lattice LatticeDoubleStoredColourMatrix; typedef Lattice LatticeDoubleStoredColourMatrixF; typedef Lattice LatticeDoubleStoredColourMatrixD; -typedef Lattice LatticeDoubleStoredColourMatrixD2; typedef Lattice LatticeSpinVector; typedef Lattice LatticeSpinVectorF; typedef Lattice LatticeSpinVectorD; -typedef Lattice LatticeSpinVectorD2; typedef Lattice LatticeColourVector; typedef Lattice LatticeColourVectorF; typedef Lattice LatticeColourVectorD; -typedef Lattice LatticeColourVectorD2; typedef Lattice LatticeSpinColourVector; typedef Lattice LatticeSpinColourVectorF; typedef Lattice LatticeSpinColourVectorD; -typedef Lattice LatticeSpinColourVectorD2; typedef Lattice LatticeHalfSpinVector; typedef Lattice LatticeHalfSpinVectorF; typedef Lattice LatticeHalfSpinVectorD; -typedef Lattice LatticeHalfSpinVectorD2; typedef Lattice LatticeHalfSpinColourVector; typedef Lattice LatticeHalfSpinColourVectorF; typedef Lattice LatticeHalfSpinColourVectorD; -typedef Lattice LatticeHalfSpinColourVectorD2; typedef Lattice LatticeReal; typedef Lattice LatticeRealF; @@ -359,7 +324,6 @@ typedef Lattice LatticeRealD; typedef Lattice LatticeComplex; typedef Lattice LatticeComplexF; typedef Lattice LatticeComplexD; -typedef Lattice LatticeComplexD2; typedef Lattice LatticeInteger; // Predicates for "where" @@ -370,39 +334,124 @@ typedef Lattice LatticeInteger; // Predicates for "where" typedef LatticeHalfSpinColourVector LatticeHalfFermion; typedef LatticeHalfSpinColourVectorF LatticeHalfFermionF; typedef LatticeHalfSpinColourVectorD LatticeHalfFermionD; -typedef LatticeHalfSpinColourVectorD2 LatticeHalfFermionD2; typedef LatticeSpinColourVector LatticeFermion; typedef LatticeSpinColourVectorF LatticeFermionF; typedef LatticeSpinColourVectorD LatticeFermionD; -typedef LatticeSpinColourVectorD2 LatticeFermionD2; typedef LatticeSpinColourMatrix LatticePropagator; typedef LatticeSpinColourMatrixF LatticePropagatorF; typedef LatticeSpinColourMatrixD LatticePropagatorD; -typedef LatticeSpinColourMatrixD2 LatticePropagatorD2; typedef LatticeLorentzColourMatrix LatticeGaugeField; typedef LatticeLorentzColourMatrixF LatticeGaugeFieldF; typedef LatticeLorentzColourMatrixD LatticeGaugeFieldD; -typedef LatticeLorentzColourMatrixD2 LatticeGaugeFieldD2; typedef LatticeDoubleStoredColourMatrix LatticeDoubledGaugeField; typedef LatticeDoubleStoredColourMatrixF LatticeDoubledGaugeFieldF; typedef LatticeDoubleStoredColourMatrixD LatticeDoubledGaugeFieldD; -typedef LatticeDoubleStoredColourMatrixD2 LatticeDoubledGaugeFieldD2; template using LorentzScalar = Lattice >; typedef Lattice LatticeStaggeredFermion; typedef Lattice LatticeStaggeredFermionF; typedef Lattice LatticeStaggeredFermionD; -typedef Lattice LatticeStaggeredFermionD2; typedef Lattice LatticeStaggeredPropagator; typedef Lattice LatticeStaggeredPropagatorF; typedef Lattice LatticeStaggeredPropagatorD; -typedef Lattice LatticeStaggeredPropagatorD2; + + +///////////////////////////////////////////////////////////////////////////// +// Lexicographic lattice types: Nsimd()==1 containers of the same tensors. +// Single and double precision only; no default precision alias. +///////////////////////////////////////////////////////////////////////////// + +// Site objects over the width one simd types +typedef iSpinMatrix sSpinMatrixF; +typedef iSpinMatrix sSpinMatrixD; +typedef iColourMatrix sColourMatrixF; +typedef iColourMatrix sColourMatrixD; +typedef iSpinColourMatrix sSpinColourMatrixF; +typedef iSpinColourMatrix sSpinColourMatrixD; +typedef iSpinColourSpinColourMatrix sSpinColourSpinColourMatrixF; +typedef iSpinColourSpinColourMatrix sSpinColourSpinColourMatrixD; +typedef iLorentzColourMatrix sLorentzColourMatrixF; +typedef iLorentzColourMatrix sLorentzColourMatrixD; +typedef iLorentzComplex sLorentzComplexF; +typedef iLorentzComplex sLorentzComplexD; +typedef iDoubleStoredColourMatrix sDoubleStoredColourMatrixF; +typedef iDoubleStoredColourMatrix sDoubleStoredColourMatrixD; +typedef iGparityFlavourMatrix sGparityFlavourMatrixF; +typedef iGparityFlavourMatrix sGparityFlavourMatrixD; +typedef iSpinVector sSpinVectorF; +typedef iSpinVector sSpinVectorD; +typedef iColourVector sColourVectorF; +typedef iColourVector sColourVectorD; +typedef iSpinColourVector sSpinColourVectorF; +typedef iSpinColourVector sSpinColourVectorD; +typedef iHalfSpinVector sHalfSpinVectorF; +typedef iHalfSpinVector sHalfSpinVectorD; +typedef iHalfSpinColourVector sHalfSpinColourVectorF; +typedef iHalfSpinColourVector sHalfSpinColourVectorD; +typedef iGparityFlavourVector sGparityFlavourVectorF; +typedef iGparityFlavourVector sGparityFlavourVectorD; +typedef iSinglet sTComplexF; +typedef iSinglet sTComplexD; +typedef iSinglet sTRealF; +typedef iSinglet sTRealD; +typedef iSinglet sTInteger; + +// Lattices of these +typedef Lattice lexLatticeColourMatrixF; +typedef Lattice lexLatticeColourMatrixD; +typedef Lattice lexLatticeSpinMatrixF; +typedef Lattice lexLatticeSpinMatrixD; +typedef Lattice lexLatticeSpinColourMatrixF; +typedef Lattice lexLatticeSpinColourMatrixD; +typedef Lattice lexLatticeSpinColourSpinColourMatrixF; +typedef Lattice lexLatticeSpinColourSpinColourMatrixD; +typedef Lattice lexLatticeLorentzColourMatrixF; +typedef Lattice lexLatticeLorentzColourMatrixD; +typedef Lattice lexLatticeLorentzComplexF; +typedef Lattice lexLatticeLorentzComplexD; +typedef Lattice lexLatticeDoubleStoredColourMatrixF; +typedef Lattice lexLatticeDoubleStoredColourMatrixD; +typedef Lattice lexLatticeSpinVectorF; +typedef Lattice lexLatticeSpinVectorD; +typedef Lattice lexLatticeColourVectorF; +typedef Lattice lexLatticeColourVectorD; +typedef Lattice lexLatticeSpinColourVectorF; +typedef Lattice lexLatticeSpinColourVectorD; +typedef Lattice lexLatticeHalfSpinVectorF; +typedef Lattice lexLatticeHalfSpinVectorD; +typedef Lattice lexLatticeHalfSpinColourVectorF; +typedef Lattice lexLatticeHalfSpinColourVectorD; +typedef Lattice lexLatticeRealF; +typedef Lattice lexLatticeRealD; +typedef Lattice lexLatticeComplexF; +typedef Lattice lexLatticeComplexD; +typedef Lattice lexLatticeInteger; +typedef Lattice lexLatticeStaggeredFermionF; +typedef Lattice lexLatticeStaggeredFermionD; +typedef Lattice lexLatticeStaggeredPropagatorF; +typedef Lattice lexLatticeStaggeredPropagatorD; + +// Physical names for things +typedef lexLatticeHalfSpinColourVectorF lexLatticeHalfFermionF; +typedef lexLatticeHalfSpinColourVectorD lexLatticeHalfFermionD; +typedef lexLatticeSpinColourVectorF lexLatticeFermionF; +typedef lexLatticeSpinColourVectorD lexLatticeFermionD; +typedef lexLatticeSpinColourMatrixF lexLatticePropagatorF; +typedef lexLatticeSpinColourMatrixD lexLatticePropagatorD; +typedef lexLatticeLorentzColourMatrixF lexLatticeGaugeFieldF; +typedef lexLatticeLorentzColourMatrixD lexLatticeGaugeFieldD; +typedef lexLatticeDoubleStoredColourMatrixF lexLatticeDoubledGaugeFieldF; +typedef lexLatticeDoubleStoredColourMatrixD lexLatticeDoubledGaugeFieldD; + +///////////////////////////////////////////////////////////////////////////// +// End lexicographic lattice types +///////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // Peek and Poke named after physics attributes