- Infos im HLRS Wiki sind nicht rechtsverbindlich und ohne Gewähr -
- Information contained in the HLRS Wiki is not legally binding and HLRS is not responsible for any damages that might result from its use -

Libraries(Hawk)

From HLRS Platforms
Revision as of 13:33, 14 July 2020 by Hpcdkrij (talk | contribs) (→‎AOCL)
Jump to navigationJump to search

AOCL

The AMD Optimizing CPU Libraries (AOCL) are optimized to utilize AMD EPYC processors in an optimal way.

A module is available gcc and aocc with

module load aocl/2.2.0

Keep in mind this module only contains the proprietary non-MPI components like amd-libm.

The libraries utilizing MPI will be compiled separately with MPT and provided as their own modules at a later time.

Library Purpose Source License URL
amd-blis/amd-blis-mt BLIS is a portable software framework for instantiating high-performance

BLAS-like dense linear algebra libraries.

https://github.com/amd/blis 3-clause BSD https://developer.amd.com/amd-aocl/blas-library/
amd-fftw An AMD optimized FFTW that includes selective kernels and routines

optimized for the AMD EPYC™ processor family.

https://github.com/amd/amd-fftw GPLv2 https://developer.amd.com/amd-aocl/fftw/
amd-libflame libFLAME is a portable library for dense matrix computations,

providing much of the functionality present in LAPACK.

https://github.com/amd/libflame 3-clause BSD http://developer.amd.com/amd-cpu-libraries/blas-library/#libflame
amd-libm amd-libm implements optimized trigonometric, logarithmic/exponential, power, etc.
functions that should perform better than the system libm.
Provides vector intrinsics of these as well (currently for __m128 __m128d types).
proprietary AMD LibM EULA http://developer.amd.com/amd-cpu-libraries/amd-math-library-libm/
amd-rng AMD Random Number Generator Library is a pseudorandom number generator library.
It provides a comprehensive set of statistical distribution functions and various uniform
distribution generators (base generators) including Wichmann-Hill and Mersenne Twister.
proprietary AMD RNG EULA http://developer.amd.com/amd-cpu-libraries/rng-library/
amd-securerng The AMD Secure Random Number Generator (RNG) is a library that provides APIs to access
the cryptographically secure random numbers generated by AMD’s hardware-based
random number generator implementation.
proprietary AMD SecureRNG EULA http://developer.amd.com/amd-cpu-libraries/rng-library/#securerng

Intel MKL

Intel MKL is available with

module load mkl/<version>

For linking flags for different compilers, there is an Intel MKL Link Line Advisor

Static linking and 32-bit integer interface are recommended if applicable.

For distributed MKL functionality (ScaLAPACK, etc.), select SGIMPT for the MPI library.


Intel MKL seems to be using a 'Cripple AMD CPU' functionality that suppresses AVX/AVX2/FMA code paths for AMD CPUs even though these are capable.

This behavior can be bypassed with an undocumented environment variable set during runtime:

export MKL_DEBUG_CPU_TYPE=5
./a.out

In tests with Intels MKL sample codes setting this environment variable has lead to a 2-3x better performance on a Zen 2 AMD CPU.

This environment variable is currently set as default for all users.

Attention: It seems that with mkl/19.1.1 this bypass has been removed. Please keep using mkl/19.1.0 for now for better performance.

Further libraries

In order to get an up-to-date list, please refer to

module avail