104 std::ostream&
operator<<(std::ostream& output,
const CloverFieldParam&
param);
179 int direct =
V(
false) ? 1 : 0;
257 void *evenNorm, *oddNorm;
259 void *evenInv, *oddInv;
260 void *evenInvNorm, *oddInvNorm;
390 even = clover.evenInv;
426 QudaFieldLocation location,
void *Out=0,
void *In=0,
void *outNorm=0,
void *inNorm=0);
465 std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &p,
466 std::vector<double> &coeff);
478 std::vector<ColorSpinorField*> &x,
479 std::vector<ColorSpinorField*> &p,
480 std::vector< std::vector<double> > &coeff);
520 #ifdef DYNAMIC_CLOVER
void * Norm(bool inverse=false)
QudaCloverFieldOrder order
double abs_min(bool inverse=false) const
Compute the absolute minimum of the field.
double norm1(bool inverse=false) const
Compute the L1 norm of the field.
QudaCloverFieldOrder Order() const
static CloverField * Create(const CloverFieldParam ¶m)
void setRho(double rho)
Bakes in the rho factor into the clover field, (for real diagonal additive Hasenbusch),...
void * V(bool inverse=false)
virtual int full_dim(int d) const
const void * V(bool inverse=false) const
const void * Norm(bool inverse=false) const
CloverField(const CloverFieldParam ¶m)
double abs_max(bool inverse=false) const
Compute the absolute maximum of the field (Linfinity norm)
double norm2(bool inverse=false) const
Compute the L2 norm squared of the field.
size_t TotalBytes() const
virtual ~cpuCloverField()
virtual void copy_to_buffer(void *buffer) const
Copy all contents of the field to a host buffer.
cpuCloverField(const CloverFieldParam ¶m)
virtual void copy_from_buffer(void *buffer)
Copy all contents of the field from a host buffer to this field.
void copy(const CloverField &src, bool inverse=true)
Copy into this CloverField from the generic CloverField src.
void loadCPUField(const cpuCloverField &cpu)
cudaCloverField(const CloverFieldParam ¶m)
virtual void copy_from_buffer(void *buffer)
Copy all contents of the field from a host buffer to this field.
void saveCPUField(cpuCloverField &cpu) const
virtual void copy_to_buffer(void *buffer) const
Copy all contents of the field to a host buffer.
virtual ~cudaCloverField()
void prefetch(QudaFieldLocation mem_space, qudaStream_t stream=0) const
If managed memory and prefetch is enabled, prefetch the clover, the norm field (as appropriate),...
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
@ QUDA_FLOAT4_CLOVER_ORDER
@ QUDA_FLOAT2_CLOVER_ORDER
enum QudaPrecision_s QudaPrecision
@ QUDA_INVALID_FIELD_LOCATION
enum QudaPCType_s QudaPCType
#define QUDA_INVALID_ENUM
enum QudaFieldLocation_s QudaFieldLocation
enum QudaFieldCreate_s QudaFieldCreate
enum QudaParity_s QudaParity
bool isNative(QudaCloverFieldOrder order, QudaPrecision precision)
double norm2(const CloverField &a, bool inverse=false)
void computeCloverSigmaTrace(GaugeField &output, const CloverField &clover, double coeff)
Compute the matrix tensor field necessary for the force calculation from the clover trace action....
__device__ __host__ Matrix< T, 3 > inverse(const Matrix< T, 3 > &u)
void copyGenericClover(CloverField &out, const CloverField &in, bool inverse, QudaFieldLocation location, void *Out=0, void *In=0, void *outNorm=0, void *inNorm=0)
This generic function is used for copying the clover field where in the input and output can be in an...
void computeCloverSigmaOprod(GaugeField &oprod, std::vector< ColorSpinorField * > &x, std::vector< ColorSpinorField * > &p, std::vector< std::vector< double > > &coeff)
Compute the outer product from the solver solution fields arising from the diagonal term of the fermi...
double norm1(const CloverField &u, bool inverse=false)
void computeClover(CloverField &clover, const GaugeField &fmunu, double coeff)
Driver for computing the clover field from the field strength tensor.
@ BOTH_CLOVER_PREFETCH_TYPE
@ INVERSE_CLOVER_PREFETCH_TYPE
@ INVALID_CLOVER_PREFETCH_TYPE
@ CLOVER_CLOVER_PREFETCH_TYPE
void cloverDerivative(cudaGaugeField &force, cudaGaugeField &gauge, cudaGaugeField &oprod, double coeff, QudaParity parity)
Compute the derivative of the clover matrix in the direction mu,nu and compute the resulting force gi...
void cloverInvert(CloverField &clover, bool computeTraceLog)
This function compute the Cholesky decomposition of each clover matrix and stores the clover inverse ...
constexpr bool dynamic_clover_inverse()
Helper function that returns whether we have enabled dyanmic clover inversion or not.
void cloverRho(CloverField &clover, double rho)
This function adds a real scalar onto the clover diagonal (only to the direct field not the inverse)
void copyFieldOffset(CloverField &out, const CloverField &in, CommKey offset, QudaPCType pc_type)
This function is used for copying from a source clover field to a destination clover field with an of...
void computeCloverForce(GaugeField &force, const GaugeField &U, std::vector< ColorSpinorField * > &x, std::vector< ColorSpinorField * > &p, std::vector< double > &coeff)
Compute the force contribution from the solver solution fields.
std::ostream & operator<<(std::ostream &output, const CloverFieldParam ¶m)
cudaStream_t qudaStream_t
CloverFieldParam(const CloverFieldParam ¶m)
bool twisted
Overall clover coefficient.
double coeff
C_sw clover coefficient.
QudaCloverFieldOrder order
QudaFieldLocation location
void setPrecision(QudaPrecision precision, bool force_native=false)
Helper function for setting the precision and corresponding field order for QUDA internal fields.
FullClover(const cudaCloverField &clover, bool inverse=false)
QudaPrecision ghost_precision