diff --git a/lib/qcd/action/fermion/FermionOperatorImpl.h b/lib/qcd/action/fermion/FermionOperatorImpl.h index 99bd753b..2e297e69 100644 --- a/lib/qcd/action/fermion/FermionOperatorImpl.h +++ b/lib/qcd/action/fermion/FermionOperatorImpl.h @@ -214,6 +214,16 @@ public: { mult(&phi(), &U(mu), &chi()); } + + static accelerator_inline void multLinkGpu(int lane, + typename SiteHalfSpinor::scalar_object &phi, + const SiteDoubledGaugeField &U, + const typename SiteHalfSpinor::scalar_object &chi, + int mu) + { + auto U_l = extractLaneGpu(lane,U(mu)); + phi() = U_l * chi(); + } static accelerator_inline void multLinkProp(SitePropagator &phi, const SiteDoubledGaugeField &U, @@ -355,6 +365,16 @@ public: mult(&phi(), &UU(), &chi()); } + static accelerator_inline void multLinkGpu(int lane, + typename SiteHalfSpinor::scalar_object &phi, + const SiteDoubledGaugeField &U, + const typename SiteHalfSpinor::scalar_object &chi, + int mu) + { + auto U_l = U(mu); + phi() = U_l * chi(); + } + static accelerator_inline void multLinkProp(SitePropagator &phi, const SiteDoubledGaugeField &U, const SitePropagator &chi,int mu)