- 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): Difference between revisions

From HLRS Platforms
Jump to navigationJump to search
Line 1: Line 1:
== AOCL ==
== AOCL ==


The [https://developer.amd.com/amd-aocl/ AMD Optimizing CPU Libraries (AOCL)] are available for gcc and aocc with
The [https://developer.amd.com/amd-aocl/ AMD Optimizing CPU Libraries (AOCL)] are optimized to utilize AMD EPYC processors in an optimal way and are available for '''gcc''' and '''aocc''' with
<pre>module load aocl/2.1.0</pre>
<pre>module load aocl/2.1.0</pre>
They are optimized to utilize AMD EPYC processors in an optimal way.
{| class="wikitable"
{| class="wikitable"
|-
|-

Revision as of 13:54, 2 March 2020

AOCL

The AMD Optimizing CPU Libraries (AOCL) are optimized to utilize AMD EPYC processors in an optimal way and are available for gcc and aocc with

module load aocl/2.1.0
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>

To link to this library with default settings with the intel compiler, you can use the -mkl flag:

# Link with Intel MKL dynamically
icc/ifort ... -mkl

# Link with Intel MKL statically
icc/ifort ... -mkl -static-intel

For more settings and for other compilers (gcc, LLVM, etc.), there is an Intel MKL Link Line Advisor


Intel MKL seems to be using a 'Cripple AMD CPU' functionality that suppresses AVX/AVX2 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.

Further libraries

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

module avail