-
Notifications
You must be signed in to change notification settings - Fork 160
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
Td mpi #1274
base: main
Are you sure you want to change the base?
Td mpi #1274
Conversation
Looks like the arpack-ng finder isn't working with a CMAKE_MODULE_PATH pointing to the location of arpackng-config.cmake. Probably should also cope with old style parpack install, as that's more likely to be in the usual deb/rpm installs. |
But you can compile on dpdevel? Works for me using env_dftb+/gcc12-openmpi. I get yet another error (compared to my HPC center) with the NO example. Will look into this. |
Exactly which cmake options are you using? As with that environment on buildbot, I get undefined references to pdsaupd_ |
Hi Ben, |
Now I also have a test with more cpu. Looks reasonable, I think. |
Hi Thomas,
Does
module add env/_whatever_compiler_
(i.e. the gnu/intel/whatever build environment)
not put this into the path?
Regards,
Ben
|
But you had some problems with missing symbols, didn't you? I don't see arpack in the module list, but remember vaguely that Balint had arpack installed. |
I make that ~97% parallel, pretty good!
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The biggest issue I'm noticing is that the cmake export for the arpack/parpack is now needed, so probably requires them to be built to get this on systems using packaging.
src/dftbp/dftb/scc.F90
Outdated
@:ASSERT(this%elstatType == elstatTypes%gammaFunc) | ||
|
||
gammamat(:,:) = 0.0_dp | ||
do ii = 1, this%coulomb%descInvRMat_(M_) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this copying the distributed matrix to a local matrix? The current structure behaves like a serial part of the code, as every process loops over the global matrix sizing.The gemr2d routine might be faster, or alternatively, loop over the local size of the invRMat and use scalafx_indxl2g to find the global location (see calls in coulomb.F90).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this is to get a global copy of Gamma. The partitioning of RPA vectors is not done with PBLAS, hence there is no point in distributing gamma. Can you come up with a nicer way to build it? I tried a lot of different things. This solution worked at least.
cmake/Modules/FindCustomArpack.cmake
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason to drop the finder? This could cope with both arpack and arpackng.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe Balint can comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aradi any views?
@thomas-niehaus Running on buildbot with 2 MPI procs fails for several tests (block sizes are too small), but also timedep/C66O10N4H44_Ewindow fails for exc_oscillator strength. I used the intel22 MPI with your arpack-ng libraries. |
@thomas-niehaus Something got broken for both the xlbomd and derivatives tests, which appears for 2 processors: |
Might be specific to one test machine, I'll get back to you about this. |
Parallelism for the short gamma contribution Add timers for some of linear response process Move BLACS matrix reorder routine and generalize Enable MPI Stratmann build without ARPACK solver
@thomas-niehaus Branch changes now merged in. I noticed that dipole intensities for propadiene_OscWindow-Stratmann are OK for 1 processor, but differ for 2. |
|
@thomas-niehaus the N2_onsite test (and a few surrounding ones) doesn't have a trap for the number of processors. In that specific one, 16 processors fails (probably by that time some matrix isn't distributed properly). Can you add a MPI_PROCS <= 16 or similar to all of timedep/2CH3-Temp, timedep/2CH3-Triplet-Temp, timedep/NO, timedep/NO_onsite, timedep/N2_onsite, timedep/propadiene_OscWindow and have a look why the N2_onsite the the only one failing on 16 procs ? |
Note, N2_onsite (only) from these fails on 16 procs, the others still run.
@thomas-niehaus I've just checked in a limit to the tests to <=8 procs and will see if I can find out why the N2_onsite was different. |
The error is inside the call to pdsaupd, so probably not much we can do. |
All tests (serial/parallel) pass locally, the buildbot errors seem to be due to the CMAKE arpack-ng issue. @balint: could you have a look at it? Otherwise the PR seems to be ready. |
One final thing. If i compile the serial version with ifort and all checks on, I get a runtime error "Attempt to fetch from allocatable variable LOCSIZE when it is not allocated". In the serial version the locSize array is never allocated, used or touched. It is just passed (unallocated) to buildAndDiagExcMatrixArpack as integer, intent(in) :: locSize(:). This is sufficient to throw the error. Any ideas why this happens? |
@thomas-niehaus That's a missing allocatable from the variable definition in the affected subroutine, as intel tests this in more recent versions. I'll push changes to affected variables in a couple of minutes. |
Yes, machine specific, so not a problem for your changes (will need to investigate why the main branch was failing for these tests) |
First attempt of an MPI version of Casida. Currently supports Arpack solver and can do spectra for singlets/triplets/temperature/windows/spin polarized/onsite corrected. Based on the MPI version (not BLACS) of arpack-ng.
To compile, compile first arpack-ng (works out of the box) and then include the path to the lib via CMAKE_PREFIX_PATH.
Let me know what you think.....