ELPA: The ELPA project has been started in 2008 with the aim to support the then up coming Petaflop HPC systems (hence the name Eigenvalue Solvers for Petaflop Applications).
Use the module name elpa to discover versions available and to load the application.
Multicore
The elpa library has been build with openmp and MPI capabilities. Further details on building your source to use these capacities can be found in the User Guide.
From testing using the example here we have followed this process on Beartooth:
[@blog1 src]$ cp test_real.c test_real.c.original
# Make the following updates:
# The elpa_init("version") needs to match: elpa_version.h: #define ELPA_API_VERSION 20211125
[@blog1 src]$ diff test_real.c test_real.c.original
56,57d55
< #define C_INT_MPI_TYPE int
<
83,85c81
< //MPI_Init(&argc, &argv);
< C_INT_MPI_TYPE provided_mpi_thread_level;
< MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided_mpi_thread_level);
---
> MPI_Init(&argc, &argv);
114c110
< if (elpa_init(20211125) != ELPA_OK) {
---
> if (elpa_init(20170403) != ELPA_OK) {
172,173c168,169
< elpa_deallocate(handle, 0);
< elpa_uninit(0);
---
> elpa_deallocate(handle);
> elpa_uninit();
[@blog1 test]$ ./autogen.sh
[@blog1 test]$ export CC=mpicc
[@blog1 test]$ export FC=mpifort
[@blog1 test]$ ./configure --with-openmp
[@blog1 test]$ make
[@blog1 test]$ salloc -A <your_project> -t 10:00 -N 2 -c 4
[@m001 test]$ export ELPA_DEFAULT_omp_threads=4
[@m001 test]$ export OMP_NUM_THREADS=4
[@m001 test]$ srun test_real
ELPA: Default for option 'omp_threads' is set to '4' due to environment variable ELPA_DEFAULT_omp_threads
ELPA: Default for option 'omp_threads' is set to '4' due to environment variable ELPA_DEFAULT_omp_threads
init done
setup done
solve..
solve done