Grid 0.7.0
Lattice_arith.h File Reference

Go to the source code of this file.

Macros

#define FAST_AXPY_NORM

Functions

 NAMESPACE_BEGIN (Grid)
template<class obj1, class obj2, class obj3>
void mult (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void mac (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void sub (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void add (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void mult (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const obj3 &rhs)
template<class obj1, class obj2, class obj3>
void mac (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const obj3 &rhs)
template<class obj1, class obj2, class obj3>
void sub (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const obj3 &rhs)
template<class obj1, class obj2, class obj3>
void add (Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const obj3 &rhs)
template<class obj1, class obj2, class obj3>
void mult (Lattice< obj1 > &ret, const obj2 &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void mac (Lattice< obj1 > &ret, const obj2 &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void sub (Lattice< obj1 > &ret, const obj2 &lhs, const Lattice< obj3 > &rhs)
template<class obj1, class obj2, class obj3>
void add (Lattice< obj1 > &ret, const obj2 &lhs, const Lattice< obj3 > &rhs)
template<class sobj, class vobj>
void axpy (Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
template<class sobj, class vobj>
void axpby (Lattice< vobj > &ret, sobj a, sobj b, const Lattice< vobj > &x, const Lattice< vobj > &y)
template<class sobj, class vobj>
RealD axpy_norm (Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
template<class sobj, class vobj>
RealD axpby_norm (Lattice< vobj > &ret, sobj a, sobj b, const Lattice< vobj > &x, const Lattice< vobj > &y)
template<class obj>
auto traceProduct (const Lattice< obj > &rhs_1, const Lattice< obj > &rhs_2) -> Lattice< decltype(trace(obj()))>
 Trace product.
template<class obj1, class obj2>
auto traceProduct (const Lattice< obj1 > &rhs_1, const obj2 &rhs2) -> Lattice< decltype(trace(obj1()))>
template<class obj1, class obj2>
auto traceProduct (const obj2 &rhs_2, const Lattice< obj1 > &rhs_1) -> Lattice< decltype(trace(obj1()))>
 NAMESPACE_END (Grid)

Macro Definition Documentation

◆ FAST_AXPY_NORM

#define FAST_AXPY_NORM

Definition at line 260 of file Lattice_arith.h.

Function Documentation

◆ NAMESPACE_BEGIN()

NAMESPACE_BEGIN ( Grid )

◆ mult() [1/3]

◆ mac() [1/3]

template<class obj1, class obj2, class obj3>
void mac ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const Lattice< obj3 > & rhs )
inline

◆ sub() [1/3]

template<class obj1, class obj2, class obj3>
void sub ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const Lattice< obj3 > & rhs )
inline

◆ add() [1/3]

template<class obj1, class obj2, class obj3>
void add ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const Lattice< obj3 > & rhs )
inline

◆ mult() [2/3]

template<class obj1, class obj2, class obj3>
void mult ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const obj3 & rhs )
inline

◆ mac() [2/3]

template<class obj1, class obj2, class obj3>
void mac ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const obj3 & rhs )
inline

◆ sub() [2/3]

template<class obj1, class obj2, class obj3>
void sub ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const obj3 & rhs )
inline

◆ add() [2/3]

template<class obj1, class obj2, class obj3>
void add ( Lattice< obj1 > & ret,
const Lattice< obj2 > & lhs,
const obj3 & rhs )
inline

◆ mult() [3/3]

template<class obj1, class obj2, class obj3>
void mult ( Lattice< obj1 > & ret,
const obj2 & lhs,
const Lattice< obj3 > & rhs )
inline

◆ mac() [3/3]

template<class obj1, class obj2, class obj3>
void mac ( Lattice< obj1 > & ret,
const obj2 & lhs,
const Lattice< obj3 > & rhs )
inline

◆ sub() [3/3]

template<class obj1, class obj2, class obj3>
void sub ( Lattice< obj1 > & ret,
const obj2 & lhs,
const Lattice< obj3 > & rhs )
inline

◆ add() [3/3]

template<class obj1, class obj2, class obj3>
void add ( Lattice< obj1 > & ret,
const obj2 & lhs,
const Lattice< obj3 > & rhs )
inline

◆ axpy()

template<class sobj, class vobj>
void axpy ( Lattice< vobj > & ret,
sobj a,
const Lattice< vobj > & x,
const Lattice< vobj > & y )
inline

Definition at line 232 of file Lattice_arith.h.

References accelerator_for, AcceleratorRead, AcceleratorWrite, autoView, LatticeAccelerator< vobj >::Checkerboard(), conformable(), and GRID_TRACE.

Referenced by basisDeflate(), WilsonFermion5D< Impl >::DW(), PrecGeneralisedConjugateResidual< Field >::GCRnStep(), PrecGeneralisedConjugateResidualNonHermitian< Field >::GCRnStep(), ConjugateGradientMultiShiftMixedPrecSupport::ShiftedLinop< Field >::HermOp(), CompactWilsonCloverFermion5D< Impl, CloverHelpers >::M(), CompactWilsonCloverFermion< Impl, CloverHelpers >::M(), ImprovedStaggeredFermion5D< Impl >::M(), ImprovedStaggeredFermion< Impl >::M(), NaiveStaggeredFermion< Impl >::M(), WilsonTMFermion5D< WilsonImplF >::M(), WilsonTMFermion< Impl >::M(), CompactWilsonCloverFermion5D< Impl, CloverHelpers >::Mdag(), CompactWilsonCloverFermion< Impl, CloverHelpers >::Mdag(), ImprovedStaggeredFermion5D< Impl >::Mdag(), ImprovedStaggeredFermion< Impl >::Mdag(), NaiveStaggeredFermion< Impl >::Mdag(), WilsonTMFermion< Impl >::Mdag(), PartialFractionFermion5D< Impl >::MooeeInv_internal(), NonHermitianSchurDiagMooeeOperator< Matrix, Field >::Mpc(), NonHermitianSchurDiagOneOperator< Matrix, Field >::Mpc(), NonHermitianSchurDiagTwoOperator< Matrix, Field >::Mpc(), SchurDiagMooeeOperator< Matrix, Field >::Mpc(), SchurDiagOneOperator< Matrix, Field >::Mpc(), SchurDiagTwoOperator< Matrix, Field >::Mpc(), NonHermitianSchurDiagMooeeOperator< Matrix, Field >::MpcDag(), NonHermitianSchurDiagOneOperator< Matrix, Field >::MpcDag(), NonHermitianSchurDiagTwoOperator< Matrix, Field >::MpcDag(), SchurDiagMooeeOperator< Matrix, Field >::MpcDag(), SchurDiagOneOperator< Matrix, Field >::MpcDag(), SchurDiagTwoOperator< Matrix, Field >::MpcDag(), Chebyshev< Field >::operator()(), ConjugateGradientMultiShift< Field >::operator()(), ConjugateGradientMultiShiftMixedPrec< FieldD, FieldF, type, type >::operator()(), ConjugateGradientMultiShiftMixedPrecCleanup< FieldD, FieldF, type, type >::operator()(), ConjugateResidual< Field >::operator()(), Grid::CommunicationAvoidingGeneralisedMinimalResidual< Field >::operator()(), Grid::DeflatedGuesser< Field >::operator()(), Grid::FlexibleCommunicationAvoidingGeneralisedMinimalResidual< Field >::operator()(), Grid::FlexibleGeneralisedMinimalResidual< Field >::operator()(), Grid::GeneralisedMinimalResidual< Field >::operator()(), Grid::LocalCoherenceDeflatedGuesser< FineField, CoarseField >::operator()(), Grid::LocalCoherenceDeflatedGuesser< FineField, CoarseField >::operator()(), Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::operator()(), MixedPrecisionBiCGSTAB< FieldD, FieldF, type, type >::operator()(), MixedPrecisionConjugateGradient< FieldD, FieldF, type, type >::operator()(), MixedPrecisionConjugateGradientBatched< FieldD, FieldF, type, type >::operator()(), PrecConjugateResidual< Field >::operator()(), PrecGeneralisedConjugateResidual< Field >::operator()(), PrecGeneralisedConjugateResidualNonHermitian< Field >::operator()(), TwoLevelCG< Field >::operator()(), TwoLevelCG< Field >::operator()(), TwoLevelADEF1defl< Field >::PcgM1(), TwoLevelADEF2< Field, CoarseField, Aggregation >::PcgM1(), TwoLevelADEF2mrhs< Field, CoarseField >::PcgM1(), TwoLevelCGmrhs< Field >::SolvePrecBlockCG(), and TwoLevelCGmrhs< Field >::SolveSingleSystem().

◆ axpby()

◆ axpy_norm()

◆ axpby_norm()

template<class sobj, class vobj>
RealD axpby_norm ( Lattice< vobj > & ret,
sobj a,
sobj b,
const Lattice< vobj > & x,
const Lattice< vobj > & y )
inline

Definition at line 274 of file Lattice_arith.h.

References axpby_norm_fast(), GRID_TRACE, and norm2().

◆ traceProduct() [1/3]

template<class obj>
auto traceProduct ( const Lattice< obj > & rhs_1,
const Lattice< obj > & rhs_2 ) -> Lattice< decltype(trace(obj()))>

Trace product.

Definition at line 287 of file Lattice_arith.h.

References accelerator_for, AcceleratorRead, AcceleratorWrite, autoView, and trace().

Referenced by traceProduct().

◆ traceProduct() [2/3]

template<class obj1, class obj2>
auto traceProduct ( const Lattice< obj1 > & rhs_1,
const obj2 & rhs2 ) -> Lattice< decltype(trace(obj1()))>

Definition at line 302 of file Lattice_arith.h.

References accelerator_for, AcceleratorRead, AcceleratorWrite, autoView, and trace().

◆ traceProduct() [3/3]

template<class obj1, class obj2>
auto traceProduct ( const obj2 & rhs_2,
const Lattice< obj1 > & rhs_1 ) -> Lattice< decltype(trace(obj1()))>

Definition at line 315 of file Lattice_arith.h.

References traceProduct().

◆ NAMESPACE_END()

NAMESPACE_END ( Grid )