Changes to the Workplan

At the time Michael Lysaght started work on the project he, along with Jimena Gorfinkel, attended a meeting sponsored by CCP2 on Methods and Codes for Atoms and Molecules in Strong Laser Fields in April 2011 [9]. Whilst there they discussed their work with several colleagues who suggested they considered using PETSc/SLEPc for the Hamiltonian construction and diagonalization. They were particularly impressed by reports from a group in Madrid (who run on Mare Nostrum) on its efficiency and the size of the matrices they were diagonalizing. SLEPc is the Scalable Library for Eigenvalue Problem computations that is built on top of PETSc (Portable, Extensible Toolkit for Scientific Computation which is available on HECToR) and is considered an extension of PETSc. It enforces the same programming paradigm as PETSc.

Michael Lysaght had a look at PETSc/SLEPc in more detail and concluded that they were a better option than PARPACK for the following reasons:

  1. it uses a data-structure neutral implementation - problems can be solved with matrices stored in parallel and serial, sparse and dense formats;
  2. it also has run-time flexibility, giving control over the solution process;
  3. it is usable from code written in C, C++, F77 and F90 and offers portability to a wide range of parallel platforms;
  4. the flexibility of PETSc/SLEPc in terms of eigenvalue solvers (there are several implemented);
  5. there is extensive documentation - users manual, example programs, online manual for subroutines;
  6. and there is also seamless integration with well-established packages such as ARPACK.

This led to the goals in WP3 and WP4 of a hybrid OpenMP/MPI and PARPACK approach being replaced by using PETSc/SLEPc (which could also be used for the parallelisation of the Hamiltonian construction in WP2.)

The SLEPc library is based on PETSc data structures and it employs the MPI standard for message-passing communication. The three basic abstract PETSc data objects are index sets, vectors and matrices. Built on top of this foundation are various classes of solver objects, which encapsulate virtually all information regarding the solution procedure for a particular class of problems, including various options such as convergence tolerances, etc. The Eigenvalue Problem Solver (EPS) is the main object provided by SLEPc. It is used to specify an eigenvalue problem, either in standard or generalized form, and provides uniform and efficient access to all of the eigensolvers included in the package. There are several methods available for solving eigenvalue problems within SLEPc including the Arnoldi/Lanczos method, the Jacobi-Davidson method and the Krylov-Schur method, the latter being the default method (and the one currently used) due to its very effective restarting technique.

Paul Roberts 2012-06-01