AMD Optimizing CPU Libraries (AOCL)

AOCL is a binary collection of numerical subroutines, selected, optimized, compiled, and provided by AMD for free, with a goal to provide certain user space applications with more computational power when executing those applications on AMD processors. The collection includes LAPACK (as libflame), BLAS (as BLIS), FFTW3, libm (as AMD Math Library), ScaLAPACK, AOCL-Sparse, and collection of random number generators (as AOCL-RNG). The header files needed for compiling your programming code against AOCL are also included in the installation.

Covered compilers and linking features

If you need to compile your project’s programming code against the available installation of AOCL libraries, you may employ any of the compiler sets provided (see Compilers). But bear in mind the organization of the linking process. Some of the libraries included in the AOCL installation (like libblis-mt.so and libfftw3_omp.so) are linked to libomp.so (that is the OpenMP library included in AMD Optimized Compiler Collection (AOCC) and LLVM Compiler Infrastructure). Therefore, it might be a good idea to employ either AMD Optimized Compiler Collection (AOCC) or LLVM Compiler Infrastructure when compiling and linking your programming code against AOCL. The latest installed versions of NVIDIA HPC SDK (former PGI Compilers) and Intel oneAPI ships with LLVM compilers, but those compilers are slightly modified by the vendor and may not be able to link successfully your programming code against AOCL. Always check their interoperability with AOCL and AOCC.

On the other side, some of the libraries included in AOCL (like libfftw3_mpi.so) depend on an external MPI library (that means AOCL does not bundle an MPI library). In that case, the external MPI library needs to match the version and compile model adopted by the vendor (AMD), which in turn might limit your MPI library selection because AMD compiled AOCL against Open MPI. Under such circumstances, always try to stick to the Open MPI versions available at the time of the AOCL release. Keep in mind that the process of compiling your code against AOCL by using Intel oneAPI MPI compiler wrappers may fail when linking your binary code to the static and dynamic libraries included in the AOCL installation. The latter is not a problem of the employed linker, but one of a problematic MPI interoperability, and in most cases it cannot be solved. But compiling and linking your code against AOCL by using Open MPI installation built by Intel oneAPI compielers, is (in most cases) possible.

Supported versions

To check which AOCL versions and build types are currently supported on Discoverer, execute on the login node:

module avail amd/aocl

Loading

To obtain access to the latest version of AOCL:

module load amd/aocl/3/latest

Important

Provided FFTW3 and ScaLAPACK libraries included in AOCL installation are built against OpenMPI. The latter should be compiled using AOCC. See the discussion above and refer to MPI.

Getting help

See Getting help