mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 14:04:32 +00:00 
			
		
		
		
	AddSub based alternate SU3 routine
This commit is contained in:
		@@ -1,13 +1,5 @@
 | 
			
		||||
 | 
			
		||||
bin_PROGRAMS = Test_GaugeAction Test_RectPlaq Test_cayley_cg Test_cayley_coarsen_support Test_cayley_even_odd Test_cayley_ldop_cr Test_cf_coarsen_support Test_cf_cr_unprec Test_cheby Test_contfrac_cg Test_contfrac_even_odd Test_contfrac_force Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_cr_unprec Test_dwf_even_odd Test_dwf_force Test_dwf_fpgcr Test_dwf_gpforce Test_dwf_hdcr Test_dwf_lanczos Test_gamma Test_gp_rect_force Test_gparity Test_gpdwf_force Test_gpwilson_even_odd Test_hmc_EODWFRatio Test_hmc_EODWFRatio_Gparity Test_hmc_EOWilsonFermionGauge Test_hmc_EOWilsonRatio Test_hmc_GparityIwasakiGauge Test_hmc_GparityWilsonGauge Test_hmc_IwasakiGauge Test_hmc_RectGauge Test_hmc_WilsonFermionGauge Test_hmc_WilsonGauge Test_hmc_WilsonRatio Test_lie_generators Test_main Test_multishift_sqrt Test_nersc_io Test_partfrac_force Test_quenched_update Test_rect_force Test_remez Test_rhmc_EOWilson1p1 Test_rhmc_EOWilsonRatio Test_rhmc_Wilson1p1 Test_rhmc_WilsonRatio Test_rng Test_rng_fixed Test_serialisation Test_simd Test_stencil Test_synthetic_lanczos Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_cr_unprec Test_wilson_even_odd Test_wilson_force Test_wilson_force_phiMdagMphi Test_wilson_force_phiMphi Test_wilson_tm_even_odd 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_GaugeAction_SOURCES=Test_GaugeAction.cc
 | 
			
		||||
Test_GaugeAction_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_RectPlaq_SOURCES=Test_RectPlaq.cc
 | 
			
		||||
Test_RectPlaq_LDADD=-lGrid
 | 
			
		||||
bin_PROGRAMS = Test_cayley_cg Test_cayley_coarsen_support Test_cayley_even_odd Test_cayley_ldop_cr Test_cf_coarsen_support Test_cf_cr_unprec Test_cheby Test_contfrac_cg Test_contfrac_even_odd Test_contfrac_force Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_cr_unprec Test_dwf_even_odd Test_dwf_force Test_dwf_fpgcr Test_dwf_gpforce Test_dwf_hdcr Test_dwf_lanczos Test_gamma Test_GaugeAction Test_gparity Test_gpdwf_force Test_gp_rect_force Test_gpwilson_even_odd Test_hmc_EODWFRatio Test_hmc_EODWFRatio_Gparity Test_hmc_EOWilsonFermionGauge Test_hmc_EOWilsonRatio Test_hmc_GparityIwasakiGauge Test_hmc_GparityWilsonGauge Test_hmc_IwasakiGauge Test_hmc_RectGauge Test_hmc_WilsonFermionGauge Test_hmc_WilsonGauge Test_hmc_WilsonRatio Test_lie_generators Test_main Test_multishift_sqrt Test_nersc_io Test_partfrac_force Test_quenched_update Test_rect_force Test_RectPlaq Test_remez Test_rhmc_EOWilson1p1 Test_rhmc_EOWilsonRatio Test_rhmc_Wilson1p1 Test_rhmc_WilsonRatio Test_rng Test_rng_fixed Test_serialisation Test_simd Test_stencil Test_synthetic_lanczos Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_cr_unprec Test_wilson_even_odd Test_wilson_force Test_wilson_force_phiMdagMphi Test_wilson_force_phiMphi Test_wilson_tm_even_odd 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_cayley_cg_SOURCES=Test_cayley_cg.cc
 | 
			
		||||
@@ -102,8 +94,8 @@ Test_gamma_SOURCES=Test_gamma.cc
 | 
			
		||||
Test_gamma_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_gp_rect_force_SOURCES=Test_gp_rect_force.cc
 | 
			
		||||
