-
Notifications
You must be signed in to change notification settings - Fork 135
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
Backflow SoA Migration 2/2 #1225
Conversation
Can one of the maintainers verify this patch? |
1 similar comment
Can one of the maintainers verify this patch? |
OK to test |
Good use of ifdefs here. I agree the cleanup will be easier. |
Does the BF optimization work with SoA or not? Please add an issue that we don't have a test for the eI case. |
@ye-luo Do you mean to add a test case for electron-ion backflow? Some of the bccH tests certainly use an e-I backflow term... |
Yes. A test case for electro-ion backflow will be needed. |
Do we have a backflow optimization test? |
@prckent We have a test of all derivatives of the wavefunction w.r.t. optimizable parameters needed for the linear method, but I don't think we have a test of a realistic optimization run yet. |
Does the existing test imply that the "hand off" to the optimizer will be correct? If so, I think a bf-optimizer test is only nice to have and not critical. We will need a worked bf example at some point. |
@prckent I would say yes, and I've verified that things do in fact optimize on the side. Someone should point me to an optimization test template, or we should chat about what's desired out of such a test for backflow. Checking to see if it doesn't crash is easy, but BF has always been fickle for optimization. So saying we should gain X mHa for energy and reduce the variance by Y% for a test pass seems a bit daunting. |
The art of making an optimizer test is finding a small enough but still meaningful system that can be run fast and reliably enough (3sigma). Perhaps few electron HEG? |
This PR fixes the AoS/SoA distance table discrepancy in the backflow transformation. This enables me to run VMC/DMC with/without drift within SoA or AoS, using backflow wavefunctions.
Some notes:
1.) This is a "reference" implementation. Only the interfaces to the distance tables were modified. No attempt has been made to change the algorithm.
2.) Currently, the code is split between AoS and SoA code paths with #ifdef ENABLE_SOA. While some cringe at macros, I figure the goal is to pull out AoS eventually, so this forked code path shouldn't be long lived.