Grid 0.7.0
Lattice_transfer.h File Reference

Go to the source code of this file.

Data Structures

class  precisionChangeWorkspace

Functions

 NAMESPACE_BEGIN (Grid)
void subdivides (GridBase *coarse, GridBase *fine)
template<class vobj>
void pickCheckerboard (int cb, Lattice< vobj > &half, const Lattice< vobj > &full)
template<class vobj>
void setCheckerboard (Lattice< vobj > &full, const Lattice< vobj > &half)
template<class vobj>
void acceleratorPickCheckerboard (int cb, Lattice< vobj > &half, const Lattice< vobj > &full, int checker_dim_half=0)
template<class vobj>
void acceleratorSetCheckerboard (Lattice< vobj > &full, const Lattice< vobj > &half, int checker_dim_half=0)
accelerator_inline void convertType (ComplexD &out, const std::complex< double > &in)
accelerator_inline void convertType (ComplexF &out, const std::complex< float > &in)
template<typename T>
accelerator_inline EnableIf< isGridFundamental< T > > convertType (T &out, const T &in)
accelerator_inline void convertType (vComplexF &out, const vComplexD2 &in)
accelerator_inline void convertType (vComplexD2 &out, const vComplexF &in)
template<typename T1, typename T2>
accelerator_inline void convertType (iScalar< T1 > &out, const iScalar< T2 > &in)
template<typename T1, typename T2>
accelerator_inline NotEnableIf< isGridScalar< T1 > > convertType (T1 &out, const iScalar< T2 > &in)
template<typename T1, typename T2>
accelerator_inline NotEnableIf< isGridScalar< T2 > > convertType (iScalar< T1 > &out, const T2 &in)
template<typename T1, typename T2, int N>
accelerator_inline void convertType (iMatrix< T1, N > &out, const iMatrix< T2, N > &in)
template<typename T1, typename T2, int N>
accelerator_inline void convertType (iVector< T1, N > &out, const iVector< T2, N > &in)
template<typename T1, typename T2>
accelerator_inline void convertType (Lattice< T1 > &out, const Lattice< T2 > &in)
template<class vobj>
auto localInnerProductD (const Lattice< vobj > &lhs, const Lattice< vobj > &rhs) -> Lattice< iScalar< decltype(TensorRemove(innerProductD2(lhs.View(CpuRead)[0], rhs.View(CpuRead)[0])))> >
template<class vobj, class CComplex, int nbasis, class VLattice>
void blockProject (Lattice< iVector< CComplex, nbasis > > &coarseData, const Lattice< vobj > &fineData, const VLattice &Basis)
template<class vobj, class CComplex, int nbasis, class VLattice>
void batchBlockProject (std::vector< Lattice< iVector< CComplex, nbasis > > > &coarseData, const std::vector< Lattice< vobj > > &fineData, const VLattice &Basis)
template<class vobj, class vobj2, class CComplex>
void blockZAXPY (Lattice< vobj > &fineZ, const Lattice< CComplex > &coarseA, const Lattice< vobj2 > &fineX, const Lattice< vobj > &fineY)
template<class vobj, class CComplex>
void blockInnerProductD (Lattice< CComplex > &CoarseInner, const Lattice< vobj > &fineX, const Lattice< vobj > &fineY)
template<class vobj, class CComplex>
void blockInnerProduct (Lattice< CComplex > &CoarseInner, const Lattice< vobj > &fineX, const Lattice< vobj > &fineY)
template<class vobj, class CComplex>
void blockNormalise (Lattice< CComplex > &ip, Lattice< vobj > &fineX)
template<class vobj>
void blockSum (Lattice< vobj > &coarseData, const Lattice< vobj > &fineData)
template<class vobj>
void blockPick (GridBase *coarse, const Lattice< vobj > &unpicked, Lattice< vobj > &picked, Coordinate coor)
template<class CComplex, class VLattice>
void blockOrthonormalize (Lattice< CComplex > &ip, VLattice &Basis)
template<class vobj, class CComplex>
void blockOrthogonalise (Lattice< CComplex > &ip, std::vector< Lattice< vobj > > &Basis)
template<class vobj, class CComplex, int nbasis, class VLattice>
void blockPromote (const Lattice< iVector< CComplex, nbasis > > &coarseData, Lattice< vobj > &fineData, const VLattice &Basis)
template<class vobj, class CComplex, int nbasis, class VLattice>
void batchBlockPromote (const std::vector< Lattice< iVector< CComplex, nbasis > > > &coarseData, std::vector< Lattice< vobj > > &fineData, const VLattice &Basis)
template<class vobj, class vvobj>
void localConvert (const Lattice< vobj > &in, Lattice< vvobj > &out)
template<class vobj>
void localCopyRegion (const Lattice< vobj > &From, Lattice< vobj > &To, Coordinate FromLowerLeft, Coordinate ToLowerLeft, Coordinate RegionSize)
template<class vobj>
void InsertSliceFast (const Lattice< vobj > &From, Lattice< vobj > &To, int slice, int orthog)
template<class vobj>
void ExtractSliceFast (Lattice< vobj > &To, const Lattice< vobj > &From, int slice, int orthog)
template<class vobj>
void InsertSlice (const Lattice< vobj > &lowDim, Lattice< vobj > &higherDim, int slice, int orthog)
template<class vobj>
void ExtractSlice (Lattice< vobj > &lowDim, const Lattice< vobj > &higherDim, int slice, int orthog)
template<class vobj>
void InsertSliceLocal (const Lattice< vobj > &lowDim, Lattice< vobj > &higherDim, int slice_lo, int slice_hi, int orthog)
template<class vobj>
void ExtractSliceLocal (Lattice< vobj > &lowDim, const Lattice< vobj > &higherDim, int slice_lo, int slice_hi, int orthog)
template<class vobj>
void Replicate (const Lattice< vobj > &coarse, Lattice< vobj > &fine)
template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type unvectorizeToLexOrdArray (std::vector< sobj > &out, const Lattice< vobj > &in)
template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type unvectorizeToRevLexOrdArray (std::vector< sobj > &out, const Lattice< vobj > &in)
template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type vectorizeFromLexOrdArray (std::vector< sobj > &in, Lattice< vobj > &out)
template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type vectorizeFromRevLexOrdArray (std::vector< sobj > &in, Lattice< vobj > &out)
template<class VobjOut, class VobjIn>
void precisionChangeFast (Lattice< VobjOut > &out, const Lattice< VobjIn > &in)
template<class VobjOut, class VobjIn>
void precisionChangeOrig (Lattice< VobjOut > &out, const Lattice< VobjIn > &in)
template<class VobjOut, class VobjIn>
auto _precisionChangeFastWrap (Lattice< VobjOut > &out, const Lattice< VobjIn > &in, int dummy) -> decltype(precisionChange(((typename VobjOut::vector_type *) 0),((typename VobjIn::vector_type *) 0), 1), int())
template<class VobjOut, class VobjIn>
int _precisionChangeFastWrap (Lattice< VobjOut > &out, const Lattice< VobjIn > &in, long dummy)
template<class VobjOut, class VobjIn>
void precisionChange (Lattice< VobjOut > &out, const Lattice< VobjIn > &in, const precisionChangeWorkspace &workspace)
template<class VobjOut, class VobjIn>
void precisionChange (Lattice< VobjOut > &out, const Lattice< VobjIn > &in)
template<class Vobj>
void Grid_split (std::vector< Lattice< Vobj > > &full, Lattice< Vobj > &split)
template<class Vobj>
void Grid_split (Lattice< Vobj > &full, Lattice< Vobj > &split)
template<class Vobj>
void Grid_unsplit (std::vector< Lattice< Vobj > > &full, Lattice< Vobj > &split)
template<class vobj, class CComplex, int nbasis, class VLattice>
void blockProjectFast (Lattice< iVector< CComplex, nbasis > > &coarseData, const Lattice< vobj > &fineData, const VLattice &Basis)
 NAMESPACE_END (Grid)

