Skip to content

Numerical Libraries

BLIS

https://github.com/flame/blis

BLIS is an award-winning portable software framework for instantiating high-performance BLAS-like dense linear algebra libraries. The framework was designed to isolate essential kernels of computation that, when optimized, immediately enable optimized implementations of most of its commonly used and computationally intensive operations. BLIS is written in ISO C99 and available under a new/modified/3-clause BSD license. While BLIS exports a new BLAS-like API, it also includes a BLAS compatibility layer which gives application developers access to BLIS implementations via traditional BLAS routine calls. An object-based API unique to BLIS is also available.

License

List available versions

module avail blis
module load blis
module show blis

FFTW

http://www.fftw.org/

FFTW (Fastest Fourier Transforms in the West) is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications.

Licensing Terms and Conditions Free software, released under the GNU General Public License (GPL, see FFTW license).

License

FFTW version 3

List available versions

module avail fftw/3.
module load fftw/3.

Linking

Prefix:

  • default (double precision) fftw3
  • single fftw3f

Link flags:

  • -lfftw3 -lm

  • threaded -lfftw3_threads -lfftw3 -lpthread -lm

  • openmp -fopenmp -lfftw3_omp -lfftw3 -lm
  • MPI -lfftw3_mpi -lfftw3 -lm

Example

gcc -I$FFTWROOT/include fftw3_example.c -L$FFTWROOT/lib -lfftw3 -lm

GSL

http://www.gnu.org/software/gsl/

The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

Licensing Terms and Conditions

Unlike the licenses of proprietary numerical libraries the license of GSL does not restrict scientific cooperation. It allows you to share your programs freely with others. License

Usage

List available versions

module avail gsl
module load gsl

LAPACK

Linear Algebra PACKage

LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.

The LAPACK library is available in several flavors:

MKL

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html

  • Linear Algebra [BLAS, LAPACK, ScaLAPACK]
  • Sparse [CSR,CSC,BSR, DIA,Skyline, NIST, SparseKit]
  • Fast Fourier Transform [serial, multi-thread, distributed]
  • Vector Math Library (VML)
  • Vector Statistical Library (VSL)

Licensing Terms and Conditions

Usage List available versions

module load oneAPI/2025.0.1
module avail mkl

Enviroment Variables

module load oneAPI/2025.0.1
module show mkl
$MKLROOT /apps/compilers/oneAPI/2025.0.1/mkl/2025.0
$INCLUDE /apps/compilers/oneAPI/2025.0.1/mkl/2025.0/include
$LD_LIBRARY_PATH /apps/compilers/oneAPI/2025.0.1/mkl/2025.0/lib

INTEL Math Kernel Library Link Line Advisor https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.m8mwyi

C Lapack Example:

gnu c/c++ 32 bit integers (standar)

## threaded version
gcc -fopenmp -m64 -I${MKLROOT}/include dgesv_example.c -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_gnu_thread.a -Wl,--end-group -ldl -lpthread -lm
## sequential version
gcc -m64 -I${MKLROOT}/include dgesv_example.c -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group -ldl -lpthread -lm
  • for 64-bit integers (greater than 2^31) check for “ILP64 mkl interface”

FORTRAN Lapack Example:

gnu gfortran 32 bit integers

## threaded version
gfortran  -fopenmp -m64 -I${MKLROOT}/include dgesv_example.f  -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_gf_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_gnu_thread.a -Wl,--end-group -ldl -lpthread -lm
## sequential version
gfortran  -m64 -I${MKLROOT}/include dgesv_example.f   -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_gf_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group -ldl -lpthread -lm
  • for 64-bit integers (greater than 2^31) check for “ILP64 mkl interface”

Threading

OMP_NUM_THREADS
MKL_NUM_THREADS

SCALAPACK Example

gnu c/c++ OpenMPI

## threaded version
mpicc  -m64 -I${MKLROOT}/include scalpack_example.c  ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_openmpi_lp64.a -lpthread -lm
## sequential version
mpicc  -fopenmp -m64 -I${MKLROOT}/include scalapack_example.c  ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_openmpi_lp64.a -lpthread -lm

OPENBLAS

https://github.com/OpenMathLib/OpenBLAS

OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.

OpenBLASILP is a version of OpenBLAS that uses 64-bit integers

Please read the documents on OpenBLAS wiki pages http://www.openmathlib.org/OpenBLAS/docs/.

Licensing Terms and Conditions License

Usage

List available versions

module avail openblas

openblas/0.3.28/gnu  openblasILP/0.3.28/gnu
module load openblas

Prefix

gnu

  • libopenblas_zen-r0.3.28.a
  • libopenblas_zenp-r0.3.28.a

Linking

CBLAS interface

  • GNU
module load gnu openblas/0.3.28/gnu
gcc openblas_example.c -I$BLASROOT/include/ -L$BLASROOT/lib -lopenblas_zenp-r0.3.28 -lpthread

PETSC

https://petsc.org/release/

PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.

Usage

List available versions

module avail petsc
module load petsc
module show petsc

SCALAPACK

Scalable Linear Algebra PACKage

ScaLAPACK is a library of high-performance linear algebra routines for parallel distributed memory machines. ScaLAPACK solves dense and banded linear systems, least squares problems, eigenvalue problems, and singular value problems. The key ideas incorporated into ScaLAPACK include the use of

  1. a block cyclic data distribution for dense matrices and a block data distribution for banded matrices, parametrizable at runtime;
  2. block-partitioned algorithms to ensure high levels of data reuse;

  3. well-designed low-level modular components that simplify the task of parallelizing the high level routines by making their source code the same as in the sequential case.

The LAPACK library is available in several flavors:

Netlib

Licensing Terms and Conditions

http://www.netlib.org/scalapack/

ScaLAPACK is a freely-available software package. It is available from netlib via anonymous ftp and the World Wide Web at http://www.netlib.org/scalapack . Thus, it can be included in commercial software packages (and has been). We only ask that proper credit be given to the authors.

The license used for the software is the modified BSD license

License

Usage

List available versions

module avail scalapack
module load scalapack
-L$SCALAPACKROOT/lib -lscalapack

NOTE Scalapack is also available via MKL library

VORO++

http://math.lbl.gov/voro++/

Voro++ is a software library for carrying out three-dimensional computations of the Voronoi tessellation. A distinguishing feature of the Voro++ library is that it carries out cell-based calculations, computing the Voronoi cell for each particle individually. It is particularly well-suited for applications that rely on cell-based statistics, where features of Voronoi cells (eg. volume, centroid, number of faces) can be used to analyze a system of particles.

Usage

List available versions

module avail voro++
module load voro++