QUDA
v1.1.0
A library for QCD on GPUs
|
#include <transfer.h>
Public Member Functions | |
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) | |
virtual | ~Transfer () |
void | reset () |
for resetting the Transfer when the null vectors have changed More... | |
void | P (ColorSpinorField &out, const ColorSpinorField &in) const |
void | R (ColorSpinorField &out, const ColorSpinorField &in) const |
QudaPrecision | NullPrecision (QudaFieldLocation location) const |
The precision of the packed null-space vectors. More... | |
const ColorSpinorField & | Vectors (QudaFieldLocation location=QUDA_INVALID_FIELD_LOCATION) const |
int | nvec () const |
int | Spin_bs () const |
const int * | Geo_bs () const |
QudaTransferType | getTransferType () const |
const int * | fineToCoarse (QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const |
const int * | coarseToFine (QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const |
void | setTransferGPU (bool use_gpu) const |
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. More... | |
double | flops () const |
The transfer class defines the inter-grid operators that connect fine and coarse grids. This implements both restriction and prologation methods. The transfer operator is fully defined at object creation time, and defined by the null-space vectors and the coarsening pattern that are passed to it.
At present only the restriction (R) and prolongation (P) methods have been offloaded to run on the GPU, with the block orthogonlization yet to be offloaded.
Definition at line 29 of file transfer.h.
quda::Transfer::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 | ||
) |
The constructor for Transfer
B | Array of null-space vectors |
Nvec | Number of null-space vectors |
NblockOrtho | Number of times to Gram-Schmidt within block ortho |
d | The Dirac operator to which these null-space vectors correspond |
geo_bs | The geometric block sizes to use |
spin_bs | The spin block sizes to use |
parity | For single-parity fields are these QUDA_EVEN_PARITY or QUDA_ODD_PARITY |
null_precision | The precision to store the null-space basis vectors in |
enable_gpu | Whether to enable this to run on GPU (as well as CPU) |
Definition at line 21 of file transfer.cpp.
|
virtual |
The destructor for Transfer
Definition at line 251 of file transfer.cpp.
|
inline |
Definition at line 251 of file transfer.h.
|
inline |
Definition at line 245 of file transfer.h.
double quda::Transfer::flops | ( | ) | const |
|
inline |
Returns the geometrical coarse grid blocking
Definition at line 234 of file transfer.h.
|
inline |
Returns the transfer type; used to inform staggered-type coarsenings
Definition at line 240 of file transfer.h.
|
inline |
The precision of the packed null-space vectors.
Definition at line 199 of file transfer.h.
|
inline |
void quda::Transfer::P | ( | ColorSpinorField & | out, |
const ColorSpinorField & | in | ||
) | const |
Apply the prolongator
out | The resulting field on the fine lattice |
in | The input field on the coarse lattice |
Definition at line 350 of file transfer.cpp.
void quda::Transfer::R | ( | ColorSpinorField & | out, |
const ColorSpinorField & | in | ||
) | const |
Apply the restrictor
out | The resulting field on the coarse lattice |
in | The input field on the fine lattice |
Definition at line 412 of file transfer.cpp.
void quda::Transfer::reset | ( | ) |
for resetting the Transfer when the null vectors have changed
Definition at line 226 of file transfer.cpp.
void quda::Transfer::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.
[in] | site_subset | The site_subset of the fine-grid fields |
[in] | parity | The parity of the single-parity fields (if applicable) |
Definition at line 273 of file transfer.cpp.
|
inline |
Sets where the prolongator / restrictor should take place
location | Location where the transfer operator should be computed |
Definition at line 258 of file transfer.h.
|
inline |
Returns the amount of spin blocking. Defined as zero when coarsening staggered.
Definition at line 228 of file transfer.h.
|
inline |
Returns a const reference to the V field
location | Which memory space are we requesting |
Definition at line 209 of file transfer.h.