Function Documentation

◆ NAMESPACE_BEGIN()

NAMESPACE_BEGIN ( Grid )

◆ subdivides()

◆ pickCheckerboard()

template<class vobj>
void pickCheckerboard ( int cb,
Lattice< vobj > & half,
const Lattice< vobj > & full )
inline

Definition at line 50 of file Lattice_transfer.h.

References autoView, LatticeAccelerator< vobj >::Checkerboard(), CpuRead, CpuWrite, Lattice< vobj >::Grid(), GridBase::oSites(), and thread_for.

Referenced by ImprovedStaggeredFermion5D< Impl >::CopyGaugeCheckerboards(), ImprovedStaggeredFermion< Impl >::CopyGaugeCheckerboards(), NaiveStaggeredFermion< Impl >::CopyGaugeCheckerboards(), DWFSlowFermion< WilsonImplF >::DWFSlowFermion(), GridParallelRNG::fill(), CoarsenedMatrix< Fobj, CComplex, nbasis >::FillHalfCbs(), CompactWilsonCloverFermion5D< Impl, CloverHelpers >::ImportGauge(), CompactWilsonCloverFermion< Impl, CloverHelpers >::ImportGauge(), WilsonCloverFermion< Impl, CloverHelpers >::ImportGauge(), Grid::SchurRedBlackBase< Field >::operator()(), Grid::SchurRedBlackBase< Field >::operator()(), Grid::SchurRedBlackBase< Field >::RedBlackSolution(), Grid::NonHermitianSchurRedBlackDiagMooeeSolve< Field >::RedBlackSource(), Grid::NonHermitianSchurRedBlackDiagTwoSolve< Field >::RedBlackSource(), Grid::SchurRedBlackDiagMooeeSolve< Field >::RedBlackSource(), Grid::SchurRedBlackDiagOneSolve< Field >::RedBlackSource(), Grid::SchurRedBlackDiagTwoSolve< Field >::RedBlackSource(), Grid::SchurRedBlackStaggeredSolve< Field >::RedBlackSource(), GeneralEvenOddRatioRationalPseudoFermionAction< Impl >::refresh(), OneFlavourEvenOddRationalPseudoFermionAction< Impl >::refresh(), TwoFlavourEvenOddPseudoFermionAction< Impl >::refresh(), TwoFlavourEvenOddRatioPseudoFermionAction< Impl >::refresh(), CompactWilsonCloverHelpers< Impl >::SetupMasks(), and SmearedConfigurationMasked< Gimpl >::SmearedConfigurationMasked().

