mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
Abandon ET for clover application, use construct similar to multLink
This commit is contained in:
parent
0b6fd20c54
commit
add86cd7f4
@ -186,6 +186,26 @@ public:
|
|||||||
|
|
||||||
return T;
|
return T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class _Spinor>
|
||||||
|
static accelerator_inline void multClover(_Spinor& phi, const SiteClover& C, const _Spinor& chi) {
|
||||||
|
auto CC = coalescedRead(C);
|
||||||
|
mult(&phi, &CC, &chi);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class _SpinorField>
|
||||||
|
inline void multCloverField(_SpinorField& out, const CloverField& C, const _SpinorField& phi) {
|
||||||
|
const int Nsimd = SiteSpinor::Nsimd();
|
||||||
|
autoView(out_v, out, AcceleratorWrite);
|
||||||
|
autoView(phi_v, phi, AcceleratorRead);
|
||||||
|
autoView(C_v, C, AcceleratorRead);
|
||||||
|
typedef decltype(coalescedRead(out_v[0])) calcSpinor;
|
||||||
|
accelerator_for(sss,out.Grid()->oSites(),Nsimd,{
|
||||||
|
calcSpinor tmp;
|
||||||
|
multClover(tmp,C_v[sss],phi_v(sss));
|
||||||
|
coalescedWrite(out_v[sss],tmp);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
NAMESPACE_END(Grid);
|
NAMESPACE_END(Grid);
|
||||||
|
@ -243,12 +243,12 @@ void WilsonCloverFermion<Impl>::MooeeInternal(const FermionField &in, FermionFie
|
|||||||
{
|
{
|
||||||
Clover = (inv) ? &CloverTermInvDagEven : &CloverTermDagEven;
|
Clover = (inv) ? &CloverTermInvDagEven : &CloverTermDagEven;
|
||||||
}
|
}
|
||||||
out = *Clover * in;
|
Helpers::multCloverField(out, *Clover, in);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Clover = (inv) ? &CloverTermInv : &CloverTerm;
|
Clover = (inv) ? &CloverTermInv : &CloverTerm;
|
||||||
out = adj(*Clover) * in;
|
Helpers::multCloverField(out, *Clover, in); // don't bother with adj, hermitian anyway
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -266,13 +266,13 @@ void WilsonCloverFermion<Impl>::MooeeInternal(const FermionField &in, FermionFie
|
|||||||
// std::cout << "Calling clover term Even" << std::endl;
|
// std::cout << "Calling clover term Even" << std::endl;
|
||||||
Clover = (inv) ? &CloverTermInvEven : &CloverTermEven;
|
Clover = (inv) ? &CloverTermInvEven : &CloverTermEven;
|
||||||
}
|
}
|
||||||
out = *Clover * in;
|
Helpers::multCloverField(out, *Clover, in);
|
||||||
// std::cout << GridLogMessage << "*Clover.Checkerboard() " << (*Clover).Checkerboard() << std::endl;
|
// std::cout << GridLogMessage << "*Clover.Checkerboard() " << (*Clover).Checkerboard() << std::endl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Clover = (inv) ? &CloverTermInv : &CloverTerm;
|
Clover = (inv) ? &CloverTermInv : &CloverTerm;
|
||||||
out = *Clover * in;
|
Helpers::multCloverField(out, *Clover, in);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // MooeeInternal
|
} // MooeeInternal
|
||||||
|
Loading…
Reference in New Issue
Block a user