su2hmc
Loading...
Searching...
No Matches
su2hmc.h File Reference

Function declarations for most of the routines. More...

#include <integrate.h>
#include <time.h>
Include dependency graph for su2hmc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void Force_s (double *dSdpi, Complex_f *ut[2], Complex_f *X1, Complex_f *X2, Complex_f gamval[20], unsigned int *iu, const unsigned short gamin[16], const float akappa, const unsigned short mu)
 Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
void Force_t (double *dSdpi, Complex_f *ut[2], Complex_f *X1, Complex_f *X2, Complex_f gamval[20], float *dk[2], unsigned int *iu, const unsigned short gamin[16], float akappa)
 Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
int Force (double *dSdpi, const bool iflag, double res1, Complex *X0, Complex *X1, Complex *Phi, Complex *ut[2], Complex_f *ut_f[2], unsigned int *iu, unsigned int *id, Complex gamval[20], Complex_f gamval_f[20], const unsigned short gamin[16], Complex *sigval, Complex_f *sigval_f, unsigned short *sigin, double *dk[2], float *dk_f[2], const Complex_f jqq, const float akappa, const float beta, const float c_sw, double *ancg)
 Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
int Gauge_force (double *dSdpi, Complex_f *ut[2], unsigned int *iu, unsigned int *id, float beta)
 Calculates the gauge force due to the Wilson Action at each intermediate time.
int Init (const int istart, const int ibound, const int iread, const float beta, const float fmu, const float akappa, const Complex_f ajq, const float c_sw, Complex *u[2], Complex *ut[2], Complex_f *ut_f[2], Complex gamval[20], Complex_f gamval_f[20], unsigned short gamin[16], double *dk[2], float *dk_f[2], unsigned int *iu, unsigned int *id)
 Initialises the system.
int Hamilton (double *h, double *s, double res2, double *pp, Complex *X0, Complex *X1, Complex *Phi, Complex *ud[2], Complex_f *ut[2], unsigned int *iu, unsigned int *id, Complex gamval[20], Complex_f gamval_f[20], const unsigned short gamin[16], Complex *sigval, Complex_f *sigval_f, unsigned short *sigin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, float beta, float c_sw, double *ancgh, int traj)
 Calculate the Hamiltonian.
int Congradq (int na, double res, Complex *X1, Complex *r, Complex *ud[2], Complex_f *ut[2], Complex_f *clover_f[nc], unsigned int *iu, unsigned int *id, Complex gamval[20], Complex_f gamval_f[20], const unsigned short gamin[16], Complex *sigval, Complex_f *sigval_f, unsigned short *sigin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, float c_sw, int *itercg)
 Matrix Inversion via Conjugate Gradient (up/down flavour partitioning). Solves \((M^\dagger)Mx=\Phi\) Implements up/down partitioning The matrix multiplication step is done at mixed precision, while the update is done at double.
int Congradp (int na, double res, Complex *Phi, Complex *xi, Complex *ud[2], Complex_f *ut[2], Complex_f *clover_f[nc], unsigned int *iu, unsigned int *id, Complex gamval[20], Complex_f gamval_f[20], const unsigned short gamin[16], Complex *sigval, Complex_f *sigval_f, unsigned short *sigin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, float c_sw, int *itercg)
 Matrix Inversion via Conjugate Gradient (no up/down flavour partitioning). Solves \((M^\dagger)Mx=\Phi\) The matrix multiplication step is done at single precision, while the update is done at double.
int Measure (double *pbp, double *endenf, double *denf, Complex *qq, Complex *qbqb, double res, int *itercg, Complex *ut[2], Complex_f *ut_f[2], unsigned int *iu, unsigned int *id, Complex gamval[20], Complex_f gamval_f[20], const unsigned short gamin[16], Complex *sigval, Complex_f *sigval_f, unsigned short *sigin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, float c_sw, Complex *Phi)
 Calculate fermion expectation values via a noisy estimator.
int Average_Plaquette (double *hg, double *avplaqs, double *avplaqt, Complex_f *ut[2], unsigned int *iu, float beta)
 Calculates the gauge action using new (how new?) lookup table Follows a routine called qedplaq in some QED3 code.