◆ setCheckerboard()

◆ acceleratorPickCheckerboard()

template<class vobj>
void acceleratorPickCheckerboard ( int cb,
Lattice< vobj > & half,
const Lattice< vobj > & full,
int checker_dim_half = 0 )
inline

◆ acceleratorSetCheckerboard()

◆ convertType() [1/11]

accelerator_inline void convertType ( ComplexD & out,
const std::complex< double > & in )

◆ convertType() [2/11]

accelerator_inline void convertType ( ComplexF & out,
const std::complex< float > & in )

Definition at line 166 of file Lattice_transfer.h.

References accelerator_inline.

◆ convertType() [3/11]

template<typename T>
accelerator_inline EnableIf< isGridFundamental< T > > convertType ( T & out,
const T & in )

Definition at line 171 of file Lattice_transfer.h.

References accelerator_inline.

◆ convertType() [4/11]

accelerator_inline void convertType ( vComplexF & out,
const vComplexD2 & in )

Definition at line 196 of file Lattice_transfer.h.

References accelerator_inline, and precisionChange().

◆ convertType() [5/11]

accelerator_inline void convertType ( vComplexD2 & out,
const vComplexF & in )

Definition at line 200 of file Lattice_transfer.h.

References accelerator_inline, and precisionChange().

◆ convertType() [6/11]

template<typename T1, typename T2>
accelerator_inline void convertType ( iScalar< T1 > & out,
const iScalar< T2 > & in )

◆ convertType() [7/11]

template<typename T1, typename T2>
accelerator_inline NotEnableIf< isGridScalar< T1 > > convertType ( T1 & out,
const iScalar< T2 > & in )

Definition at line 210 of file Lattice_transfer.h.

References iScalar< vtype >::_internal, accelerator_inline, convertType(), and T1.

◆ convertType() [8/11]

template<typename T1, typename T2>
accelerator_inline NotEnableIf< isGridScalar< T2 > > convertType ( iScalar< T1 > & out,
const T2 & in )

Definition at line 215 of file Lattice_transfer.h.

References iScalar< vtype >::_internal, accelerator_inline, convertType(), and T2.

◆ convertType() [9/11]

template<typename T1, typename T2, int N>
accelerator_inline void convertType ( iMatrix< T1, N > & out,
const iMatrix< T2, N > & in )

◆ convertType() [10/11]

template<typename T1, typename T2, int N>
accelerator_inline void convertType ( iVector< T1, N > & out,
const iVector< T2, N > & in )

◆ convertType() [11/11]

template<typename T1, typename T2>
accelerator_inline void convertType ( Lattice< T1 > & out,
const Lattice< T2 > & in )

◆ localInnerProductD()

template<class vobj>
auto localInnerProductD ( const Lattice< vobj > & lhs,
const Lattice< vobj > & rhs ) -> Lattice< iScalar< decltype(TensorRemove(innerProductD2(lhs.View(CpuRead)[0], rhs.View(CpuRead)[0])))> >
inline

◆ blockProject()

◆ batchBlockProject()

template<class vobj, class CComplex, int nbasis, class VLattice>
void batchBlockProject ( std::vector< Lattice< iVector< CComplex, nbasis > > > & coarseData,
const std::vector< Lattice< vobj > > & fineData,
const VLattice & Basis )
inline

◆ blockZAXPY()

◆ blockInnerProductD()

template<class vobj, class CComplex>
void blockInnerProductD ( Lattice< CComplex > & CoarseInner,
const Lattice< vobj > & fineX,
const Lattice< vobj > & fineY )
inline

◆ blockInnerProduct()

