mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-28 14:45:56 +01:00
Namespace, indent
This commit is contained in:
parent
017dcd69a6
commit
08772d5e0c
@ -28,45 +28,44 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
See the full license in the file "LICENSE" in the top level distribution directory
|
See the full license in the file "LICENSE" in the top level distribution directory
|
||||||
*************************************************************************************/
|
*************************************************************************************/
|
||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
|
|
||||||
#include <Grid/qcd/action/fermion/FermionCore.h>
|
#include <Grid/qcd/action/fermion/FermionCore.h>
|
||||||
#include <Grid/qcd/action/fermion/MobiusEOFAFermion.h>
|
#include <Grid/qcd/action/fermion/MobiusEOFAFermion.h>
|
||||||
|
|
||||||
namespace Grid {
|
NAMESPACE_BEGIN(Grid);
|
||||||
namespace QCD {
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dense matrix versions of routines
|
* Dense matrix versions of routines
|
||||||
*/
|
*/
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInv(const FermionField& psi, FermionField& chi)
|
void MobiusEOFAFermion<Impl>::MooeeInv(const FermionField& psi, FermionField& chi)
|
||||||
{
|
{
|
||||||
this->MooeeInternal(psi, chi, DaggerNo, InverseYes);
|
this->MooeeInternal(psi, chi, DaggerNo, InverseYes);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInv_shift(const FermionField& psi, FermionField& chi)
|
void MobiusEOFAFermion<Impl>::MooeeInv_shift(const FermionField& psi, FermionField& chi)
|
||||||
{
|
{
|
||||||
this->MooeeInternal(psi, chi, DaggerNo, InverseYes);
|
this->MooeeInternal(psi, chi, DaggerNo, InverseYes);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInvDag(const FermionField& psi, FermionField& chi)
|
void MobiusEOFAFermion<Impl>::MooeeInvDag(const FermionField& psi, FermionField& chi)
|
||||||
{
|
{
|
||||||
this->MooeeInternal(psi, chi, DaggerYes, InverseYes);
|
this->MooeeInternal(psi, chi, DaggerYes, InverseYes);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInvDag_shift(const FermionField& psi, FermionField& chi)
|
void MobiusEOFAFermion<Impl>::MooeeInvDag_shift(const FermionField& psi, FermionField& chi)
|
||||||
{
|
{
|
||||||
this->MooeeInternal(psi, chi, DaggerYes, InverseYes);
|
this->MooeeInternal(psi, chi, DaggerYes, InverseYes);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::M5D(const FermionField& psi, const FermionField& phi,
|
void MobiusEOFAFermion<Impl>::M5D(const FermionField& psi, const FermionField& phi,
|
||||||
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper)
|
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper)
|
||||||
{
|
{
|
||||||
GridBase* grid = psi._grid;
|
GridBase* grid = psi._grid;
|
||||||
int Ls = this->Ls;
|
int Ls = this->Ls;
|
||||||
int LLs = grid->_rdimensions[0];
|
int LLs = grid->_rdimensions[0];
|
||||||
@ -103,7 +102,7 @@ namespace QCD {
|
|||||||
|
|
||||||
parallel_for(int ss=0; ss<grid->oSites(); ss+=LLs){ // adds LLs
|
parallel_for(int ss=0; ss<grid->oSites(); ss+=LLs){ // adds LLs
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
alignas(64) SiteHalfSpinor hp;
|
alignas(64) SiteHalfSpinor hp;
|
||||||
alignas(64) SiteHalfSpinor hm;
|
alignas(64) SiteHalfSpinor hm;
|
||||||
@ -133,7 +132,7 @@ namespace QCD {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
for(int v=0; v<LLs; v++){
|
for(int v=0; v<LLs; v++){
|
||||||
|
|
||||||
@ -202,18 +201,18 @@ namespace QCD {
|
|||||||
vstream(chi[ss+v]()(3)(2), p_32);
|
vstream(chi[ss+v]()(3)(2), p_32);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
this->M5Dtime += usecond();
|
this->M5Dtime += usecond();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::M5D_shift(const FermionField& psi, const FermionField& phi,
|
void MobiusEOFAFermion<Impl>::M5D_shift(const FermionField& psi, const FermionField& phi,
|
||||||
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper,
|
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper,
|
||||||
std::vector<Coeff_t>& shift_coeffs)
|
std::vector<Coeff_t>& shift_coeffs)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
this->M5D(psi, phi, chi, lower, diag, upper);
|
this->M5D(psi, phi, chi, lower, diag, upper);
|
||||||
|
|
||||||
@ -225,7 +224,7 @@ namespace QCD {
|
|||||||
else{ axpby_ssp_pminus(chi, one, chi, shift_coeffs[s], psi, s, 0); }
|
else{ axpby_ssp_pminus(chi, one, chi, shift_coeffs[s], psi, s, 0); }
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
GridBase* grid = psi._grid;
|
GridBase* grid = psi._grid;
|
||||||
int Ls = this->Ls;
|
int Ls = this->Ls;
|
||||||
@ -386,13 +385,13 @@ namespace QCD {
|
|||||||
|
|
||||||
this->M5Dtime += usecond();
|
this->M5Dtime += usecond();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::M5Ddag(const FermionField& psi, const FermionField& phi,
|
void MobiusEOFAFermion<Impl>::M5Ddag(const FermionField& psi, const FermionField& phi,
|
||||||
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper)
|
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper)
|
||||||
{
|
{
|
||||||
GridBase* grid = psi._grid;
|
GridBase* grid = psi._grid;
|
||||||
int Ls = this->Ls;
|
int Ls = this->Ls;
|
||||||
int LLs = grid->_rdimensions[0];
|
int LLs = grid->_rdimensions[0];
|
||||||
@ -427,7 +426,7 @@ namespace QCD {
|
|||||||
|
|
||||||
parallel_for(int ss=0; ss<grid->oSites(); ss+=LLs){ // adds LLs
|
parallel_for(int ss=0; ss<grid->oSites(); ss+=LLs){ // adds LLs
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
alignas(64) SiteHalfSpinor hp;
|
alignas(64) SiteHalfSpinor hp;
|
||||||
alignas(64) SiteHalfSpinor hm;
|
alignas(64) SiteHalfSpinor hm;
|
||||||
@ -455,7 +454,7 @@ namespace QCD {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
for(int v=0; v<LLs; v++){
|
for(int v=0; v<LLs; v++){
|
||||||
|
|
||||||
@ -524,19 +523,19 @@ namespace QCD {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->M5Dtime += usecond();
|
this->M5Dtime += usecond();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::M5Ddag_shift(const FermionField& psi, const FermionField& phi,
|
void MobiusEOFAFermion<Impl>::M5Ddag_shift(const FermionField& psi, const FermionField& phi,
|
||||||
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper,
|
FermionField& chi, std::vector<Coeff_t>& lower, std::vector<Coeff_t>& diag, std::vector<Coeff_t>& upper,
|
||||||
std::vector<Coeff_t>& shift_coeffs)
|
std::vector<Coeff_t>& shift_coeffs)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
this->M5Ddag(psi, phi, chi, lower, diag, upper);
|
this->M5Ddag(psi, phi, chi, lower, diag, upper);
|
||||||
|
|
||||||
@ -548,7 +547,7 @@ namespace QCD {
|
|||||||
else{ axpby_ssp_pminus(chi, one, chi, shift_coeffs[s], psi, 0, s); }
|
else{ axpby_ssp_pminus(chi, one, chi, shift_coeffs[s], psi, 0, s); }
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
GridBase* grid = psi._grid;
|
GridBase* grid = psi._grid;
|
||||||
int Ls = this->Ls;
|
int Ls = this->Ls;
|
||||||
@ -708,20 +707,20 @@ namespace QCD {
|
|||||||
|
|
||||||
this->M5Dtime += usecond();
|
this->M5Dtime += usecond();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef AVX512
|
#ifdef AVX512
|
||||||
#include<simd/Intel512common.h>
|
#include<simd/Intel512common.h>
|
||||||
#include<simd/Intel512avx.h>
|
#include<simd/Intel512avx.h>
|
||||||
#include<simd/Intel512single.h>
|
#include<simd/Intel512single.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInternalAsm(const FermionField& psi, FermionField& chi,
|
void MobiusEOFAFermion<Impl>::MooeeInternalAsm(const FermionField& psi, FermionField& chi,
|
||||||
int LLs, int site, Vector<iSinglet<Simd> >& Matp, Vector<iSinglet<Simd> >& Matm)
|
int LLs, int site, Vector<iSinglet<Simd> >& Matp, Vector<iSinglet<Simd> >& Matm)
|
||||||
{
|
{
|
||||||
#ifndef AVX512
|
#ifndef AVX512
|
||||||
{
|
{
|
||||||
SiteHalfSpinor BcastP;
|
SiteHalfSpinor BcastP;
|
||||||
SiteHalfSpinor BcastM;
|
SiteHalfSpinor BcastM;
|
||||||
@ -769,35 +768,35 @@ namespace QCD {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
// pointers
|
// pointers
|
||||||
// MASK_REGS;
|
// MASK_REGS;
|
||||||
#define Chi_00 %%zmm1
|
#define Chi_00 %%zmm1
|
||||||
#define Chi_01 %%zmm2
|
#define Chi_01 %%zmm2
|
||||||
#define Chi_02 %%zmm3
|
#define Chi_02 %%zmm3
|
||||||
#define Chi_10 %%zmm4
|
#define Chi_10 %%zmm4
|
||||||
#define Chi_11 %%zmm5
|
#define Chi_11 %%zmm5
|
||||||
#define Chi_12 %%zmm6
|
#define Chi_12 %%zmm6
|
||||||
#define Chi_20 %%zmm7
|
#define Chi_20 %%zmm7
|
||||||
#define Chi_21 %%zmm8
|
#define Chi_21 %%zmm8
|
||||||
#define Chi_22 %%zmm9
|
#define Chi_22 %%zmm9
|
||||||
#define Chi_30 %%zmm10
|
#define Chi_30 %%zmm10
|
||||||
#define Chi_31 %%zmm11
|
#define Chi_31 %%zmm11
|
||||||
#define Chi_32 %%zmm12
|
#define Chi_32 %%zmm12
|
||||||
|
|
||||||
#define BCAST0 %%zmm13
|
#define BCAST0 %%zmm13
|
||||||
#define BCAST1 %%zmm14
|
#define BCAST1 %%zmm14
|
||||||
#define BCAST2 %%zmm15
|
#define BCAST2 %%zmm15
|
||||||
#define BCAST3 %%zmm16
|
#define BCAST3 %%zmm16
|
||||||
#define BCAST4 %%zmm17
|
#define BCAST4 %%zmm17
|
||||||
#define BCAST5 %%zmm18
|
#define BCAST5 %%zmm18
|
||||||
#define BCAST6 %%zmm19
|
#define BCAST6 %%zmm19
|
||||||
#define BCAST7 %%zmm20
|
#define BCAST7 %%zmm20
|
||||||
#define BCAST8 %%zmm21
|
#define BCAST8 %%zmm21
|
||||||
#define BCAST9 %%zmm22
|
#define BCAST9 %%zmm22
|
||||||
#define BCAST10 %%zmm23
|
#define BCAST10 %%zmm23
|
||||||
#define BCAST11 %%zmm24
|
#define BCAST11 %%zmm24
|
||||||
|
|
||||||
int incr = LLs*LLs*sizeof(iSinglet<Simd>);
|
int incr = LLs*LLs*sizeof(iSinglet<Simd>);
|
||||||
|
|
||||||
@ -869,47 +868,47 @@ namespace QCD {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef Chi_00
|
#undef Chi_00
|
||||||
#undef Chi_01
|
#undef Chi_01
|
||||||
#undef Chi_02
|
#undef Chi_02
|
||||||
#undef Chi_10
|
#undef Chi_10
|
||||||
#undef Chi_11
|
#undef Chi_11
|
||||||
#undef Chi_12
|
#undef Chi_12
|
||||||
#undef Chi_20
|
#undef Chi_20
|
||||||
#undef Chi_21
|
#undef Chi_21
|
||||||
#undef Chi_22
|
#undef Chi_22
|
||||||
#undef Chi_30
|
#undef Chi_30
|
||||||
#undef Chi_31
|
#undef Chi_31
|
||||||
#undef Chi_32
|
#undef Chi_32
|
||||||
|
|
||||||
#undef BCAST0
|
#undef BCAST0
|
||||||
#undef BCAST1
|
#undef BCAST1
|
||||||
#undef BCAST2
|
#undef BCAST2
|
||||||
#undef BCAST3
|
#undef BCAST3
|
||||||
#undef BCAST4
|
#undef BCAST4
|
||||||
#undef BCAST5
|
#undef BCAST5
|
||||||
#undef BCAST6
|
#undef BCAST6
|
||||||
#undef BCAST7
|
#undef BCAST7
|
||||||
#undef BCAST8
|
#undef BCAST8
|
||||||
#undef BCAST9
|
#undef BCAST9
|
||||||
#undef BCAST10
|
#undef BCAST10
|
||||||
#undef BCAST11
|
#undef BCAST11
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
// Z-mobius version
|
// Z-mobius version
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInternalZAsm(const FermionField& psi, FermionField& chi,
|
void MobiusEOFAFermion<Impl>::MooeeInternalZAsm(const FermionField& psi, FermionField& chi,
|
||||||
int LLs, int site, Vector<iSinglet<Simd> >& Matp, Vector<iSinglet<Simd> >& Matm)
|
int LLs, int site, Vector<iSinglet<Simd> >& Matp, Vector<iSinglet<Simd> >& Matm)
|
||||||
{
|
{
|
||||||
std::cout << "Error: zMobius not implemented for EOFA" << std::endl;
|
std::cout << "Error: zMobius not implemented for EOFA" << std::endl;
|
||||||
exit(-1);
|
exit(-1);
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
void MobiusEOFAFermion<Impl>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv)
|
void MobiusEOFAFermion<Impl>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv)
|
||||||
{
|
{
|
||||||
int Ls = this->Ls;
|
int Ls = this->Ls;
|
||||||
int LLs = psi._grid->_rdimensions[0];
|
int LLs = psi._grid->_rdimensions[0];
|
||||||
int vol = psi._grid->oSites()/LLs;
|
int vol = psi._grid->oSites()/LLs;
|
||||||
@ -954,30 +953,30 @@ namespace QCD {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->MooeeInvTime += usecond();
|
this->MooeeInvTime += usecond();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOBIUS_EOFA_DPERP_VEC
|
#ifdef MOBIUS_EOFA_DPERP_VEC
|
||||||
|
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplD);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplD);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplF);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplF);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplD);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplD);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplF);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplF);
|
||||||
|
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplDF);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplDF);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplFH);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(DomainWallVec5dImplFH);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplDF);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplDF);
|
||||||
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplFH);
|
INSTANTIATE_DPERP_MOBIUS_EOFA(ZDomainWallVec5dImplFH);
|
||||||
|
|
||||||
template void MobiusEOFAFermion<DomainWallVec5dImplF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<DomainWallVec5dImplF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<DomainWallVec5dImplD>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<DomainWallVec5dImplD>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<ZDomainWallVec5dImplF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<ZDomainWallVec5dImplF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<ZDomainWallVec5dImplD>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<ZDomainWallVec5dImplD>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
|
|
||||||
template void MobiusEOFAFermion<DomainWallVec5dImplFH>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<DomainWallVec5dImplFH>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<DomainWallVec5dImplDF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<DomainWallVec5dImplDF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<ZDomainWallVec5dImplFH>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<ZDomainWallVec5dImplFH>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
template void MobiusEOFAFermion<ZDomainWallVec5dImplDF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
template void MobiusEOFAFermion<ZDomainWallVec5dImplDF>::MooeeInternal(const FermionField& psi, FermionField& chi, int dag, int inv);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}}
|
NAMESPACE_END(Grid);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user