CUDA routines related to clover improved wilson fermions. More...
#include <clover.h>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. | |
CUDA routines related to clover improved wilson fermions.
Definition in file cuclover.cu.