JeffersonLab / chroma

The Chroma Software System for Lattice QCD
http://jeffersonlab.github.io/chroma
Other
57 stars 51 forks source link

HEX smearing is not implemented for HMC but does not fail #16

Closed martin-ueding closed 7 years ago

martin-ueding commented 7 years ago

HEX smearing seems to be implemented for the HMC, one can create a hmc input XML which includes HEX_FERM_STATE and the simulation runs. However, lib/actions/ferm/fermstates/hex_fermstate_w.h reveals missing parts:

/* Not implemneted   **/
virtual void deriv(P& F) const 
{
  START_CODE();

  END_CODE();
}

I had started a simulation with this assuming that if there was a key in the factory, it would be implemented. In order to prevent people from creating false results, I think one should throw some exception in the missing methods to make the program fail fast with an error message saying that HEX smearing is not supported currently.

Should I implement that?

bjoo commented 7 years ago

HI Martin, Yes, I think in the past there was an attempt to create the smearing, but as you note the force term was not implemented - only the actual operation. I think there was some preliminary study to compare with stout maybe? It was long ago.

We had to put in the stub function to satisfy the calss interface I am guessing. It is true that usually we have an error message there saying something like:

QDPIO::cerr << “Not implemented” << std::endl; QDP_abort(1);

Feel free to implement, or if you like, implement the smearing force recursion :) Although going by how we did this for stouting, it was a bit yucky (we had to break out of QDP++ and do our own explicit site looping).

Thanks and best wishes, B

On Jan 12, 2017, at 6:19 AM, Martin Ueding notifications@github.com wrote:

HEX smearing seems to be implemented for the HMC, one can create a hmc input XML which includes HEX_FERM_STATE and the simulation runs. However, lib/actions/ferm/fermstates/hex_fermstate_w.h reveals missing parts:

/* Not implemneted **/ virtual void deriv(P& F) const { START_CODE();

END_CODE(); }

I had started a simulation with this assuming that if there was a key in the factory, it would be implemented. In order to prevent people from creating false results, I think one should throw some exception in the missing methods to make the program fail fast with an error message saying that HEX smearing is not supported currently.

Should I implement that?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.


Dr Balint Joo High Performance Computational Scientist Jefferson Lab 12000 Jefferson Ave, Suite 3, MS 12B2, Room F217, Newport News, VA 23606, USA Tel: +1-757-269-5339, Fax: +1-757-269-5427 email: bjoo@jlab.org

martin-ueding commented 7 years ago

I have implemented the exception. It seems the interest in HEX smearing has been as a simple performance benchmark against STOUT. Perhaps it will become part of my thesis, until then I will focus on other things.