1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-04 19:25:56 +01:00
Christopher Kelly cee6a37639 Added a logging tag for HMC
As the integrator logger is active by default the cmdline option to activate had no effect. Changed option to *de*activate on request ("NoIntegrator")
Cleaned up generating rational approxs in the general RHMC code
As the tolerance of the rational approx is not related to the CG tolerance, regenerating approxs for MD and MC if they differ only by the CG tolerance is not necessary; this has been fixed
In DWF+I Gparity evolution code, added cmdline options to check the rational approximations and compute the lowest/highest eigenvalues of M^dagM for RHMC tuning
In the above, changed the integrator layout to a much simpler one that completes much faster; may need additional tuning
2021-02-08 09:30:35 -05:00
..
2019-04-17 12:03:20 +01:00

********************************************************************
TODO: 
********************************************************************

i) Got mixed precision in 2f and EOFA force and action solves.
   But need mixed precision in the heatbath solve. Best for Fermop to have a "clone" method, to
   reduce the number of solver and action objects. Needed ideally for the EOFA heatbath.
   15% perhaps
   Combine with 2x trajectory length?

ii) Rational on EOFA HB  -- relax order
                         -- Test the approx as per David email

Resume / roll.sh 

----------------------------------------------------------------

- 16^3 Currently 10 traj per hour

- EOFA use a different derivative solver from action solver
- EOFA fix Davids hack to the SchurRedBlack guessing

*** Reduce precision/tolerance  in EOFA with second CG param.                          (10% speed up)
*** Force gradient - reduced precision solve for the gradient                          (4/3x speedup)


*** Need a plan for gauge field update for mixed precision in HMC                      (2x speed up)
    -- Store the single prec action operator.
    -- Clone the gauge field from the operator function argument.
    -- Build the mixed precision operator dynamically from the passed operator and single prec clone.

*** Mixed precision CG into EOFA portion         
*** Further reduce precision in forces to 10^-6 ?

*** Overall: a 3x or so is still possible => 500s -> 160s and 20 traj per hour on 16^3.

- Use mixed precision CG in HMC                           
- SchurRedBlack.h: stop use of operator function; use LinearOperator or similar instead.
- Or make an OperatorFunction for mixed precision as a wrapper

********************************************************************
* Signed off 2+1f HMC with Hasenbush and strange RHMC 16^3 x 32 DWF Ls=16 Plaquette 0.5883 ish
* Signed off 2+1f HMC with Hasenbush and strange EOFA 16^3 x 32 DWF Ls=16 Plaquette 0.5883 ish
* Wilson plaquette cross checked against CPS and literature GwilsonFnone
********************************************************************

********************************************************************
* RHMC: Timesteps & eigenranges matched from previous CPS 16^3 x 32 runs:
********************************************************************

****
Strange (m=0.04)  has eigenspan 
**** 
16^3 done as 1+1+1 with separate PV's. 
/dirac1/archive/QCDOC/host/QCDDWF/DWF/2+1f/16nt32/IWASAKI/b2.13/ls16/M1_8/ms0.04/mu0.01/rhmc_multitimescale/evol5/work
****
2+1f 16^3  - [ 4e^-4, 2.42 ]    for strange

****
24^3 done as 1+1+1 at strange, and single quotient https://arxiv.org/pdf/0804.0473.pdf Eq 83,
****
double lambda_low =   4.0000000000000002e-04 <- strange
double lambda_low =   1.0000000000000000e-02 <- pauli villars
And high = 2.5

Array bsn_mass[3] = { 
double bsn_mass[0] =   1.0000000000000000e+00
double bsn_mass[1] =   1.0000000000000000e+00
double bsn_mass[2] =   1.0000000000000000e+00
}
Array frm_mass[3] = { 
double frm_mass[0] =   4.0000000000000001e-02
double frm_mass[1] =   4.0000000000000001e-02
double frm_mass[2] =   4.0000000000000001e-02
}

***
32^3 
/dirac1/archive/QCDOC/host/QCDDWF/DWF/2+1f/32nt64/IWASAKI/b2.25/ls16/M1_8/ms0.03/mu0.004/evol6/work
***
Similar det scheme
double lambda_low =   4.0000000000000002e-04
double lambda_low =   1.0000000000000000e-02

Array bsn_mass[3] = { 
double bsn_mass[0] =   1.0000000000000000e+00
double bsn_mass[1] =   1.0000000000000000e+00
double bsn_mass[2] =   1.0000000000000000e+00
}
Array frm_mass[3] = { 
double frm_mass[0] =   3.0000000000000002e-02
double frm_mass[1] =   3.0000000000000002e-02
double frm_mass[2] =   3.0000000000000002e-02
}

********************************************************************
* Grid: Power method bounds check
********************************************************************
- Finding largest eigenvalue approx 25 not 2.5
- Conventions:

Grid MpcDagMpc based on:

   (Moo-Moe Mee^-1 Meo)^dag(Moo-Moe Mee^-1 Meo)

- with  Moo = 5-M5 = 3.2
- CPS use(d) Moo = 1
- Eigenrange in Grid is 3.2^2 rescaled so factor of 10 accounted for