template<class vobj, class CComplex>
void blockInnerProduct ( Lattice< CComplex > & CoarseInner,
const Lattice< vobj > & fineX,
const Lattice< vobj > & fineY )
inline

◆ blockNormalise()

template<class vobj, class CComplex>
void blockNormalise ( Lattice< CComplex > & ip,
Lattice< vobj > & fineX )
inline

◆ blockSum()

◆ blockPick()

template<class vobj>
void blockPick ( GridBase * coarse,
const Lattice< vobj > & unpicked,
Lattice< vobj > & picked,
Coordinate coor )
inline

◆ blockOrthonormalize()

template<class CComplex, class VLattice>
void blockOrthonormalize ( Lattice< CComplex > & ip,
VLattice & Basis )
inline

◆ blockOrthogonalise()

◆ blockPromote()

◆ batchBlockPromote()

template<class vobj, class CComplex, int nbasis, class VLattice>
void batchBlockPromote ( const std::vector< Lattice< iVector< CComplex, nbasis > > > & coarseData,
std::vector< Lattice< vobj > > & fineData,
const VLattice & Basis )
inline

Definition at line 685 of file Lattice_transfer.h.

References blockZAXPY(), Lattice< vobj >::Grid(), and PeekIndex().

◆ localConvert()

template<class vobj, class vvobj>
void localConvert ( const Lattice< vobj > & in,
Lattice< vvobj > & out )

◆ localCopyRegion()

◆ InsertSliceFast()

◆ ExtractSliceFast()

◆ InsertSlice()

◆ ExtractSlice()

◆ InsertSliceLocal()

template<class vobj>
void InsertSliceLocal ( const Lattice< vobj > & lowDim,
Lattice< vobj > & higherDim,
int slice_lo,
int slice_hi,
int orthog )

◆ ExtractSliceLocal()

template<class vobj>
void ExtractSliceLocal ( Lattice< vobj > & lowDim,
const Lattice< vobj > & higherDim,
int slice_lo,
int slice_hi,
int orthog )

Definition at line 1078 of file Lattice_transfer.h.

References InsertSliceLocal().

◆ Replicate()

◆ unvectorizeToLexOrdArray()

template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type unvectorizeToLexOrdArray ( std::vector< sobj > & out,
const Lattice< vobj > & in )

◆ unvectorizeToRevLexOrdArray()

template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type unvectorizeToRevLexOrdArray ( std::vector< sobj > & out,
const Lattice< vobj > & in )

◆ vectorizeFromLexOrdArray()

template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type vectorizeFromLexOrdArray ( std::vector< sobj > & in,
Lattice< vobj > & out )

◆ vectorizeFromRevLexOrdArray()

template<typename vobj, typename sobj>
std::enable_if< isSIMDvectorized< vobj >::value &&!isSIMDvectorized< sobj >::value, void >::type vectorizeFromRevLexOrdArray ( std::vector< sobj > & in,
Lattice< vobj > & out )

◆ precisionChangeFast()

template<class VobjOut, class VobjIn>
void precisionChangeFast ( Lattice< VobjOut > & out,
const Lattice< VobjIn > & in )

◆ precisionChangeOrig()

◆ _precisionChangeFastWrap() [1/2]

template<class VobjOut, class VobjIn>
auto _precisionChangeFastWrap ( Lattice< VobjOut > & out,
const Lattice< VobjIn > & in,
int dummy ) -> decltype(precisionChange(((typename VobjOut::vector_type *) 0),((typename VobjIn::vector_type *) 0), 1), int())

Definition at line 1444 of file Lattice_transfer.h.

References precisionChangeFast().

Referenced by precisionChange(), and precisionChange().

◆ _precisionChangeFastWrap() [2/2]

template<class VobjOut, class VobjIn>
int _precisionChangeFastWrap ( Lattice< VobjOut > & out,
const Lattice< VobjIn > & in,
long dummy )

Definition at line 1453 of file Lattice_transfer.h.

◆ precisionChange() [1/2]

◆ precisionChange() [2/2]

template<class VobjOut, class VobjIn>
void precisionChange ( Lattice< VobjOut > & out,
const Lattice< VobjIn > & in )

◆ Grid_split() [1/2]

◆ Grid_split() [2/2]

template<class Vobj>
void Grid_split ( Lattice< Vobj > & full,
Lattice< Vobj > & split )

◆ Grid_unsplit()

◆ blockProjectFast()

template<class vobj, class CComplex, int nbasis, class VLattice>
void blockProjectFast ( Lattice< iVector< CComplex, nbasis > > & coarseData,
const Lattice< vobj > & fineData,
const VLattice & Basis )
inline

◆ NAMESPACE_END()

NAMESPACE_END ( Grid )