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:
LLVM (Recommended)¶
- OpenMP [-], 8-byte int [-]:
module load openblas/latest-llvm
- OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-llvm
- OpenMP [-], 8-byte int [+]:
module load openblas/latest-int64-llvm
- OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-int64-llvm
GCC (Recommended)¶
- OpenMP [-], 8-byte int [-]:
module load openblas/latest-gcc
- OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-gcc
- OpenMP [-], 8-byte int [+]:
module load openblas/latest-int64-gcc
- OpenMP [+], 8-byte int [-]:
module load openblas/latest-openmp-int64-gcc
The following builds are not supported any longer:
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