Mass-Preconditioning for the HMC (Feature #257)


Added by Christopher Pinke about 7 years ago. Updated over 6 years ago.


Status:Done Start date:22 Feb 2012
Priority:Normal Due date:
Assignee:Christopher Pinke % Done:

100%

Category:-
Target version:2012.2 Estimated time:15.00 hours

Description

One can improve the time spent on HMC trajectories enormously by applying a technique called "mass preconditioning.
See hep-lat/0506011 for more information.
This can be implemented without the need to have new kernels:

  • add appropiate fermion fields to the algorithm
  • add appropiate force calculation
  • if necessary, add inputparameters
  • testing...

Related issues

blocked by CL2QCD - Feature #258: Integration using 3 timescales Done 22 Feb 2012

Associated revisions

Revision c575437a
Added by Christopher Pinke over 6 years ago

corrected bugs in hmc with mass-preconditioning.
refs #257

Revision f324dc2a
Added by Christopher Pinke over 6 years ago

added usage of correct gf in fermion force calculation
refs #257

Revision a00ea8a7
Added by Christopher Pinke over 6 years ago

detratio force now uses arg gf throughout
refs #257

Revision 87b9da5a
Added by Christopher Pinke over 6 years ago

debugged detratio force call
refs #257

Revision db2a102e
Added by Christopher Pinke over 6 years ago

added args to s_fermion
refs #257

Revision 7ba5e787
Added by Christopher Pinke over 6 years ago

corrected calculation of fermion energy in case in metropolis step
refs #257

Revision f09c0905
Added by Christopher Pinke over 6 years ago

added usage of mass-args to s_fermion
refs #257

Revision 87ea0e92
Added by Christopher Pinke over 6 years ago

fixed a bug in the leapfrog with 3 timescales
added more debug output to HMC ingredients
refs #257

Revision 7875ed17
Added by Christopher Pinke over 6 years ago

changed debug output in force calling fcts
refs #257

Revision 8391c3f6
Added by Christopher Pinke over 6 years ago

debugged detratio force
modified HMC related output
added get fct. to clmem_force
refs #257

History

Updated by Christopher Pinke about 7 years ago

  • Assignee set to Christopher Pinke

Updated by Christopher Pinke about 7 years ago

  • Target version set to 2012.2

Updated by Christopher Pinke about 7 years ago

With 6da8bf79 I added necessary parameters for the mass-preconditioning.

When adding the kernel, a difficulty will be that in case of mass-preconditioning, one has to create the same kernels, but with different compile parameters, i.e. one has to change "collect_options" here, which is build up before each kernel compilation anyway (via "fill_collect_options"). This is not so hard to do, however it should be done in a way that the overall structure of the function "fill_collect_options" is not changed, because all modules use it...

  • % Done changed from 0 to 20

Updated by Christopher Pinke about 7 years ago

The most coherent way of implementing mass-preconditioning (i.e. using different fermion matrices) is to add arguments to the kernels (kappa and mu).
It will be interesting to see if the hard-coded values have any impact on the performance of the kernels...

Updated by Christopher Pinke about 7 years ago

With ccff2dd0 I added kappa and mu as arguments to all kernels in opencl_module_fermions and adjusted all functions correspondingly.

NOTE: As I was at it, I also renamed all occurences of "eoprec" to "eo" in this class in order to have a more coherent nomenclature.

  • % Done changed from 20 to 30

Updated by Christopher Pinke about 7 years ago

With a4f92b0d I added counters for the iterations the solver needs during the HMC inversions.
This is necessary if one wants to tune the mass-preconditioning parameters.

Updated by Christopher Pinke about 7 years ago

What is left to do is:

  • the fermion force function need an add. arguments for kappa and mu, this will also affect some functions in the integrator
  • in principle the force and action calculation works the same way as with a normal fermion determinant, however, one has to fill in some matrix multiplications
  • one needs a couple of more fields to save all ingredients plus some tmp. fields

If the implementation is done, one might test it against a test case from tmlqcd, where results are given in the manual (hmc_input3).

Updated by Christopher Pinke over 6 years ago

I completed the implementation in former commits.
The HMC runs through with mass-preconditioning.

It has to be tested though...

  • % Done changed from 30 to 70

Updated by Christopher Pinke over 6 years ago

The commits were 01389b69 until 62f63a8f (14. - 16.5.2012).

Updated by Christopher Pinke over 6 years ago

I debugged the detratio init, force and energy calculation.
Also, I checked the HMC against tmlqcd, using yet the same mass for the preconditioner as in the normal fermion det.

  • % Done changed from 70 to 80

Updated by Christopher Pinke over 6 years ago

There were still a couple of bugs in the code, however, I tested it extensively against tmlqcd, and runs on 4^4 lattices gave agreeing results both in plaquette and dH, using leapfrog as well as 2mn integrator and mass-preconditioning in kappa and mu, respectively.

  • Status changed from New to Done
  • % Done changed from 80 to 100

Also available in: Atom PDF