34 const std::vector<ColorSpinorField*> &
B;
167 Transfer(
const std::vector<ColorSpinorField *> &B,
int Nvec,
int NblockOrtho,
int *geo_bs,
int spin_bs,
264 double flops()
const;
294 int Nvec,
const int *fine_to_coarse,
const int *
const *
spin_map,
308 int Nvec,
const int *fine_to_coarse,
const int *coarse_to_fine,
const int *
const *spin_map,
313 #endif // _TRANSFER_H
void createTmp(QudaFieldLocation location) const
Allocate temporaries used when applying transfer operators.
Transfer(const std::vector< ColorSpinorField *> &B, int Nvec, int NblockOrtho, int *geo_bs, int spin_bs, QudaPrecision null_precision, TimeProfile &profile)
enum QudaPrecision_s QudaPrecision
void initializeLazy(QudaFieldLocation location) const
Lazy allocation of the transfer operator in a given location.
const QudaPrecision null_precision
void R(ColorSpinorField &out, const ColorSpinorField &in) const
void P(ColorSpinorField &out, const ColorSpinorField &in) const
ColorSpinorField * fine_tmp_h
void createV(QudaFieldLocation location) const
Allocate V field.
void setSiteSubset(QudaSiteSubset site_subset, QudaParity parity)
Sets whether the transfer operator is to act on full fields or single parity fields, and if single-parity which parity.
const int * fineToCoarse(QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const
ColorSpinorField * coarse_tmp_d
const int * coarseToFine(QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const
QudaSiteSubset site_subset
void createGeoMap(int *geo_bs)
Creates the map between fine and coarse grids.
ColorSpinorField * coarse_tmp_h
enum QudaParity_s QudaParity
const int * Geo_bs() const
enum QudaSiteSubset_s QudaSiteSubset
QudaPrecision NullPrecision(QudaFieldLocation location) const
The precision of the packed null-space vectors.
enum QudaFieldLocation_s QudaFieldLocation
cpuColorSpinorField * out
void setTransferGPU(bool use_gpu) const
ColorSpinorField * fine_tmp_d
void createSpinMap(int spin_bs)
Creates the map between fine spin and parity to coarse spin dimensions.
const std::vector< ColorSpinorField * > & B
int n_block_ortho[QUDA_MAX_MG_LEVEL]
void Prolongate(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &v, int Nvec, const int *fine_to_coarse, const int *const *spin_map, int parity=QUDA_INVALID_PARITY)
Apply the prolongation operator.
const ColorSpinorField & Vectors(QudaFieldLocation location=QUDA_INVALID_FIELD_LOCATION) const
void BlockOrthogonalize(ColorSpinorField &V, const std::vector< ColorSpinorField *> &B, const int *fine_to_coarse, const int *coarse_to_fine, const int *geo_bs, const int spin_bs, const int n_block_ortho)
Block orthogonnalize the matrix field, where the blocks are defined by lookup tables that map the fin...
void reset()
for resetting the Transfer when the null vectors have changed