-
Notifications
You must be signed in to change notification settings - Fork 138
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
feature: parallel solve subspace diagonalization in dav_subspace #5549
base: develop
Are you sure you want to change the base?
Conversation
|
I have a brief insight regarding this PR: This process involves a transformation of parallel strategy.
Can this transformation of parallel strategy be more general? If the H and S matrices of LCAO are solved by iterative method (like |
The parallel diagonization is not always more efficient, it is related to the system size, parallel cores, and efficiency of parallel communication, etc. I have done some tests in #5480. |
The transformation of different 2D block distribution can be realized easily by call the scalapack function |
This feature use parallel_2d to deal with the parallel of H/S, but now parallel_2d is only compiled with ENABLE_LCAO=ON. I suggest to move parallel_2d.cpp to module_base to be a basic class. @mohanchen, @jinzx10, @kirk0830, what's your suggestions? |
Reopen it if needed |
What's the status now? @pxlxingliang |
@mohanchen All modifications have been completed, and need your review again. |
Diago_HS_para()
to diago the H/S by genelpa or scalapack. The function will perform 2D block distribution of data, call elpa/scalapack for solution, and collect eigenvectors to rank0.pxxxgvx_diag()
for calling scalapack to solve the generalized eigenvalue problem with double/complex/float/complex.diag_subspace_method
, which support to set the subspace diagonalization method in dav_subspace to use elpa or scalapack to solve.Reminder
Linked Issue
Fix #5480
Unit Tests and/or Case Tests for my changes
What's changed?
Any changes of core modules? (ignore if not applicable)