README For PASE1.0

This README file serves for requesting the "SISC Reproducibility Badge: code and data available" of the paper "A Massively Parallel Augmented Subspace Eigensolver and Its Implementation for Large Scale Eigenvalue Problems", authored by Yangfei Liao, Haochen Liu, Zijing Wang, and Hehu Xie.

GitLab repository link is https://gitlab.com/xiegroup/pase1.0.git.

The numerical examples are carried out on LSSC-IV in the State Key Laboratory of Scientific and Engineering Computing, Chinese Academy of Sciences. Each computing node has two 18-core Intel Xeon Gold 6140 processors at 2.3 GHz and 192 GB memory. In the following tests, we utilized the Intel MPI compiler (mpiicc), and both BLAS and LAPACK are versions of Intel MKL.

Descriptions of Codes

In the PASE 1.0 repository, there are a total of two folders, namely OpenPFEM4PASE and PASE. In Section 6 of the paper, a total of five test cases are presented. The corresponding test programs for these cases are as follows:

  1. The first test case is associated with the test program located at ./pase/pase/test/test_gmg1.c.
  2. The second test case is associated with the test program located at ./pase/pase/test/test_gmg2.c.
  3. The third test case is associated with the test programs located at ./pase/pase/test/test_gmg3.c and ./pase/pase/test/test_gmg4.c.
  4. The fourth test case is associated with the test program located at ./OpenPFEM4PASE/test/Eigen3D_adapted_pase.c.
  5. The fifth test case is associated with the test program located at ./OpenPFEM4PASE/test/Eigen3D_adapted_pase2.c.

Preparations For PASE

  1. Install MPI, BLAS, LAPACK, PETSc and SLEPc. And export the corresponding paths in the bashrc file.

    Note that when installing PETSc, it is necessary to simultaneously install packages METIS and ParMETIS.

  2. Installation for PASE

    • The source code path for the PASE software package is pase1.0/PASE.

    • After configuring and installing the external environment, it is necessary to modify the ./CMakeLists.txt in project PASE.

      1. Modify ./config/LSSC4_oneapi2021 according to the MPI environment.
      2. Notice the paths for linking PETSc, SLEPc, and OPENPFEM in the ./CMakeLists .
      3. Set OPENPFEM_DIR path to pase1.0/OpenPFEM4PASE/shared(Absolute path) in bashrc file.
    • Enter the path and then execute the following commands to install PASE

Descriptions of Parameters

PASE

ParametersDescription
nevnumber of eigenvalues to compute
num_levelsnumber of multigrid levels
initial_levelthe layer at which the initial value is calculated
aux_rtolconvergence tolerance of the eigenproblem (3.2) in Algorithm 1
pc_typetype of preconditioner
if_batcheswhether to implement a batching strategy
batch_sizesize of each batch (the k in Algorithm 11)
more_aux_nevnumber of additional eigenpairs of the eigenvalue problem 5.3 to be solved such that the desired ones are contained (the kof in Algorithm 10)
more_batch_sizenumber of additional eigenpairs computed during each batch in order to help PASE converges faster (the kol in Algorithm 11)
max_refinenumber of refinement times
smoothing_typetype of smoothing method

GCGE

ParametersDescription
nevConvnumber of eigenvalues to compute
gapMinthreshold for detecting repeated roots
nevGivennumber of known eigenpairs
block_sizesizes of P and W in GCG algorithm
nevMaxthe maximum number of eigenpairs to compute
nevInitinitial size of X in GCG algorithm
tol_gcg[0]absolute tolerance
tol_gcg[1]relative tolerance
compW_methodthe method for linear solver

SLEPC

ParametersDescription
nevnumber of eigenvalues to compute
ncvthe maximum dimension of the subspace to be used by the solver
mpdthe maximum dimension allowed for the projected problem
maxitthe maximum iteration count
blocksizethe block size in LOBPCG
restartthe percentage of the block of vectors to force a restart in LOBPCG

The model eigenvalue problem

The corresponding test code is ./pase/test/test_gmg1.c in project PASE

PASE

In Table 1 and Table 2, only the numbers of uniform refinements have been altered. Specifically,

GCGE

The corresponding test code is ./pase/test/test_gmg1.c in project PASE

SLEPc

The corresponding test code is ./pase/test/test_gmg1.c in project PASE.

We conduct tests separately for the Krylov-Schur and LOBPCG methods and obtain optimal settings for ncv and mpd. Additionally, corresponding parameters were set for the LOBPCG method to achieve maximum efficiency.

A more general eigenvalue problem

PASE

The corresponding test code is ./pase/test/test_gmg2.c in project PASE.

GCGE

The corresponding test code is ./pase/test/test_gmg2.c in project PASE.

SLEPc

The corresponding test code is ./pase/test/test_gmg2.c in project PASE.

We conduct tests separately for the Krylov-Schur and LOBPCG methods and obtain optimal settings for ncv and mpd. Additionally, corresponding parameters were set for the LOBPCG method to achieve maximum efficiency.

Numerical tests for batch scheme

PASE

The corresponding test code is ./pase/test/test_gmg3.c and ./pase/test/test_gmg4.c in project PASE.

GCGE

The corresponding test code is ./pase/test/test_gmg3.c and ./pase/test/test_gmg4.c in project PASE.

SLEPc

The corresponding test code is ./pase/test/test_gmg3.c and ./pase/test/test_gmg4.c in project PASE.

We conduct tests separately for the Krylov-Schur and LOBPCG methods and obtain optimal settings for ncv and mpd. Additionally, corresponding parameters were set for the LOBPCG method to achieve maximum efficiency.


Adaptive finite element method

The corresponding test code is ./test/Eigen3D_adapted_pase.c in project OPENPFEM4PASE.


Adaptive finite element method for Hydrogen atom

The corresponding test code is ./test/Eigen3D_adapted_pase2.c in project OPENPFEM4PASE.

In the default settings, we print iteration information of PASE. If you do not need to output relevant information, please set the value of PRINT_INFO to 0 in line 25 of ./pase/src/pase_sol.c.