qmcpack icon indicating copy to clipboard operation
qmcpack copied to clipboard

Input for Value type and precision needed, QMC_COMPLEX deprecated

Open PDoakORNL opened this issue 2 years ago • 4 comments

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.

PDoakORNL avatar Jun 15 '22 18:06 PDoakORNL

@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.

prckent avatar Jun 15 '22 19:06 prckent

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.

ye-luo avatar Jun 15 '22 19:06 ye-luo

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.

PDoakORNL avatar Jun 15 '22 19:06 PDoakORNL

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.

prckent avatar Jun 15 '22 19:06 prckent