34 const std::vector<ColorSpinorField*> &B;
40 const int NblockOrtho;
70 mutable int *fine_to_coarse_h;
75 mutable int *coarse_to_fine_h;
81 mutable int *fine_to_coarse_d;
86 mutable int *coarse_to_fine_d;
104 mutable bool enable_gpu;
107 mutable bool enable_cpu;
111 mutable bool use_gpu;
133 void createGeoMap(
int *geo_bs);
139 void createSpinMap(
int spin_bs);
150 mutable double flops_;
171 Transfer(
const std::vector<ColorSpinorField *> &B,
int Nvec,
int NblockOrtho,
int *geo_bs,
int spin_bs,
222 int nvec()
const {
return Nvec;}
234 const int *
Geo_bs()
const {
return geo_bs;}
274 double flops()
const;
291 const int *coarse_to_fine,
const int *geo_bs,
const int spin_bs,
const int n_block_ortho);
304 int Nvec,
const int *fine_to_coarse,
const int *
const *spin_map,
318 int Nvec,
const int *fine_to_coarse,
const int *coarse_to_fine,
const int *
const *spin_map,
QudaFieldLocation Location() const
void reset()
for resetting the Transfer when the null vectors have changed
void R(ColorSpinorField &out, const ColorSpinorField &in) const
Transfer(const std::vector< ColorSpinorField * > &B, int Nvec, int NblockOrtho, int *geo_bs, int spin_bs, QudaPrecision null_precision, const QudaTransferType transfer_type, TimeProfile &profile)
const int * Geo_bs() const
void setSiteSubset(QudaSiteSubset site_subset, QudaParity parity)
Sets whether the transfer operator is to act on full fields or single parity fields,...
void setTransferGPU(bool use_gpu) const
const int * coarseToFine(QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const
QudaPrecision NullPrecision(QudaFieldLocation location) const
The precision of the packed null-space vectors.
const int * fineToCoarse(QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const
QudaTransferType getTransferType() const
void P(ColorSpinorField &out, const ColorSpinorField &in) const
const ColorSpinorField & Vectors(QudaFieldLocation location=QUDA_INVALID_FIELD_LOCATION) const
quda::mgarray< int > n_block_ortho
enum QudaPrecision_s QudaPrecision
@ QUDA_CUDA_FIELD_LOCATION
@ QUDA_CPU_FIELD_LOCATION
@ QUDA_INVALID_FIELD_LOCATION
enum QudaTransferType_s QudaTransferType
enum QudaSiteSubset_s QudaSiteSubset
enum QudaFieldLocation_s QudaFieldLocation
enum QudaParity_s QudaParity
void StaggeredRestrict(ColorSpinorField &out, const ColorSpinorField &in, const int *fine_to_coarse, const int *const *spin_map, int parity=QUDA_INVALID_PARITY)
Apply the unitary "restriction" operator for Kahler-Dirac preconditioning.
void Restrict(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &v, int Nvec, const int *fine_to_coarse, const int *coarse_to_fine, const int *const *spin_map, int parity=QUDA_INVALID_PARITY)
Apply the restriction operator.
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 StaggeredProlongate(ColorSpinorField &out, const ColorSpinorField &in, const int *fine_to_coarse, const int *const *spin_map, int parity=QUDA_INVALID_PARITY)
Apply the unitary "prolongation" operator for Kahler-Dirac preconditioning.
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.