OpenBLAS

Supported versions

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.

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

The programing code is compiled separately by four compiler collections: Intel oneAPI, NVIDIA HPC SDK (former PGI Compilers), AMD Optimized Compiler Collection (AOCC), LLVM Compiler Infrastructure, and GNU Compiler Collection (GCC). You can choose the build that matches best your project and applications requirements.

Loading

Warning

Starting with version 0.3.28 we will provide only the most compatible and widely tested builds of OpenBLAS. Currently, those are the LLVM and GCC builds. Both can be successfully linked to a code compiled with any of Intel oneAPI, NVIDIA HPC SDK (former PGI Compilers), AMD Optimized Compiler Collection (AOCC), LLVM Compiler Infrastructure, and GNU Compiler Collection (GCC).

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

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