42 std::ostream&
operator<<(std::ostream& output,
const CloverFieldParam&
param);
144 #ifdef USE_TEXTURE_OBJECTS 145 cudaTextureObject_t
tex;
146 cudaTextureObject_t normTex;
147 cudaTextureObject_t invTex;
148 cudaTextureObject_t invNormTex;
149 cudaTextureObject_t evenTex;
150 cudaTextureObject_t evenNormTex;
151 cudaTextureObject_t oddTex;
152 cudaTextureObject_t oddNormTex;
153 cudaTextureObject_t evenInvTex;
154 cudaTextureObject_t evenInvNormTex;
155 cudaTextureObject_t oddInvTex;
156 cudaTextureObject_t oddInvNormTex;
157 void createTexObject(cudaTextureObject_t &
tex, cudaTextureObject_t &texNorm,
void *field,
void *
norm,
bool full);
158 void destroyTexObject();
167 #ifdef USE_TEXTURE_OBJECTS 168 const cudaTextureObject_t& Tex()
const {
return tex; }
169 const cudaTextureObject_t& NormTex()
const {
return normTex; }
170 const cudaTextureObject_t& InvTex()
const {
return invTex; }
171 const cudaTextureObject_t& InvNormTex()
const {
return invNormTex; }
172 const cudaTextureObject_t& EvenTex()
const {
return evenTex; }
173 const cudaTextureObject_t& EvenNormTex()
const {
return evenNormTex; }
174 const cudaTextureObject_t& OddTex()
const {
return oddTex; }
175 const cudaTextureObject_t& OddNormTex()
const {
return oddNormTex; }
176 const cudaTextureObject_t& EvenInvTex()
const {
return evenInvTex; }
177 const cudaTextureObject_t& EvenInvNormTex()
const {
return evenInvNormTex; }
178 const cudaTextureObject_t& OddInvTex()
const {
return oddInvTex; }
179 const cudaTextureObject_t& OddInvNormTex()
const {
return oddInvNormTex; }
246 #ifdef USE_TEXTURE_OBJECTS 247 const cudaTextureObject_t &evenTex;
248 const cudaTextureObject_t &evenNormTex;
249 const cudaTextureObject_t &oddTex;
250 const cudaTextureObject_t &oddNormTex;
251 const cudaTextureObject_t& EvenTex()
const {
return evenTex; }
252 const cudaTextureObject_t& EvenNormTex()
const {
return evenNormTex; }
253 const cudaTextureObject_t& OddTex()
const {
return oddTex; }
254 const cudaTextureObject_t& OddNormTex()
const {
return oddNormTex; }
260 #ifdef USE_TEXTURE_OBJECTS
262 , evenNormTex(inverse ?
clover.evenInvNormTex :
clover.evenNormTex)
264 , oddNormTex(inverse ?
clover.oddInvNormTex :
clover.oddNormTex)
300 QudaFieldLocation location,
void *Out=0,
void *In=0,
void *outNorm=0,
void *inNorm=0);
340 std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
p,
341 std::vector<double> &
coeff);
353 std::vector<ColorSpinorField*> &
x,
354 std::vector<ColorSpinorField*> &
p,
355 std::vector< std::vector<double> > &
coeff);
381 #endif // _CLOVER_QUDA_H
QudaCloverFieldOrder order
void setRho(double rho)
Bakes in the rho factor into the clover field, (for real diagonal additive Hasenbusch), e.g., A + rho.
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...
cudaCloverField(const CloverFieldParam ¶m)
enum QudaPrecision_s QudaPrecision
void * V(bool inverse=false)
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.
void saveCPUField(cpuCloverField &cpu) const
FullClover(const cudaCloverField &clover, bool inverse=false)
void loadCPUField(const cpuCloverField &cpu)
virtual ~cpuCloverField()
QudaCloverFieldOrder order
QudaCloverFieldOrder Order() const
CloverField(const CloverFieldParam ¶m)
std::ostream & operator<<(std::ostream &output, const CloverFieldParam ¶m)
void computeCloverSigmaTrace(GaugeField &output, const CloverField &clover, double coeff)
Compute the matrix tensor field necessary for the force calculation from the clover trace action...
double norm2(const CloverField &a, bool inverse=false)
double norm1(const CloverField &u, bool inverse=false)
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
void cloverInvert(CloverField &clover, bool computeTraceLog, QudaFieldLocation location)
This function compute the Cholesky decomposition of each clover matrix and stores the clover inverse ...
void compute(const cudaGaugeField &gauge)
void setPrecision(QudaPrecision precision)
static __inline__ size_t p
enum QudaParity_s QudaParity
cpuCloverField(const CloverFieldParam ¶m)
void copy(const CloverField &src, bool inverse=true)
Copy into this CloverField from the generic CloverField src.
enum QudaFieldLocation_s QudaFieldLocation
cpuColorSpinorField * out
bool twisted
Clover coefficient.
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 * Norm(bool inverse=false)
const void * V(bool inverse=false) const
static __inline__ dim3 dim3 void size_t cudaStream_t int enum cudaTextureReadMode readMode static __inline__ const struct texture< T, dim, readMode > & tex
virtual ~cudaCloverField()
enum QudaFieldCreate_s QudaFieldCreate
const void * Norm(bool inverse=false) const
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...
void computeClover(CloverField &clover, const GaugeField &gauge, double coeff, QudaFieldLocation location)
CloverFieldParam(const CloverFieldParam ¶m)
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...