1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-18 07:47:06 +01:00

Faster implementation of conserved current site contraction. Added 5D vectorised support, but not G-parity.

This commit is contained in:
Lanny91
2017-06-12 10:41:02 +01:00
parent 2d433ba307
commit 5633a2db20
5 changed files with 198 additions and 49 deletions

View File

@ -361,8 +361,24 @@ void WilsonFermion<Impl>::ContractConservedCurrent(PropagatorField &q_in_1,
conformable(_grid, q_in_1._grid);
conformable(_grid, q_in_2._grid);
conformable(_grid, q_out._grid);
Kernels::ContractConservedCurrentInternal(q_in_1, q_in_2, q_out,
Umu, curr_type, mu);
PropagatorField tmp(_grid);
q_out = zero;
// Forward, need q1(x + mu), q2(x)
tmp = Cshift(q_in_1, mu, 1);
parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU)
{
Kernels::ContractConservedCurrentSiteFwd(tmp, q_in_2, q_out, Umu,
mu, sU, sU, sU, sU);
}
// Backward, need q1(x), q2(x + mu)
tmp = Cshift(q_in_2, mu, 1);
parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU)
{
Kernels::ContractConservedCurrentSiteBwd(q_in_1, tmp, q_out, Umu,
mu, sU, sU, sU, sU);
}
}
template <class Impl>