Skip to content
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: Add PEXSI Support for Gamma Only LCAO Calculation #3561

Merged
merged 73 commits into from
May 15, 2024

Conversation

Flying-dragon-boxing
Copy link

Reminder

  • Have you explained the changes of codes in core modules of ESolver, HSolver, ElecState, Hamilt, Operator or Psi? (ignore if not applicable)

What's changed?

  • new diago method (ks_solver) pexsi added to hsolver (diago_pexsi.cpp/.h and folder module_pexsi in module_hsolver)
  • when ks_solver set to pexsi, pexsi uses DM from its calculation to calculate charge density rho (PEXSI calculates DM instead of psi)
  • new FindPEXSI.cmake module added to folder cmake
  • inputs and outputs related to pexsi
  • Makefile and CMakeLists.txt

Any changes of core modules? (ignore if not applicable)

  • class DiagoPexsi inherited from hsolver::DiagH
  • new function dmToRho in class ElecStateLCAO to calculate rho from density matrix given by pexsi solver

zhangzh-pku and others added 25 commits May 1, 2023 01:27
* run INPUT.Default() in every process in InputParaTest (deepmodeling#3490)

Co-authored-by: kirk0830 <67682086+kirk0830@users.noreply.github.com>

* add blas support for FindLAPACK.cmake (deepmodeling#3497)

* more unittest of QO: towards orbital selection (deepmodeling#3499)

* Fix: fix bug in mulliken charge calculation (deepmodeling#3503)

* fix phase

* fix case test

* Refactor: namespace Conv_Coulomb_Pot_K (deepmodeling#3446)

* Refactor: namespace Conv_Coulomb_Pot_K

* Refactor: namespace Conv_Coulomb_Pot_K

---------

Co-authored-by: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com>

* enable the computation of all zeros in one function call (deepmodeling#3449)

Co-authored-by: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com>

* replace ios.eof() by ios.good() to avoid meeting badbit and failbit in reading STRU (deepmodeling#3506)

* Build: add ccache to accelerate the testing process (deepmodeling#3509)

* Build: add ccache to accelerate the testing process

* Update test.yml

* Update test.yml

* Update test.yml

* Docs: to avoid the misunderstanding in docs (deepmodeling#3518)

* to avoid the misunderstanding in docs

* Update docs/quick_start/hands_on.md

Co-authored-by: Chun Cai <amoycaic@gmail.com>

---------

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Docs: fix a missing depencency in conda build env (deepmodeling#3508)

* Feature: Add ENABLE_RAPIDJSON option to control the output of abacus.json (deepmodeling#3519)

Add ENABLE_RAPIDJSON option to control the output of abacus.json

* Feature: add python wrapper for math sphbes (deepmodeling#3475)

* recommit for review

* add python wrapper

* remove timer since performace tests add

* Feature: support segment split in kline mode in KPT file and `out_band` band output precision control, `8` as default (deepmodeling#3493)

* add precision control

* correct serial version of nscf_band function

* fix issue 3482

* update unit and integrated test

* update document

* correct unittest and make compatible with false and true

* fix: bug in Autotest.sh when result.ref has no totaltimeref (deepmodeling#3523)

* Fix : unit test of module_xc (deepmodeling#3524)

* Fix: omit small magnetic moments to avoid numerical instability (deepmodeling#3530)

* update deltalambda

* avoid numerical error in orbMulP

* add constrain on Mi

* change case reference value

* Fix: fix multiple compiler warnings (deepmodeling#3515)

* Fix: add noreturn attribute to warning_quit

* Add type conversion

* fix string literal

* fix small number trunctuation

* Fix system call returned value not checked

* fix missing braket

* Refactor parameter_pool.cpp and parameter_pool.h

* remove duplicated return statements

* Change WARNING_QUIT occurances in tests

* Add warning message to help debug UT

* output the default precision flag (deepmodeling#3496)

Co-authored-by: kirk0830 <67682086+kirk0830@users.noreply.github.com>

* Build: Improving CMake performance for finding LibXC and ELPA (deepmodeling#3478)

* Fix for finding LibXC and ELPA

* For compatibility to previous routines

* syntax fix for FindELPA.cmake

* Update cmake/FindELPA.cmake

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Using CMake interface as default for finding LibXC

* update docs

* fix for FindLibxc: changing imcompatible if statement

* fix for FindLibxc: changing imcompatible if statement

* fix for FindLibxc: changing imcompatible if statement

* update docs for installing pkg-config

* Update FindLibxc.cmake

* Update FindLibxc.cmake

* remove previous LibXC routine in CMakeLists.txt

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Update easy_install.md with Makefile-built LibXC supported

* Update easy_install.md to include different behavior in different version on finding ELPA

---------

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Docs: correct some docs about mp2 smearing method (deepmodeling#3533)

* correct some docs about mp2 smearing method

* add docs about mv method

* Feature : printing band density (deepmodeling#3501)

Co-authored-by: wenfei-li <liwenfei@gmail.com>
Co-authored-by: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com>

* add some docs for PR#3501 (deepmodeling#3537)

* Feature: enable restart charge density mixing during SCF (deepmodeling#3542)

* add a new parameter mixing_restart

* do not update rho if iter==mixing_restart

* do not update rho if iter==mixing_restart-1

* reset mix and rho_mdata if iter==mixing_restart

* fix SCF exit directly since drho=0 if iter=GlobalV::MIXING_RESTART

* re-set_mixing in eachiterinit for PW and LCAO

* enable SCF restarts in esolver_ks::RUN

* add some UnitTests

* add some Docs

* new inputs added

* Update input-main.md (deepmodeling#3551)

Solve the format problem mentioned in issue 3543

* Build: fix compatibility issue against toolchain install (deepmodeling#3540)

* Fix for finding LibXC and ELPA

* For compatibility to previous routines

* syntax fix for FindELPA.cmake

* Update cmake/FindELPA.cmake

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Using CMake interface as default for finding LibXC

* update docs

* fix for FindLibxc: changing imcompatible if statement

* fix for FindLibxc: changing imcompatible if statement

* fix for FindLibxc: changing imcompatible if statement

* update docs for installing pkg-config

* Update FindLibxc.cmake

* Update FindLibxc.cmake

* remove previous LibXC routine in CMakeLists.txt

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Update easy_install.md with Makefile-built LibXC supported

* Update easy_install.md to include different behavior in different version on finding ELPA

* fix compatibility issue against toolchain

* Change default ELPA install routine to old one

---------

Co-authored-by: Chun Cai <amoycaic@gmail.com>

* Test: Configure performance tests for math libraries (deepmodeling#3511)

* add performace test of sphbes functions.

* fix benchmark cmake errors

* add dependencies for docker

* update docs

* add performance tests for sphbes

* add google benchmark

* rewrite benchmark tests in fixtures

* disable internal testing in benchmark

* merge benchmark into integration test

---------

Co-authored-by: StarGrys <771582678@qq.com>

* Configure Makefile Compiling, fix typos

* Fix Makefile Intel toolchains compile errors

* Fix even more PEXSI related Makefile compiling issues

* Update hsolver_pw.cpp (deepmodeling#3556)

when use_uspp==false, overlap matrix should be E.

* Fix: cuda build target (deepmodeling#3276)

* Fix: cuda buid target

* Update CMakeLists.txt

---------

Co-authored-by: Denghui Lu <denghuilu@pku.edu.cn>

---------

Co-authored-by: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com>
Co-authored-by: kirk0830 <67682086+kirk0830@users.noreply.github.com>
Co-authored-by: Haozhi Han <haozhi.han@outlook.com>
Co-authored-by: Zhao Tianqi <hongriTianqi@users.noreply.github.com>
Co-authored-by: PeizeLin <78645006+PeizeLin@users.noreply.github.com>
Co-authored-by: jinzx10 <jzx016@hotmail.com>
Co-authored-by: Chun Cai <amoycaic@gmail.com>
Co-authored-by: Peng Xingliang <91927439+pxlxingliang@users.noreply.github.com>
Co-authored-by: Jie Li <76780849+jieli-matrix@users.noreply.github.com>
Co-authored-by: Wenfei Li <38569667+wenfei-li@users.noreply.github.com>
Co-authored-by: Denghui Lu <denghuilu@pku.edu.cn>
Co-authored-by: YI Zeping <18586016708@163.com>
Co-authored-by: wenfei-li <liwenfei@gmail.com>
Co-authored-by: jingan-181 <78459531+jingan-181@users.noreply.github.com>
Co-authored-by: StarGrys <771582678@qq.com>
Co-authored-by: Haozhi Han <haozhi.han@stu.pku.edu.cn>
Revert "Modify inputs and update to latest version"
@mohanchen mohanchen removed the request for review from haozhihan April 8, 2024 01:59
@WHUweiqingzhou
Copy link
Collaborator

WHUweiqingzhou commented Apr 12, 2024

  1. please add a test report from the developers' side.
  2. please add an example in abacus-develop/example to show how to use PEXSI.

@Flying-dragon-boxing
Copy link
Author

  • pexsi_dm and pexsi_edm are dmk/edmk, which should be indicated
  • deconstruct methods and memory management may be dealt with better

@Flying-dragon-boxing
Copy link
Author

Test report (based on previous tests): https://xmywuqhxb0.feishu.cn/file/HH0wbFEUuozhYIxPmbGcJZYQnIJ?from=from_copylink

Please let me know if you need further information

@mohanchen
Copy link
Collaborator

We will soon accept this PR, and continue updating PEXSI-related codes.

@mohanchen mohanchen added the Features Needed The features are indeed needed, and developers should have sophisticated knowledge label May 11, 2024
Copy link
Collaborator

@WHUweiqingzhou WHUweiqingzhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@mohanchen mohanchen merged commit 6138a50 into deepmodeling:develop May 15, 2024
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Features Needed The features are indeed needed, and developers should have sophisticated knowledge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants