OpenBLAS

Supported versions

OpenBLAS is a library that provides BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra PACKage) functionality. It is widely used in scientific computing, numerical analysis, and machine learning applications. For more information, visit the official OpenBLAS website.

Warning

On Discoverer we use OpenBLAS as main productive LAPACK/BLAS provider for CPU-based applications.

To check which OpenBLAS versions are currently supported on Discoverer, execute on the login node:

module avail openblas

Variants

Each version of OpenBLAS, installed in the public software repository, is available in four variants. Each one corresponds to a different type of compilation. The difference between the variants is based on whether they linked to OpenMP or provide 8-byte (64-bit) integer interface to the API.

The variants are:

  • OpenMP [-], 8-byte int [-]
  • OpenMP [+], 8-byte int [-]
  • OpenMP [-], 8-byte int [+]
  • OpenMP [+], 8-byte int [+]

The first two variants are the most commonly used, as they provide support for both OpenMP and 32-bits (8-byte) integer interface. The last two variants are less commonly used, as they provide support for both OpenMP and 64-bits (16-byte) integer interface. The environment modules used to load the OpenBLAS builds are named accordingly (see below).

OpenBLAS Library naming convention

The suffix _64 is present in the names of both static and dynamic libraries for the OpenBLAS builds supported by us (currently those are the LLVM and GCC builds)

libopenblas_64.so
libopenblas_64.a

To make the library names work with third-party software, which build configuration or dynamic linking schema cannot use library names with _64 suffixes, we support the following symlinks:

libopenblas.a -> libopenblas_64.a
libopenblas.so -> libopenblas_64.so

Compiler affinity

Currently, we support OpenBLAS builds for the following compiler collections: Intel oneAPI, NVIDIA HPC SDK (former PGI Compilers), AMD Optimized Compiler Collection (AOCC), LLVM Compiler Infrastructure, and GNU Compiler Collection (GCC).

Warning

Very soon we will retire the Intel oneAPI, AOCC, and NVIDIA HPC SDK builds, since the LLVM and GCC builds show excellent performance and are recommended for all applications. That makes the support of the Intel oneAPI, AOCC and NVIDIA HPC SDK builds obsolete and those build would never appear on Discoverer+ (GPU) nodes. We may keep the obsolete installations on Discoverer (CPU) nodes for a while, but we will not support them with patches and updates.

Note

Unless you have some specific reasons to stick to the GCC build of OpenBLAS, we recommend the use of LLVM build.

Loading

To obtain access to the latest OpenBLAS build, load the environment module that provides the selected compiler affinity:

Intel oneAPI (Retired)

  • OpenMP [-], 8-byte int [-]:
module load openblas/latest-intel
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-intel
  • OpenMP [-], 8-byte int [+]:
module load openblas/latest-int64-intel
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-int64-intel

NVIDIA HPC SDK build (Retired)

  • OpenMP [-], 8-byte int [-]:
module load openblas/latest-nvidia
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-nvidia
  • OpenMP [-], 8-byte int [+]:
module load openblas/latest-int64-nvidia
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-int64-nvidia

AMD AOCC build (Retired)

  • OpenMP [-], 8-byte int [-]:
module load openblas/latest-aocc
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-aocc
  • OpenMP [-], 8-byte int [+]:
module load openblas/latest-int64-aocc
  • OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-int64-aocc

User-supported versions (bring your own OpenBLAS builds)

Users are welcome to bring, compile, and use their own OpenBLAS builds, but those builds will not be supported by the Discoverer HPC team.

Build recipes

The build recipe that we rely on to compile and evaluate the code of OpenBLAS, as well as all logs collected during the process of configuration, code compilation and testing, are available online:

https://gitlab.discoverer.bg/vkolev/recipes/-/blob/main/openblas/

Getting help

See Getting help