diff --git a/Grid/algorithms/iterative/ConjugateGradient.h b/Grid/algorithms/iterative/ConjugateGradient.h index d40fee7b..c8180a11 100644 --- a/Grid/algorithms/iterative/ConjugateGradient.h +++ b/Grid/algorithms/iterative/ConjugateGradient.h @@ -140,15 +140,17 @@ public: b = cp / c; LinearCombTimer.Start(); - auto psi_v = psi.View(AcceleratorWrite); - auto p_v = p.View(AcceleratorWrite); - auto r_v = r.View(AcceleratorWrite); - accelerator_for(ss,p_v.size(), Field::vector_object::Nsimd(),{ - coalescedWrite(psi_v[ss], a * p_v(ss) + psi_v(ss)); - coalescedWrite(p_v[ss] , b * p_v(ss) + r_v (ss)); - }); - LinearCombTimer.Stop(); - LinalgTimer.Stop(); + { + auto psi_v = psi.View(AcceleratorWrite); + auto p_v = p.View(AcceleratorWrite); + auto r_v = r.View(AcceleratorWrite); + accelerator_for(ss,p_v.size(), Field::vector_object::Nsimd(),{ + coalescedWrite(psi_v[ss], a * p_v(ss) + psi_v(ss)); + coalescedWrite(p_v[ss] , b * p_v(ss) + r_v (ss)); + }); + LinearCombTimer.Stop(); + LinalgTimer.Stop(); + } std::cout << GridLogIterative << "ConjugateGradient: Iteration " << k << " residual " << sqrt(cp/ssq) << " target " << Tolerance << std::endl;