Test_gp_rect_force_LDADD=-lGrid
 | 
			
		||||
Test_GaugeAction_SOURCES=Test_GaugeAction.cc
 | 
			
		||||
Test_GaugeAction_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_gparity_SOURCES=Test_gparity.cc
 | 
			
		||||
@@ -114,6 +106,10 @@ Test_gpdwf_force_SOURCES=Test_gpdwf_force.cc
 | 
			
		||||
Test_gpdwf_force_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_gp_rect_force_SOURCES=Test_gp_rect_force.cc
 | 
			
		||||
Test_gp_rect_force_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_gpwilson_even_odd_SOURCES=Test_gpwilson_even_odd.cc
 | 
			
		||||
Test_gpwilson_even_odd_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
@@ -190,6 +186,10 @@ Test_rect_force_SOURCES=Test_rect_force.cc
 | 
			
		||||
Test_rect_force_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_RectPlaq_SOURCES=Test_RectPlaq.cc
 | 
			
		||||
Test_RectPlaq_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Test_remez_SOURCES=Test_remez.cc
 | 
			
		||||
Test_remez_LDADD=-lGrid
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
 | 
			
		||||
    /*  END LEGAL */
 | 
			
		||||
#include <Grid.h>
 | 
			
		||||
#include <PerfCount.h>
 | 
			
		||||
#include <simd/Avx512Asm.h>
 | 
			
		||||
#include <simd/Intel512wilson.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
using namespace Grid;
 | 
			
		||||
@@ -261,6 +261,10 @@ int main(int argc,char **argv)
 | 
			
		||||
#undef ZLOAD
 | 
			
		||||
#undef ZMUL
 | 
			
		||||
#undef ZMADD
 | 
			
		||||
#undef VMOVIDUP 
 | 
			
		||||
#undef VMOVRDUP 
 | 
			
		||||
#undef VMADDSUB
 | 
			
		||||
#undef VSHUF
 | 
			
		||||
 | 
			
		||||
#define VZERO(A) VZEROd(A)
 | 
			
		||||
#define VTIMESI(A,B,C) VTIMESId(A,B,C)
 | 
			
		||||
@@ -268,15 +272,19 @@ int main(int argc,char **argv)
 | 
			
		||||
 | 
			
		||||
#define VLOAD(OFF,PTR,DEST)       VLOADd(OFF,PTR,DEST)
 | 
			
		||||
#define VSTORE(OFF,PTR,SRC)       VSTOREd(OFF,PTR,SRC)
 | 
			
		||||
#define VMUL(Uri,Uir,Chi,UChi,Z)  VMULd(Uri,Uir,Chi,UChi,Z)
 | 
			
		||||
#define VMADD(Uri,Uir,Chi,UChi,Z) VMADDd(Uri,Uir,Chi,UChi,Z)
 | 
			
		||||
#define ZEND1(A,B,C)               ZEND1d(A,B,C)
 | 
			
		||||
#define ZEND2(A,B,C)               ZEND2d(A,B,C)
 | 
			
		||||
#define VMUL(Uri,Uir,Chi)         VMULd(Uri,Uir,Chi)
 | 
			
		||||
#define VMADD(Uri,Uir,Chi)        VMADDd(Uri,Uir,Chi)
 | 
			
		||||
#define ZEND1(A,B,C)              ZEND1d(A,B,C)
 | 
			
		||||
#define ZEND2(A,B,C)              ZEND2d(A,B,C)
 | 
			
		||||
#define ZLOAD(A,B,C,D)            ZLOADd(A,B,C,D)
 | 
			
		||||
#define ZMUL(A,B,C,D,E)           ZMULd(A,B,C,D,E)
 | 
			
		||||
#define ZMADD(A,B,C,D,E)          ZMADDd(A,B,C,D,E)
 | 
			
		||||
#define ZMULMEM2SP(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) ZMULMEM2SPd(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) 
 | 
			
		||||
#define ZMADDMEM2SP(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) ZMADDMEM2SPd(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) 
 | 
			
		||||
#define VMOVIDUP(A,B,C) VMOVIDUPd(A,B,C)
 | 
			
		||||
#define VMOVRDUP(A,B,C) VMOVRDUPd(A,B,C)
 | 
			
		||||
