Add Chase library, split LDIAGO driver in two, Split LINEAR_algebra_driver and improved old diago solver

  • K_stored_in_a_blacs_matrix_ldiago: the code which re-distribute the BSE matrix is blacs form has been extracted from LDIAGO driver. Result is stored in a c_ptr object later use by LDIAGO_driver

  • K_stored_in_a_blacs_matrix_yambo: few selected subroutines have been extracted from LINEAR_ALGEBRA_driver for BSE case and do the same operatons as the ldiago counterpart. Result is stored into a PAR_matrix type M%blc element. Performances are much worse than _ldiago version.

  • K_stored_in_a_slepc_matrix: fixed memory issue

  • Calls to SERIAL_HERMITIAN_chase and PARALLEL_HERMITIAN_chase moved away from LINEAR_ALGEBRA_driver, inside CHASE_driver which uses M%blc. We could consider integrating the calls to CHASE_driver inside LDIAGO. To be discussed.

  • Calls to SERIAL_HERMITIAN_diago/x and PARALLEL_HERMITIAN_diago/x moved away from LINEAR_ALGEBRA_driver, inside ODIAGO_driver which uses M%blc. PARALLEL_Hermitian_diago contains the old interface with scalapack, now with BSE matrix memory distributed. However the eigenvectors are still not distributed. Same for PARALLEL_Hermitian_diagx. This is however in principle usable, since it allows to reduce the total number of eigenvectors. All this is just a small improvement over legacy code, doing the same interfaces as the CHASE library. LDIAGO_driver remains a far better choice for many reasons.

  • extra benefit: now LINEAR_algebra_driver is much more readable. Still to slpit in 3 more: inversion driver, matmul dirver, and lyn_system driver

  • test 11_BSE_chase added to test-suite in LiF/GW-OPTICS. Also perltest_lumen.pl modified to handle the CHASE tests similarly to the SLEPC tests

  • added some info on how to compile chase with both gfortran and nvfortran (GPU support):
    https://www.lumen-code.org/wiki/index.php?title=Compile_the_libraries_in_Lumen_independently#Chase
    and to link it
    https://www.lumen-code.org/wiki/index.php?title=Install_Lumen_on_a_Debian_machine_with_some_libraries_provided_via_modules

Edited by Davide Sangalli

Merge request reports

Loading
Loading