Closed gitpeterwind closed 6 months ago
Attention: 11 lines
in your changes are missing coverage. Please review.
Comparison is base (
698e74f
) 70.54% compared to head (59a0eb2
) 68.66%.
Files | Patch % | Lines |
---|---|---|
src/mrdft/MRDFT.cpp | 58.33% | 10 Missing :warning: |
src/mrdft/Functional.cpp | 98.96% | 1 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
The loop over node is set as the outer loop in MRDFT. For large systems using MPI, that removes the memory intensive intermediate Functions (mostly derivatives) , and is also much faster as a by-product. The code is also much simpler (only one extra method in Functional, instead of the 4 subclasses for each case).
Also the rotation of the sad initial_guess was very slow and a bottleneck. A new rotation is implemented and the time went down from 200 s to 3 s!
With all the "node_xc" changes in mrcpp and mrchem, the code is much more user friendly. It runs smoothly with 1000 orbitals on Betzy. No need to make special settings at the start to "save" memory. For even larger systems, the O(N^3) terms (diagonalization of Fock matrix, orthonormalization, localization) become a bottleneck and should be addressed (using ELPA for example).
Test valinomycine (300 orbitals) betzy, 4 nodes (can also run on 1 nodes now): old:
new: