Topics | |
| Clover Force | |
Functions | |
| int | Gauge_Update (const double d, double *pp, Complex *ut[2], Complex_f *ut_f[2]) |
| Gauge update for the integration step of the HMC. | |
| int | Momentum_Update (const double d, const double *dSdpi, double *pp) |
| Wrapper for the momentum update during the integration step of the HMC. | |
| int | Leapfrog (Complex *ut[2], Complex_f *ut_f[2], Complex *X0, Complex *X1, Complex *Phi, double *dk[2], float *dk_f[2], double *dSdpi, double *pp, 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, const Complex jqq, const float beta, const float akappa, const float c_sw, const int stepl, const float dt, double *ancg, int *itot, const float proby) |
| Leapfrog integrator. Each trajectory step takes the form of p->p+dt/2,u->u+dt,p->p+dt/2 In practice this is implemented for the entire trajectory as p->p+dt/2,u->u+dt,p->p+dt,u->u+dt,p->p+dt,...p->p+dt/2,u->u+dt,p->p+dt/2. | |
| int | OMF2 (Complex *ut[2], Complex_f *ut_f[2], Complex *X0, Complex *X1, Complex *Phi, double *dk[2], float *dk_f[2], double *dSdpi, double *pp, 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, const Complex jqq, const float beta, const float akappa, const float c_sw, const int stepl, const float dt, double *ancg, int *itot, const float proby) |
| OMF second order five step integrator. | |
| int | OMF4 (Complex *ut[2], Complex_f *ut_f[2], Complex *X0, Complex *X1, Complex *Phi, double *dk[2], float *dk_f[2], double *dSdpi, double *pp, 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, const Complex jqq, const float beta, const float akappa, const float c_sw, const int stepl, const float dt, double *ancg, int *itot, const float proby) |
| OMF fourth order eleven step integrator. | |
| void | cuGauge_Update (const double d, double *pp, Complex *ut[2], dim3 dimGrid, dim3 dimBlock) |
| CUDA wrapper for the gauge update during the integration step of the HMC. | |
| 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 | 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. | |
| 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. | |
| __global__ void | Kernels::Plus_staple (const int mu, const int nu, unsigned int *iu, Complex_f *Sigma11, Complex_f *Sigma12, Complex_f *u11t, Complex_f *u12t) |
| Calculates the staple in the positive \(\mu\) direction. | |
| __global__ void | Kernels::Minus_staple (const int mu, const int nu, unsigned int *iu, unsigned int *id, Complex_f *Sigma11, Complex_f *Sigma12, Complex_f *u11sh, Complex_f *u12sh, Complex_f *u11t, Complex_f *u12t) |
| Calculates the staple in the negative \(\mu\) direction. | |
| __global__ void | Kernels::cuGaugeForce (int mu, Complex_f *Sigma11, Complex_f *Sigma12, double *dSdpi, Complex_f *u11t, Complex_f *u12t, float beta) |
| Calculates the gauge force due to the Wilson Action at each intermediate time. | |
| __global__ void | Kernels::cuForce_s (double *dSdpi, Complex_f *u11t, Complex_f *u12t, Complex_f *X1, Complex_f *X2, Complex_f gamval[20], unsigned int *iu, const unsigned short gamin[16], float akappa, const unsigned short mu) |
| Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time. | |
| __global__ void | Kernels::cuForce_t (double *dSdpi, Complex_f *u11t, Complex_f *u12t, Complex_f *X1, Complex_f *X2, Complex_f gamval[20], float *dk4m, float *dk4p, unsigned int *iu, const unsigned short gamin[16], float akappa) |
| Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time. | |
| __global__ void | Kernels::cuGauge_Update (const double d, double *pp, Complex *u11t, Complex *u12t, int mu) |
| Gauge update for the integration step of the HMC. | |
| 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.
| [in] | na | Flavour index |
| [in] | res | Limit for conjugate gradient |
| [in] | Phi | Pseudofermion field. |
| [in,out] | xi | Returned as \((M^\dagger M)^{-1} \Phi\) |
| [in] | ut,ud | Double/float Gauge fields |
| [in] | iu,id | Upper/Lower halo indices |
| [in] | gamval,gamval_f | double float Gamma matrices rescaled by kappa |
| [in] | gamin | Dirac indices |
| [in] | clover_f | Array of clover fields |
| [in] | sigval,sigval_f | Double/float Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | dk,dk_f | Double/float \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping Parameter |
| [in] | c_sw | Clover coefficient. |
| [in] | itercg | Counts the iterations of the conjugate gradient |
Phi overwritten TODO: Set this as an argument How much does the residue have to shrink by before we do a double precision update
\(x2 = (M^\dagger M)p \)
\(\alpha_d= p* (M^\dagger M)p\)
\(alpha=\frac{\alpha_n} {\alpha_d}=\frac{r\cdot r}{p(M^\dagger M)p}\)
\(x+\alpha p\)
Definition at line 735 of file congrad.c.
References ByClover(), ByClover_f(), Complex, Complex_f, ComplexConvert(), conj(), creal, cublas_handle, cudaDeviceSynchronise, cuMixed_Sumto(), dimBlock, dimGrid, Dslash(), Dslash_f(), Dslashd(), Dslashd_f(), ITERLIM, kferm, kvol, kvolHalo, nc, ngorkov, niterc, P_allocate(), P_allocate_f(), P_free(), P_free_f(), Par_dsum(), Par_fsum(), rank, and streams.
| 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.
| [in] | na | Flavour index |
| [in] | res | Limit for conjugate gradient |
| [in,out] | X1 | Pseudofermion field \(\Phi\) initially, returned as \((M^\dagger M)^{-1} \Phi\) |
| [in] | r | Partition of \(\Phi\) being used. Gets recycled as the residual vector |
| [in] | ud,ut | Double/float Trial colour fields |
| [in] | iu,id | Upper/lower halo indices |
| [in] | gamval,gamval_f | Double/float gamma matrices rescaled by kappa |
| [in] | gamin | What element of the spinor is multiplied by row idirac each gamma matrix? |
| [in] | clover_f | Array of clover fields |
| [in] | sigval,sigval_f | Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | dk,dk_f | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping Parameter |
| [in] | c_sw | Clover coefficient. If non-zero calculate the clover contribution |
| [in] | itercg | Counts the iterations of the conjugate gradient |
X1 and r overwritten TODO: Set this as an argument How much does the residue have to shrink by before we do a double precision update
The \(\kappa^2\) factor is needed to normalise the fields correctly \(j_{qq}\) is the diquark condensate and is global scope.
The alpha and beta terms should be double, but that causes issues with BLAS pointers. Instead we declare them complex and work with the real part (especially for \(\alpha_d\)) Give initial values Will be overwritten if niterx>0
\(x2 = (M^\dagger M)p \)
\(\alpha_d= p* (M^\dagger M+c_\text{SW} \sum\limits_{\mu\ne\nu}\frac{1}{2}\sigma_{\mu\nu}F_{\mu\nu}+J^2)p\)
\(\alpha=\frac{\alpha_n}{\alpha_d}=\frac{r\cdot r}{p(M^\dagger M+c_\text{SW} \sum\limits_{\mu\ne\nu}\frac{1}{2}\sigma_{\mu\nu}F_{\mu\nu}+J^2)p}\)
\(x+\alpha p\)
\(x2 = (M^\dagger M)p \)
\(x2 = (M^\dagger M+J^2)p\)
First iteration \( \vec{r}_0=\vec{p}_0\)
\(\alpha_d= p* (M^\dagger M+c_\text{SW} \sum\limits_{\mu\ne\nu}\frac{1}{2}\sigma_{\mu\nu}F_{\mu\nu}+J^2)p\)
\(\alpha=\frac{\alpha_n}{\alpha_d}=\frac{r\cdot r}{p(M^\dagger M+c_\text{SW} \sum\limits_{\mu\ne\nu}\frac{1}{2}\sigma_{\mu\nu}F_{\mu\nu}+J^2)p}\)
\(x+\alpha p\)
\(r_{n+1} = r_n-\alpha(M^\dagger M)p_n\) and \(\beta_n=r^\dagger r\)
Definition at line 278 of file congrad.c.
References Complex, Complex_f, ComplexConvert(), conj(), creal, cublas_handle, cudaDeviceSynchronise, cuMixed_Sumto(), dimBlock, dimGrid, HbyClover(), HbyClover_f(), Hdslash(), Hdslash_f(), Hdslashd(), Hdslashd_f(), ITERLIM, kferm2, kvol, kvolHalo, nc, ndirac, niterc, Par_dsum(), Par_fsum(), Q_allocate(), Q_allocate_f(), Q_free(), Q_free_f(), rank, and streams.
| 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.
| [in,out] | dSdpi | The force |
| [in] | ut | Gauge fields |
| [in] | X1 | Inverted field |
| [in] | X2 | \(MX_1\) |
| [in] | gamval | Double/float precision gamma matrices rescaled by \(\kappa\) |
| [in] | gamin | Gamma indices |
| [in] | iu | Lattice indices |
| [in] | dk | \(e^{-\mu}\) and \(e^\mu\) |
| [in] | akappa | Hopping parameter |
| [in] | dimGrid,dimBlock | CUDA grid/block size |
dSdpi Definition at line 373 of file cuforce.cu.
References Complex_f, cudaDeviceSynchronise, Kernels::cuForce_s(), Kernels::cuForce_t(), dimBlock, and dimGrid.
| __global__ void Kernels::cuForce_s | ( | double * | dSdpi, |
| Complex_f * | u11t, | ||
| Complex_f * | u12t, | ||
| Complex_f * | X1, | ||
| Complex_f * | X2, | ||
| Complex_f | gamval[20], | ||
| unsigned int * | iu, | ||
| const unsigned short | gamin[16], | ||
| float | akappa, | ||
| const unsigned short | mu ) |
Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
| [in,out] | dSdpi | The force |
| [in] | u11t,u12t | Float precision colour fields |
| [in] | X1 | Inverted field |
| [in] | X2 | \(MX_1\) |
| [in] | gamval | Gamma matrices rescaled by \(\kappa\) |
| [in] | iu | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | akappa | Hopping parameter |
| [in] | mu | Force direction |
dSdpi Definition at line 146 of file cuforce.cu.
References Complex_f, conj(), kvol, kvolHalo, nc, ndim, and ndirac.
| __global__ void Kernels::cuForce_t | ( | double * | dSdpi, |
| Complex_f * | u11t, | ||
| Complex_f * | u12t, | ||
| Complex_f * | X1, | ||
| Complex_f * | X2, | ||
| Complex_f | gamval[20], | ||
| float * | dk4m, | ||
| float * | dk4p, | ||
| unsigned int * | iu, | ||
| const unsigned short | gamin[16], | ||
| float | akappa ) |
Calculates the force \(\frac{dS}{d\pi}\) at each intermediate time.
| [in,out] | dSdpi | The force |
| [in] | u11t,u12t | Float precision colour fields |
| [in] | X1 | Inverted field |
| [in] | X2 | \(MX_1\) |
| [in] | gamval | Gamma matrices rescaled by \(\kappa\) |
| [in] | dk4m,dk4p | \(e^{-\mu}\) and \(e^\mu\) |
| [in] | iu | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | akappa | Hopping parameter |
dSdpi Definition at line 243 of file cuforce.cu.
References Complex_f, conj(), kvol, kvolHalo, nc, ndim, and ndirac.
| 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.
| [in] | ut | Gauge fields |
| [out] | dSdpi | Force |
| [in] | beta | Inverse gauge coupling |
| [in] | iu,id | Upper/lower indices |
| [in] | dimGrid,dimBlock | CUDA grid/block size |
dSdpi overwritten Definition at line 319 of file cuforce.cu.
References CHalo_swap_dir(), Complex_f, cudaDeviceSynchronise, Kernels::cuGaugeForce(), dimBlock, dimGrid, DOWN, Kernels::Gather(), kvol, kvolHalo, Kernels::Minus_staple(), ndim, Kernels::Plus_staple(), and streams.
| void cuGauge_Update | ( | const double | d, |
| double * | pp, | ||
| Complex * | ut[2], | ||
| dim3 | dimGrid, | ||
| dim3 | dimBlock ) |
CUDA wrapper for the gauge update during the integration step of the HMC.
| [in] | d | Gauge step size |
| [in] | pp | Momentum field |
| [in,out] | ut | : Double precision gauge fields |
| [in] | dimGrid,dimBlock | CUDA Grid/Block dimensions |
ut updated in place Definition at line 298 of file cusu2hmc.cu.
References Complex, cudaDeviceSynchronise, Kernels::cuGauge_Update(), dimBlock, dimGrid, ndim, and streams.
| __global__ void Kernels::cuGauge_Update | ( | const double | d, |
| double * | pp, | ||
| Complex * | u11t, | ||
| Complex * | u12t, | ||
| int | mu ) |
Gauge update for the integration step of the HMC.
| [in] | d | Gauge step size |
| [in] | pp | Momentum field |
| [in,out] | u11t,u12t | Double precision gauge fields |
| [in] | mu | Lattice direction being updated |
ut and ut_f updated in place Definition at line 176 of file cusu2hmc.cu.
References Complex, conj(), I, kvol, and ndim.
| __global__ void Kernels::cuGaugeForce | ( | int | mu, |
| Complex_f * | Sigma11, | ||
| Complex_f * | Sigma12, | ||
| double * | dSdpi, | ||
| Complex_f * | u11t, | ||
| Complex_f * | u12t, | ||
| float | beta ) |
Calculates the gauge force due to the Wilson Action at each intermediate time.
| [out] | dSdpi | The force |
| [in] | u11t,u12t | Gauge fields |
| [in] | Sigma11,Sigma12 | Staples |
| [in] | mu | Generator index |
| [in] | beta | Inverse gauge coupling |
dSdpi. Definition at line 89 of file cuforce.cu.
References Complex_f, conj(), kvol, kvolHalo, and ndim.
| 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.
| [in,out] | dSdpi | The force |
| [in] | iflag | Invert before evaluating the force. 0 to invert, one not to. Blame FORTRAN... |
| [in] | res1 | Conjugate gradient residue |
| [in] | X0 | Up/down partitioned pseudofermion field |
| [in] | X1 | Holder for the partitioned fermion field, then the inverted dield |
| [in] | Phi | Pseudofermion field |
| [in] | ut,ut_f | Double/float precision colour fields |
| [in] | iu,id | Lattice indices |
| [in] | gamval,gamval_f | Double/float precision gamma matrices rescaled by \(\kappa\) |
| [in] | gamin | Gamma indices |
| [in] | sigval,sigval_f | Double/float Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | dk,dk_f | Double/float \(e^{-\mu}\) and \(e^\mu\) |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping parameter |
| [in] | beta | Inverse gauge coupling |
| [in] | c_sw | Clover coefficient. If non-zero calculate the clover contribution |
| [in] | ancg | Counter for conjugate gradient iterations |
dSdpi \((X1=(M\dagger M)^{-1} \Phi\)
Definition at line 228 of file force.c.
References AVX, CHalo_swap_dir(), Clov_Force(), Clover(), Clover_free(), Complex, Complex_f, ComplexConvert(), Congradq(), cublas_handle, cudaDeviceSynchronise, cuForce(), dimBlock, dimGrid, DOWN, Fill_Small_Phi(), Force_s(), Force_t(), Gauge_force(), HbyClover_f(), Hdslash_f(), kferm2, kferm2Halo, kvol, kvolHalo, nc, ndim, ndirac, nf, and streams.
| 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.
| [in,out] | dSdpi | The force |
| [in] | ut | Float precision colour fields |
| [in] | X1 | Inverted field |
| [in] | X2 | \(MX_1\) |
| [in] | gamval | Gamma matrices rescaled by \(\kappa\) |
| [in] | iu | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | akappa | Hopping parameter |
| [in] | mu | Force direction |
dSdpi Definition at line 81 of file force.c.
References cimag, Complex_f, conj(), creal, kvol, kvolHalo, nc, ndim, and ndirac.
| 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.
| [in,out] | dSdpi | The force |
| [in] | ut | Float precision colour fields |
| [in] | X1 | Inverted field |
| [in] | X2 | \(MX_1\) |
| [in] | gamval | Gamma matrices rescaled by \(\kappa\) |
| [in] | dk | \(e^{-\mu}\) and \(e^\mu\) |
| [in] | iu | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | akappa | Hopping parameter |
dSdpi Definition at line 156 of file force.c.
References cimag, Complex_f, conj(), creal, kvol, kvolHalo, nc, ndim, and ndirac.
| 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.
| [out] | dSdpi | The force |
| [in] | ut | Gauge fields |
| [in] | iu,id | Lattice indices |
| [in] | beta | Inverse gauge coupling |
dSdpi replaced by gauge force Definition at line 11 of file force.c.
References AVX, C_gather(), CHalo_swap_dir(), cimag, Complex_f, conj(), creal, cudaDeviceSynchronise, cuGauge_force(), dimBlock, dimGrid, DOWN, kvol, kvolHalo, and ndim.
Gauge update for the integration step of the HMC.
| [in] | d | Gauge step size |
| [in] | pp | Momentum field |
| [in,out] | ut | Double precision gauge fields |
| [in,out] | ut_f | Single precision gauge fields |
ut and ut_f updated in place Definition at line 37 of file integrate.c.
References Complex, Complex_f, conj(), cuGauge_Update(), dimBlock, dimGrid, I, kvol, kvolHalo, ndim, Reunitarise(), and Trial_Exchange().
| int Leapfrog | ( | Complex * | ut[2], |
| Complex_f * | ut_f[2], | ||
| Complex * | X0, | ||
| Complex * | X1, | ||
| Complex * | Phi, | ||
| double * | dk[2], | ||
| float * | dk_f[2], | ||
| double * | dSdpi, | ||
| double * | pp, | ||
| 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, | ||
| const Complex | jqq, | ||
| const float | beta, | ||
| const float | akappa, | ||
| const float | c_sw, | ||
| const int | stepl, | ||
| const float | dt, | ||
| double * | ancg, | ||
| int * | itot, | ||
| const float | proby ) |
Leapfrog integrator. Each trajectory step takes the form of p->p+dt/2,u->u+dt,p->p+dt/2 In practice this is implemented for the entire trajectory as p->p+dt/2,u->u+dt,p->p+dt,u->u+dt,p->p+dt,...p->p+dt/2,u->u+dt,p->p+dt/2.
| [in,out] | ut | Double precision colour fields |
| [in,out] | ut_f | Single precision colour fields |
| [in] | X0 | Up/down partitioned pseudofermion field |
| [in] | X1 | Holder for the partitioned fermion field, then the conjugate gradient output |
| [in] | Phi | Pseudofermion field |
| [in] | dk | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) |
| [in] | dk_f | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) float |
| [in,out] | dSdpi | The force |
| [in,out] | pp | Momentum field |
| [in] | iu,id | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | gamval | Double precision gamma matrices rescaled by kappa |
| [in] | gamval_f | Single precision gamma matrices rescaled by kappa |
| [in] | sigval,sigval_f | Double/float Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | c_sw | Clover coefficient |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping parameter |
| [in] | beta | Inverse gauge coupling |
| [in] | stepl | Steps per trajectory |
| [in] | dt | Step size |
| [in] | ancg | Counter for average conjugate gradient iterations |
| [in] | itot | Total average conjugate gradient iterations |
| [in] | proby | Termination probability for random trajectory length |
ut, ut_f, pp and dSdpi updated in place throughout the integration References Complex, and Complex_f.
| __global__ void Kernels::Minus_staple | ( | const int | mu, |
| const int | nu, | ||
| unsigned int * | iu, | ||
| unsigned int * | id, | ||
| Complex_f * | Sigma11, | ||
| Complex_f * | Sigma12, | ||
| Complex_f * | u11sh, | ||
| Complex_f * | u12sh, | ||
| Complex_f * | u11t, | ||
| Complex_f * | u12t ) |
Calculates the staple in the negative \(\mu\) direction.
| [in] | mu | \(\mu\) direction |
| [in] | nu | \(\nu\) direction |
| [in] | iu,id | Upper/lower indices |
| [in,out] | Sigma11,Sigma12 | Staple output |
| [in] | u11sh,u12sh | Gauge fields in \(\mu\) direction only |
| [in] | u11t,u12t | Gauge fields |
Sigma11 and Sigma12 Definition at line 55 of file cuforce.cu.
References Complex_f, conj(), kvol, and kvolHalo.
|
inline |
Wrapper for the momentum update during the integration step of the HMC.
| [in] | d | Step size |
| [in,out] | pp | Momentum field |
| [in] | dSdpi | Force field |
pp update in place Definition at line 71 of file integrate.c.
References cublas_handle, cudaDeviceSynchronise, and kmom.
| int OMF2 | ( | Complex * | ut[2], |
| Complex_f * | ut_f[2], | ||
| Complex * | X0, | ||
| Complex * | X1, | ||
| Complex * | Phi, | ||
| double * | dk[2], | ||
| float * | dk_f[2], | ||
| double * | dSdpi, | ||
| double * | pp, | ||
| 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, | ||
| const Complex | jqq, | ||
| const float | beta, | ||
| const float | akappa, | ||
| const float | c_sw, | ||
| const int | stepl, | ||
| const float | dt, | ||
| double * | ancg, | ||
| int * | itot, | ||
| const float | proby ) |
OMF second order five step integrator.
| [in,out] | ut | Double precision colour fields |
| [in,out] | ut_f | Single precision colour fields |
| [in] | X0 | Up/down partitioned pseudofermion field |
| [in] | X1 | Holder for the partitioned fermion field, then the conjugate gradient output |
| [in] | Phi | Pseudofermion field |
| [in] | dk | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) |
| [in] | dk_f | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) float |
| [in,out] | dSdpi | The force |
| [in,out] | pp | Momentum field |
| [in] | iu,id | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | gamval | Double precision gamma matrices rescaled by kappa |
| [in] | gamval_f | Single precision gamma matrices rescaled by kappa |
| [in] | sigval,sigval_f | Double/float Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | c_sw | Clover coefficient |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping parameter |
| [in] | beta | Inverse gauge coupling |
| [in] | stepl | Steps per trajectory |
| [in] | dt | Step size |
| [in] | ancg | Counter for average conjugate gradient iterations |
| [in] | itot | Total average conjugate gradient iterations |
| [in] | proby | Termination probability for random trajectory length |
ut, ut_f, pp and dSdpi updated in place throughout the integration Definition at line 141 of file integrate.c.
References Complex, Complex_f, Force(), Force_debug(), Gauge_Update(), Momentum_Update(), rank, and rescgg.
| int OMF4 | ( | Complex * | ut[2], |
| Complex_f * | ut_f[2], | ||
| Complex * | X0, | ||
| Complex * | X1, | ||
| Complex * | Phi, | ||
| double * | dk[2], | ||
| float * | dk_f[2], | ||
| double * | dSdpi, | ||
| double * | pp, | ||
| 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, | ||
| const Complex | jqq, | ||
| const float | beta, | ||
| const float | akappa, | ||
| const float | c_sw, | ||
| const int | stepl, | ||
| const float | dt, | ||
| double * | ancg, | ||
| int * | itot, | ||
| const float | proby ) |
OMF fourth order eleven step integrator.
| [in,out] | ut | Double precision colour fields |
| [in,out] | ut_f | Single precision colour fields |
| [in] | X0 | Up/down partitioned pseudofermion field |
| [in] | X1 | Holder for the partitioned fermion field, then the conjugate gradient output |
| [in] | Phi | Pseudofermion field |
| [in] | dk | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) |
| [in] | dk_f | \(\left(1+\gamma_0\right)e^{-\mu}\) and \(\left(1-\gamma_0\right)e^\mu\) float |
| [in,out] | dSdpi | The force |
| [in,out] | pp | Momentum field |
| [in] | iu,id | Lattice indices |
| [in] | gamin | Gamma indices |
| [in] | gamval | Double precision gamma matrices rescaled by kappa |
| [in] | gamval_f | Single precision gamma matrices rescaled by kappa |
| [in] | sigval,sigval_f | Double/float Commutators of gamma matrices scaled by \(\frac{c_\text{SW}}{2}\) |
| [in] | sigin | What element of the spinor is multiplied by row idirac each sigma matrix? |
| [in] | c_sw | Clover coefficient |
| [in] | jqq | Diquark source |
| [in] | akappa | Hopping parameter |
| [in] | beta | Inverse gauge coupling |
| [in] | stepl | Steps per trajectory |
| [in] | dt | Step size |
| [in] | ancg | Counter for average conjugate gradient iterations |
| [in,out] | itot | Total average conjugate gradient iterations |
| [in] | proby | Termination probability for random trajectory length |
ut, ut_f, pp and dSdpi updated in place throughout the integration References Complex, Complex_f, dimBlock, and dimGrid.
| __global__ void Kernels::Plus_staple | ( | const int | mu, |
| const int | nu, | ||
| unsigned int * | iu, | ||
| Complex_f * | Sigma11, | ||
| Complex_f * | Sigma12, | ||
| Complex_f * | u11t, | ||
| Complex_f * | u12t ) |
Calculates the staple in the positive \(\mu\) direction.
| [in] | mu | \(\mu\) direction |
| [in] | nu | \(\nu\) direction |
| [in] | iu | Upper indices |
| [in,out] | Sigma11,Sigma12 | Staple output |
| [in] | u11t,u12t | Gauge fields |
Sigma11 and Sigma12 Definition at line 23 of file cuforce.cu.
References Complex_f, conj(), kvol, and kvolHalo.