-
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
Remaining tasks for AoS to SoA transition #861
Comments
What about the optimizable wave function support? I'm working on the CUDA code now. |
OneBodyJastrowOrbital needs to be replaced with J1OrbitalSoA. Jastrow optimization is supported by the CUDA build. |
The optimization I was talking about was of the single particle orbitals. At the moment I have a J1OrbitalCUDASoA so as to look at what can be shared and what can't. So that we end up with a call like this: return createOneBodyJastrow<J1OrbitalCUDASoA<RadFuncType>,DiffOneBodySpinJastrowOrbital<RadFuncType> >(cur); A certain amount of the old CUDA OneBody and TwoBody code will go in but my current strategy is to make sure that any feature we don't have in CUDA we are following the SoA "method" and can degrade to the CPU implementation. Although this is speculative at the moment since I'm still working in the determinant code. |
Quick comment on the CUDA-> SoA transition, agreeing with @ye-luo 's list at the top: happily the CUDA SoA build is working for solids apart from runs involving Jastrows. e.g. https://cdash.qmcpack.org/CDash/testDetails.php?test=2572921&build=24790 shows that DMC is working with single determinant no Jastrow. After that the gaps are things like J3 and the new hybrid rep. |
RPAJastro is dependent on TwoBodyJastroOrbital. It also looks a bit unfinished in general. |
@ye-luo, please add this to the checklist at the top: "evaluateHessian for J1 and J2". These are present in AoS, but not SoA and I am using them in research now. |
@ye-luo please also add the evaluate_sp functions that appear in a number of QMCHamiltonianBase. These functions are needed to obtain and transmit single particle energies that are used by Traces, energy density, and energy density matrix. |
Please also add Stress, see #970. |
Note: We intend to flip the default to SOA shortly, since nearly all common features are implemented and we have observed that some users are overlooking the performance benefits of the SOA code. If anything critical is missing, please update this issue and the checklist at the top. Current gating functionalities are the derivatives for backflow. |
Update: SoA is now the default, but this issue remains relevant: at some point the AoS code will simply be deleted along with the legacy CUDA code. This will restore QMCPACK to having a single implementation "fork". To access functionality not ported will then require running an old version of QMCPACK or first porting the functionality to the current version. |
@spinedaflores Please can you comment here about your timeline for porting the orbital optimization code over? @Paul-St-Young Is the lattice deviation estimator important to you? If so, can you do the port to SoA? |
I'll aim to have my pull request ready by next Friday, but hopefully will have it done before then. |
@spinedaflores Thanks. You are definitely on track to beat the rest of us. |
@jtkrogel yes, I would like to keep the lattice deviation estimator working. I will look into porting |
I'm thinking about putting |
I think this is a good idea. |
Chiesa/Ceperley and bare force estimators are currently marked as done, but #2025 indicates they are not. Should we consider this task done or not? |
Calculation of pp derivatives for optimization needs to be captured above. It is a critical capability. |
@prckent Issues have been added/updated. |
All the items on the task list are now completed. #2179 was the last item. Following the v3.9.0 release, removal of the AoS code will commence. |
Basically done? |
Agreed. AoS is no longer a build option. |
This is the final list of tasks that have priority before the remaining AoS code is fully removed from the source. The AoS removal likely will occur sometime in Oct. 2019. Even code listed as "priority" below will be removed once the deadline is exceeded if the assignee(s) have not ported by then and this issue will be closed.
All remaining AoS code has been encapsulated by if-defs. The changes made in the following PR highlight all remaining AoS code:
https://github.com/QMCPACK/qmcpack/pull/1846/files
Priority code to port before the Oct. deadline:
latdev
andionwf
#1938)Code that is slated for deletion after the Oct. deadline (volunteers welcome!):
(SoA code has problems, see Cusp Correction AoS to SoA inconsistency (leading to "crazy" variance with SoA) #1388)Note: tests that pass for AoS but fail for SoA:
The text was updated successfully, but these errors were encountered: