Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/swf #62

Open
wants to merge 4 commits into
base: devel
Choose a base branch
from
Open

feature/swf #62

wants to merge 4 commits into from

Conversation

GioPede
Copy link

@GioPede GioPede commented Jun 11, 2021

Hello, this is a modification to the QDPCloverTerm and CloverFermActParams classes to allow calculations with the exponential version of the Wilson Clover Action (or Stabilized Wilson Fermions), see DOI: 10.1016/j.cpc.2020.107355 for more details.
I had contacted B. Joo about a year ago, the solution I made then (and that I have been using since) was not really the optimal one, as it required a lot of file duplication.
This version here instead adds an optional parameter to the clover action , which defaults to false, the regular case. If it is true then some small changes are made in the creation of the CloverTerm linear operator and an exponentiate function is called.

The changes to the file lib/actions/ferm/linop/clover_term_qdp_w.h are minimal, and hopefully not breaking for any existing code.
The changes in the lib/actions/ferm/fermacts/clover_fermact_params_w.h and lib/actions/ferm/fermacts/clover_fermact_params_w.cc since the new parameter default to false surely are non breaking.
There is just a new file that I called lib/actions/ferm/linop/clover_term_qdp_stabilized_helpers.h that contains the exponentiation of the clover term at the lattice site level. This latter is also added to the proper Makefile.am. (Probably one needs to add it to the CMakeLists.txt file, but I have little experience with those for chroma, so I'd rather have a later commit fix it)

The implementation right now only works with solvers that load the linear operator from the CPU and do not build it directly on an accelerator. I have tested this with the regular CLOVER solver, the QUDA_CLOVER_INVERTER and QPHIX_CLOVER_INVERTER solvers, all with results that are within the solver precision. These have also been compared with my old implementation which was tested against the openQCD version of the solver used in the paper linked above.

This only works for spectroscopy, not for gauge generation, as there are no derivatives implemented for this new action yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant