Skip to content

Libraries

Cray Libraries

For libraries that are available as a modules prefixed by cray-, the compiler wrappers will automatically take care of adding the search paths for the include files and the libraries and provide the linker with the appropriate options. This means that, as a user, you don't need to provide such information to cray-libsci, cray-fftw, cray-hdf5, and cray-netcdf.

LibSci

module load cray-libsci man intro_libsci

Cray LibSci is a collection of numerical routines tuned for performance on Cray systems. Most users, for most codes, will find that they obtain better performance by using Cray LibSci routines in their applications instead of using public domain or user‐written versions.

The general components of Cray LibSci are:

  • BLAS: Basic Linear Algebra Subroutines
  • CBLAS: C interface to the legacy BLAS
  • BLACS: Basic Linear Algebra Communication Subprograms
  • LAPACK: Linear Algebra routines
  • ScaLAPACK: parallel Linear Algebra routines

Two libraries unique to Cray are:

  • IRT: Iterative Refinement Toolkit, a library of solvers and tools that provides solutions to linear systems using single‐precision factorizations while preserving accuracy through mixed‐precision iterative refinement.

  • CrayBLAS: a library of BLAS routines autotuned for Cray EX series systems through extensive optimization and runtime adaptation.

Multithreaded version

The OpenMP libraries will be linked in when the OpenMP compiler flag is set.

FFTW

module load cray-fftw man intro_fftw3

FFTW is a C subroutine library with Fortran interfaces for computing complex-to-complex, real-to-complex, complex-to-real, and real-to-real single and multidimensional discrete Fourier transforms (DFTs). The library also includes routines to compute discrete cosine and sine transforms (DCTs/DSTs) on even and odd data, respectively.

Multithreaded version

The OpenMP libraries will be linked in when the OpenMP compiler flag is set.

Official documentation

HDF5

module load cray-hdf5 | module load cray-hdf5-parallel

HDF5 is a data model, library, and file format for storing and managing data. It supports a variety of datatypes, and is designed for flexible and efficient I/O and for high volume and complex data. HDF5 is portable and is extensible, allowing applications to evolve in their use of HDF5. The HDF5 Technology suite includes tools and applications for managing, manipulating, viewing, and analyzing data in the HDF5 format.

Official documentation

NetCDF

module load cray-netcdf | module load cray-parallel-netcdf man netcdf

NetCDF (network Common Data Form) is a set of interfaces for array-oriented data access and a freely-distributed collection of data access libraries for C, Fortran, C++, Java, and other languages. The netCDF libraries support a machine-independent format for representing scientific data. Together, the interfaces, libraries, and format support the creation, access, and sharing of scientific data.

Official documentation

NetCDF + HDF5

module load cray-netcdf-hdf5parallel

A serial NetCDF built against parallel HDF5.

Libraries supported by the LUST

In addition to Cray LibSci and MKL, you will also find OpenBLAS and BLIS installed when you load a LUMI software stack.

OpenBLAS

module load OpenBLAS

OpenBLAS is an optimized BLAS library based on the old GotoBLAS2 library. OpenBLAS contains subroutines that have been tested and optimized for AMD Zen processors.

Official documentation

BLIS

module load BLIS

BLIS is another BLAS library, which is also based on GotoBLAS2. According to their own benchmarks on Zen 2 processors, BLIS can sometimes be faster than both Intel's MKL and OpenBLAS, so it is worth testing if you want to get the absolute best performance.

Official documentation