int SU2plaq (Complex_f *ut[2], Complex_f Sigma[2], unsigned int *iu, int i, int mu, int nu)
 Calculates the plaquette at site i in the \(\mu--\nu\) direction.
double Polyakov (Complex_f *ut[2])
 Calculate the Polyakov loop (no prizes for guessing that one...).
int C_gather (Complex_f *x, Complex_f *y, int n, unsigned int *table, unsigned int mu)
 Extracts all the single precision gauge links in the \(\mu\) direction only.
int Z_gather (Complex *x, Complex *y, int n, unsigned int *table, unsigned int mu)
 Extracts all the double precision gauge links in the \(\mu\) direction only.
int Fill_Small_Phi (int na, Complex *smallPhi, Complex *Phi)
 Copies necessary (2*4*kvol) elements of Phi into a vector variable.
int UpDownPart (const unsigned int na, Complex *X0, Complex *R1)
 Up/Down partitioning of the pseudofermion field.
int Reunitarise (Complex *ut[2])
 Reunitarises u11t and u12t as in conj(u11t[i])*u11t[i]+conj(u12t[i])*u12t[i]=1.
int ComplexConvert (Complex_f *a, Complex *b, const unsigned int len, const bool dtof, const unsigned short stride)
 takes an array of complex float and double precision numbers and converts the precision
void cuAverage_Plaquette (double *hgs, double *hgt, Complex_f *u11t, Complex_f *u12t, unsigned int *iu, dim3 dimGrid, dim3 dimBlock)
 Calculates the gauge action using new (how new?) lookup table Follows a routine called qedplaq in some QED3 code.
void cuPolyakov (Complex_f *Sigma[2], Complex_f *ut[2], dim3 dimGrid, dim3 dimBlock)
 Calculate the Polyakov loop (no prizes for guessing that one...).
void cuGauge_force (Complex_f *ut[2], double *dSdpi, float beta, unsigned int *iu, unsigned int *id, dim3 dimGrid, dim3 dimBlock)
 Calculate the gauge contribution to the force.
void cuForce (double *dSdpi, Complex_f *ut[2], Complex_f *X1, Complex_f *X2, Complex_f gamval[20], float *dk[2], unsigned int *iu, const unsigned short gamin[16], float akappa, dim3 dimGrid, dim3 dimBlock)
 Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
void Init_CUDA (Complex *u11t, Complex *u12t, Complex gamval[20], Complex_f gamval_f[20], unsigned short gamin[16], double *dk4m, double *dk4p, unsigned int *iu, unsigned int *id)
 Initialise CUDA cuInit was taken already by CUDA (unsurprisingly).
void cuFill_Small_Phi (const unsigned int na, Complex *smallPhi, Complex *Phi, dim3 dimBlock, dim3 dimGrid)
 Copies necessary (2*4*kvol) elements of Phi into a vector variable.
void cuComplex_convert (Complex_f *a, Complex *b, const unsigned int len, const bool dtof, dim3 dimBlock, dim3 dimGrid)
 takes an array of complex float and double precision numbers and converts the precision
void cuReal_convert (float *a, double *b, const unsigned int len, const bool dtof, dim3 dimBlock, dim3 dimGrid)
 takes an array of real-valued float and double precision numbers and converts the precision
void cuUpDownPart (const unsigned int na, Complex *X0, Complex *R1, dim3 dimBlock, dim3 dimGrid)
 Up/Down partitioning of the pseudofermion field.
void cuReunitarise (Complex *ut[2], dim3 dimGrid, dim3 dimBlock)
 Reunitarises u11t and u12t as in conj(u11t[i])*u11t[i]+conj(u12t[i])*u12t[i]=1.
void blockInit (int x, int y, int z, int t, dim3 *dimBlock, dim3 *dimGrid)
 Initialises the CUDA grid and block size for a given lattice.

Variables

cudaStream_t streams [ndirac *ndim *nadj]
 An array of concurrent GPU streams to keep it busy.

Detailed Description

Function declarations for most of the routines.

Definition in file su2hmc.h.

Variable Documentation

◆ streams

cudaStream_t streams[ndirac *ndim *nadj]
extern

An array of concurrent GPU streams to keep it busy.

Definition at line 29 of file cusu2hmc.cu.