su2hmc
Loading...
Searching...
No Matches
cuclover.cu File Reference

CUDA routines related to clover improved wilson fermions. More...

#include <clover.h>
Include dependency graph for cuclover.cu:

Go to the source code of this file.

Namespaces

namespace  Device
 CUDA Device code.
namespace  Kernels
 CUDA Kernels.

Functions

template<typename T>
__device__ void Device::cuByGenLeft (T a[nc], const unsigned short gen)
 Multiply leaf (or part of one) by generator from left.
template<typename T>
__device__ void Device::cuByGenRight (T a[nc], const unsigned short gen)
 Multiply leaf (or part of one) by generator from right.
template<typename T>
__device__ void Device::Half_Leaf (complex< T > Leaves[nc], complex< T > *u11t, complex< T > *u12t, complex< T > a[nc], unsigned int *iu, unsigned int *id, const unsigned int i, const unsigned short mu, const unsigned short nu, const unsigned short leaf)
 Calculates the first half of the leaf for a clover term. We split it so that the force term can reuse the first half of the leaf.
template<typename T>
__device__ void Device::Leaf (complex< T > *u11t, complex< T > *u12t, complex< T > Leaves[nc], unsigned int *iu, unsigned int *id, unsigned int i, const unsigned short mu, const unsigned short nu, const unsigned short leaf)
 Calculates a leaf for a clover term.
template<typename T>
__device__ void Device::cuGLeft (T out[4], const T G[2], const T X[4])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the left.
template<typename T>
__device__ void Device::cuGRight (T out[4], const T G[2], const T X[4])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the right.
template<typename T>
__device__ void Device::cuGSandwich (T out[4], T tmp[4], const T Gl[2], const T X[4], const T Gr[2])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the left and the right.
__device__ void Device::GetBilinear (Complex_f Z[nc *nc], Bilinear_a Xmn, unsigned int ind)
 Loads the compacted bilinear form into a \(2\times2\) complex valued matrix.
template<typename T>
__global__ void Kernels::Half_Leaves (complex< T > *hLeaves0, complex< T > *hLeaves1, complex< T > *u11t, complex< T > *u12t, unsigned int *iu, unsigned int *id, const unsigned short mu, const unsigned short nu)
 Calculates the products of the first two links in a plaquette.
template<typename T>
__global__ void Kernels::Full_Clover (complex< T > *clover1, complex< T > *clover2, complex< T > *u11t, complex< T > *u12t, unsigned int *iu, unsigned int *id, int mu, int nu)
 Calculates the clovers in all directions at all sites \( F_{\mu\nu}(n)=\frac{-i}{8a^2}\left(Q_{\mu\nu}(n)-Q_{\nu\mu}(n)\right)\).
template<typename T>
__global__ void Kernels::cuCalcXmunu (Bilinear_a Xmunu, const complex< T > *X1, const complex< T > *X2, const complex< T > *sigval, const unsigned short *sigin, const unsigned short clov)
 Gets \(X_{\mu\nu}\) for the clover force.
template<typename T>
__global__ void Kernels::Clov_Force (double *dSdpi, const complex< T > *u11t, const complex< T > *u12t, Bilinear_a Xmn, const complex< T > *sigval, const unsigned short *sigin, const unsigned int *iu, const unsigned int *id, const float akappa, const unsigned short mu, const unsigned short nu)
 cuGets the clover contribution to the force
template<typename T>
__global__ void Kernels::ByClover (complex< T > *phi, complex< T > *r, complex< T > *clover1, complex< T > *clover2, complex< T > *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Dslash operation. This version acts on all flavours similar to Dslash and Dslash_d.
template<typename T>
__global__ void Kernels::HbyClover (complex< T > *phi, complex< T > *r, complex< T > *clover1, complex< T > *clover2, complex< T > *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Hdslash operation. The H in front is for half, as we only act on the fermions of flavour 1.
int cuClover (Complex_f *clover[nc], Complex_f *ut[nc], unsigned int *iu, unsigned int *id)
 CUDA wrapper for calculating the clovers in all directions at all sites \( F_{\mu\nu}(n)=\frac{-i}{8a^2}\left(Q_{\mu\nu}(n)-Q_{\nu\mu}(n)\right)\).
void cuByClover (Complex *phi, Complex *r, Complex *clover[nc], Complex *sigval, const float akappa, unsigned short *sigin, bool dag)
 CUDA wrapper for ByClover.
void cuHbyClover (Complex *phi, Complex *r, Complex *clover[nc], Complex *sigval, const float akappa, unsigned short *sigin, bool dag)
 CUDA wrapper for HbyClover.
void cuByClover_f (Complex_f *phi, Complex_f *r, Complex_f *clover[nc], Complex_f *sigval, const float akappa, unsigned short *sigin, bool dag)
 CUDA wrapper for ByClover_f.
void cuHbyClover_f (Complex_f *phi, Complex_f *r, Complex_f *clover[nc], Complex_f *sigval, const float akappa, unsigned short *sigin, bool dag)
 CUDA wrapper for HbyClover_f.
void cuCalcXmunu (Bilinear_a Xmunu, Complex_f *X1, Complex_f *X2, const Complex_f *sigval, const unsigned short *sigin, const unsigned short mu, const unsigned short nu)
 CUDA wrapper for CalcXmunu. Only called during testing to be honest.
int cuClov_Force (double *dSdpi, Complex_f *ut[nc], Complex_f *X1, Complex_f *X2, const Complex_f *sigval, const unsigned short *sigin, const unsigned int *iu, const unsigned int *id, const float akappa)
 CUDA wrapper for Clover_Force.

Detailed Description

CUDA routines related to clover improved wilson fermions.

Author
D. Lawlor

Definition in file cuclover.cu.