FHI-aims Million Atom Development Collaboration Log

Published:

Author: Wu Yangjun

Development Conventions

Environment Platform

  • Supercomputing Platform: Sunway TaihuLight

  • Program Path: /home/export/online3/para030/wuyangjun/07_aims_million_dev/fhi-aims_MPE_O3_local-index

    • Clone the repository to your directory
    git clone /home/export/online3/para030/wuyangjun/07_aims_million_dev/fhi-aims_MPE_O3_local-index
    
    • Use git pull and git push for synchronization, merging, and pushing changes
    • If git push fails, configure the following in the main repository
    git config --global receive.denyCurrentBranch updateInstead
    
  • Test Path/home/export/online3/para030/wuyangjun/07_aims_million_dev/sw5_test

    • H2_mini:Hydrogen molecule
    • H2O:Water molecule
    • RBDmini:RBD protein

Compilation Environment

  • Must load the 710 compilermodule load sw/compiler/gcc710

Precision Requirements

FHI-aims currently has two versions of the program, a large memory version (global index) and a small memory version (local index). They can be switched incontrol.in

  • local index:Add the following configuration in control.in
use_local_index .true.
load_balancing .true.
  • global index:Comment out the following configuration in control.in
#use_local_index .true.
#load_balancing .true.

The local index introduces precision errors. To ensure precision consistency, testing is done in two steps:

  • Step 1: First, develop and test under the global index to ensure no precision loss
  • Step 2: Then switch to local indextesting. As long as the precision error (compared to the original global index) does not exceed the error between the original program’s global index and local index.
    • After development, there are four program versions: the original program’s global index (gidx) and local index (lidx), and the optimized global index (gidx’) and local index (lidx’)
    • Step 1 ensures gidx and gidx’ are completely consistent
    • Step 2 ensures the error between lidx’ and gidx/gidx’ does not exceed the error between lidx and gidx