QMCPACK / qmcpack

Main repository for QMCPACK, an open-source production level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, and solids with full performance portable GPU support
http://www.qmcpack.org
Other
297 stars 139 forks source link

Input for Value type and precision needed, QMC_COMPLEX deprecated #4062

Open PDoakORNL opened 2 years ago

PDoakORNL commented 2 years ago

Is your feature request related to a problem? Please describe. Whether a run is done with real or complex value types and for that matter full or mixed precision should be expressed in the input. Initially this just insures this scientifically salient information is captured in the input file and not just the result of combing the input file with a particular binary, which might be captured in the job submission file and the output.

Initially this should just error out at the parse stage if the input parameters and binary configuration do not match, ultimately it should be used for runtime dispatch to instantiations of the code with the proper Value and Real types.

This is essential to actually move toward a single binary solution.

The us of the QMC_COMPLEX preprocessor define should be deprecated.

Additional context

Add any other context or screenshots about the feature request here.

prckent commented 2 years ago

@PDoakORNL Please talk with @williamfgc who has been looking at /thinking about the changes required to get us to a single executable and remove the QMC_COMPLEX build option. I agree that a good first step would be to define the input parameters for the project section. It is a good point that capturing these setting via the input would be an improvement in reproducibility. We do at least print the types early in the output log.

ye-luo commented 2 years ago

Since we can't request real/complex via input now, I prefer to avoid blockers to users. If there is no input, keep running. If there is an input, check against the build. I do noticed QMC_COMPLEX is on/off is not straightforwardly reflected in the output. We should fix this. The deprecation of QMC_COMPLEX requires additional coordination and I think we already have open issue. So to keep this issue more actionable, I would recommend just introduce an input and add a sanity check.

PDoakORNL commented 2 years ago

I don't think deprecation of new usage of the preprocessor define needs any additional coordination at all. I can't think of a case where you can't check whether ValueType is complex and proceed based on that.

prckent commented 2 years ago

Yes, the way to handle this and not block current users right now is abort if the inputs parameters are set and there is a conflict.