16#include <gsl/gsl_cblas.h>
39#if (defined __cplusplus)
71 int *gamin,
double *dk4m,
double *dk4p,
float *dk4m_f,
float *dk4p_f,
Complex_f jqq,\
72 float akappa,
float beta,
double *ancg);
108 int Init(
int istart,
int ibound,
int iread,
float beta,
float fmu,
float akappa,
Complex_f ajq,\
110 Complex *gamval,
Complex_f *gamval_f,
int *gamin,
double *dk4m,
double *dk4p,
float *dk4m_f,
float *dk4p_f,\
111 unsigned int *iu,
unsigned int *
id);
140 float akappa,
float beta,
double *ancgh,
int traj);
166 Complex_f *gamval_f,
int *gamin,
float *dk4m_f,
float *dk4p_f,
Complex_f jqq,
float akappa,
int *itercg);
191 Complex_f *gamval,
int *gamin,
float *dk4m,
float *dk4p,
Complex_f jqq,
float akappa,
int *itercg);
228 int Measure(
double *pbp,
double *endenf,
double *denf,
Complex *qq,
Complex *qbqb,
double res,
int *itercg,\
230 Complex *gamval,
Complex_f *gamval_f,
int *gamin,
double *dk4m,
double *dk4p,\
248 unsigned int *iu,
float beta);
249#if (!defined __NVCC__ && !defined __HIPCC__)
339 void cuAverage_Plaquette(
double *hgs,
double *hgt,
Complex_f *u11t,
Complex_f *u12t,
unsigned int *iu,dim3 dimGrid, dim3 dimBlock);
342 dim3 dimGrid, dim3 dimBlock);
344 dim3 dimGrid, dim3 dimBlock);
345 void cuMinus_staple(
int mu,
int nu,
unsigned int *iu,
unsigned int *
id,
Complex_f *Sigma11,
Complex_f *Sigma12,\
348 Complex_f *gamval,
float *dk4m,
float *dk4p,
unsigned int *iu,
int *gamin,\
349 float akappa, dim3 dimGrid, dim3 dimBlock);
352 double *dk4p,
unsigned int *iu,
unsigned int *
id);
353 void cuFill_Small_Phi(
int na,
Complex *smallPhi,
Complex *Phi,dim3 dimBlock, dim3 dimGrid);
354 void cuC_gather(
Complex_f *x,
Complex_f *y,
int n,
unsigned int *table,
unsigned int mu,dim3 dimBlock, dim3 dimGrid);
355 void cuZ_gather(
Complex *x,
Complex *y,
int n,
unsigned int *table,
unsigned int mu,dim3 dimBlock, dim3 dimGrid);
356 void cuComplex_convert(
Complex_f *a,
Complex *b,
int len,
bool ftod, dim3 dimBlock, dim3 dimGrid);
357 void cuReal_convert(
float *a,
double *b,
int len,
bool ftod, dim3 dimBlock, dim3 dimGrid);
358 void cuUpDownPart(
int na,
Complex *X0,
Complex *R1,dim3 dimBlock, dim3 dimGrid);
359 void cuReunitarise(
Complex *u11t,
Complex *u12t,dim3 dimGrid, dim3 dimBlock);
361 void blockInit(
int x,
int y,
int z,
int t, dim3 *dimBlock, dim3 *dimGrid);
363#if (defined __cplusplus)
371__global__
void Plus_staple(
int mu,
int nu,
unsigned int *iu,
Complex_f *Sigma11,
Complex_f *Sigma12,\
373__global__
void Minus_staple(
int mu,
int nu,
unsigned int *iu,
unsigned int *
id,
Complex_f *Sigma11,
Complex_f *Sigma12,\
377__global__
void cuAverage_Plaquette(
float *hgs_d,
float *hgt_d,
Complex_f *u11t,
Complex_f *u12t,
unsigned int *iu);
384 unsigned int *iu,
int *gamin,
float akappa,
int mu);
386 float *dk4m,
float *dk4p,
unsigned int *iu,
int *gamin,
float akappa);
387__global__
void cuFill_Small_Phi(
int na,
Complex *smallPhi,
Complex *Phi);
388__global__
void cuC_gather(
Complex_f *x,
Complex_f *y,
int n,
unsigned int *table,
unsigned int mu);
389__global__
void cuZ_gather(
Complex *x,
Complex *y,
int n,
unsigned int *table,
unsigned int mu);
390__global__
void cuComplex_convert(
Complex_f *a,
Complex *b,
int len,
bool dtof);
391__global__
void cuReal_convert(
float *a,
double *b,
int len,
bool dtof);
This header is intended to be a useful reference for error codes and their meanings.
Defines the constants of the code and other parameters for loop dimensions. Each subroutine includes ...
#define nadj
adjacent spatial indices
#define Complex
Double precision complex number.
#define ndirac
Dirac indices.
#define Complex_f
Single precision complex number.
int Init(int istart, int ibound, int iread, float beta, float fmu, float akappa, Complex_f ajq, Complex *u11, Complex *u12, Complex *u11t, Complex *u12t, Complex_f *u11t_f, Complex_f *u12t_f, Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk4m, double *dk4p, float *dk4m_f, float *dk4p_f, unsigned int *iu, unsigned int *id)
Initialises the system.
int Z_gather(Complex *x, Complex *y, int n, unsigned int *table, unsigned int mu)
Extracts all the double precision gauge links in the direction only.
int Measure(double *pbp, double *endenf, double *denf, Complex *qq, Complex *qbqb, double res, int *itercg, Complex *u11t, Complex *u12t, Complex_f *u11t_f, Complex_f *u12t_f, unsigned int *iu, unsigned int *id, Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk4m, double *dk4p, float *dk4m_f, float *dk4p_f, Complex_f jqq, float akappa, Complex *Phi, Complex *R1)
Calculate fermion expectation values via a noisy estimator.
int Force(double *dSdpi, int iflag, double res1, Complex *X0, Complex *X1, Complex *Phi, Complex *u11t, Complex *u12t, Complex_f *u11t_f, Complex_f *u12t_f, unsigned int *iu, unsigned int *id, Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk4m, double *dk4p, float *dk4m_f, float *dk4p_f, Complex_f jqq, float akappa, float beta, double *ancg)
Calculates the force at each intermediate time.
int Gauge_force(double *dSdpi, Complex_f *u11t, Complex_f *u12t, unsigned int *iu, unsigned int *id, float beta)
Calculates the gauge force due to the Wilson Action at each intermediate time.
int Congradq(int na, double res, Complex *X1, Complex *r, Complex_f *u11t_f, Complex_f *u12t_f, unsigned int *iu, unsigned int *id, Complex_f *gamval_f, int *gamin, float *dk4m_f, float *dk4p_f, Complex_f jqq, float akappa, int *itercg)
Matrix Inversion via Conjugate Gradient (up/down flavour partitioning). Solves Implements up/down pa...
int Hamilton(double *h, double *s, double res2, double *pp, Complex *X0, Complex *X1, Complex *Phi, Complex *u11t, Complex *u12t, Complex_f *u11t_f, Complex_f *u12t_f, unsigned int *iu, unsigned int *id, Complex_f *gamval_f, int *gamin, float *dk4m_f, float *dk4p_f, Complex_f jqq, float akappa, float beta, double *ancgh, int traj)
Calculate the Hamiltonian.
int Average_Plaquette(double *hg, double *avplaqs, double *avplaqt, Complex_f *u11t, Complex_f *u12t, unsigned int *iu, float beta)
Calculates the gauge action using new (how new?) lookup table.
float SU2plaq(Complex_f *u11t, Complex_f *u12t, unsigned int *iu, int i, int mu, int nu)
Calculates the plaquette at site i in the direction.
int Reunitarise(Complex *u11t, Complex *u12t)
Reunitarises u11t and u12t as in conj(u11t[i])*u11t[i]+conj(u12t[i])*u12t[i]=1.
double Polyakov(Complex_f *u11t, Complex_f *u12t)
Calculate the Polyakov loop (no prizes for guessing that one...)
int Fill_Small_Phi(int na, Complex *smallPhi, Complex *Phi)
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 direction only.
int Congradp(int na, double res, Complex *Phi, Complex *xi, Complex_f *u11t, Complex_f *u12t, unsigned int *iu, unsigned int *id, Complex_f *gamval, int *gamin, float *dk4m, float *dk4p, Complex_f jqq, float akappa, int *itercg)
Matrix Inversion via Conjugate Gradient (no up/down flavour partitioning). Solves The matrix multipl...