#define VMADDSUB(A,B,accum) VMADDSUBd(A,B,accum) 
 | 
			
		||||
#define VSHUF(A,B) VSHUFd(A,B)
 | 
			
		||||
 | 
			
		||||
#define zz Z0
 | 
			
		||||
 | 
			
		||||
@@ -424,17 +432,21 @@ void WilsonDslashAvx512(void *ptr1,void *ptr2,void *ptr3)
 | 
			
		||||
#undef VTIMESMINUSI
 | 
			
		||||
#undef ZMULMEM2SP
 | 
			
		||||
#undef ZMADDMEM2SP
 | 
			
		||||
#undef VMOVIDUP 
 | 
			
		||||
#undef VMOVRDUP 
 | 
			
		||||
#undef VMADDSUB
 | 
			
		||||
#undef VSHUF
 | 
			
		||||
 | 
			
		||||
#define VZERO(A) VZEROf(A)
 | 
			
		||||
#define VMOV(A,B) VMOVf(A,B)
 | 
			
		||||
#define VADD(A,B,C) VADDf(A,B,C)
 | 
			
		||||
#define VSUB(A,B,C) VSUBf(A,B,C)
 | 
			
		||||
#define VTIMESI(A,B,C) VTIMESIf(A,B,C)
 | 
			
		||||
#define VTIMESMINUSI(A,B,C) VTIMESMINUSIf(A,B,C)
 | 
			
		||||
 | 
			
		||||
#define VLOAD(OFF,PTR,DEST)       VLOADf(OFF,PTR,DEST)
 | 
			
		||||
#define VSTORE(OFF,PTR,SRC)       VSTOREf(OFF,PTR,SRC)
 | 
			
		||||
#define VMUL(Uri,Uir,Chi,UChi,Z)  VMULf(Uri,Uir,Chi,UChi,Z)
 | 
			
		||||
#define VMADD(Uri,Uir,Chi,UChi,Z) VMADDf(Uri,Uir,Chi,UChi,Z)
 | 
			
		||||
#define VMUL(Uri,Uir,Chi)  VMULf(Uri,Uir,Chi)
 | 
			
		||||
#define VMADD(Uri,Uir,Chi) VMADDf(Uri,Uir,Chi)
 | 
			
		||||
#define ZEND1(A,B,C)               ZEND1f(A,B,C)
 | 
			
		||||
#define ZEND2(A,B,C)               ZEND2f(A,B,C)
 | 
			
		||||
#define ZLOAD(A,B,C,D)            ZLOADf(A,B,C,D)
 | 
			
		||||
@@ -442,6 +454,10 @@ void WilsonDslashAvx512(void *ptr1,void *ptr2,void *ptr3)
 | 
			
		||||
#define ZMADD(A,B,C,D,E)          ZMADDf(A,B,C,D,E)
 | 
			
		||||
#define ZMULMEM2SP(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr)  ZMULMEM2SPf(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) 
 | 
			
		||||
#define ZMADDMEM2SP(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) ZMADDMEM2SPf(O,P,tmp,B,C,Briir,Biirr,Criir,Ciirr) 
 | 
			
		||||
#define VMOVIDUP(A,B,C) VMOVIDUPf(A,B,C)
 | 
			
		||||
#define VMOVRDUP(A,B,C) VMOVRDUPf(A,B,C)
 | 
			
		||||
#define VMADDSUB(A,B,accum) VMADDSUBf(A,B,accum) 
 | 
			
		||||
#define VSHUF(A,B) VSHUFf(A,B)
 | 
			
		||||
 | 
			
		||||
void ZmulF(void *ptr1,void *ptr2,void *ptr3)
 | 
			
		||||
{
 | 
			
		||||
@@ -528,7 +544,8 @@ void WilsonDslashAvx512F(void *ptr1,void *ptr2,void *ptr3)
 | 
			
		||||
 | 
			
		||||
  LOAD_CHI(ptr1);
 | 
			
		||||
 | 
			
		||||
  MULT_2SPIN(ptr2);
 | 
			
		||||
  MULT_ADDSUB_2SPIN(ptr2);
 | 
			
		||||
  //MULT_2SPIN(ptr2);
 | 
			
		||||
 | 
			
		||||
  SAVE_UCHI(ptr3);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user