- 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 80: Line 80:
In tests with [https://software.intel.com/en-us/product-code-samples Intels MKL sample codes] setting this environment variable has lead to a 2-3x better performance on a Zen 2 AMD CPU.
In tests with [https://software.intel.com/en-us/product-code-samples Intels MKL sample codes] setting this environment variable has lead to a 2-3x better performance on a Zen 2 AMD CPU.


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


== Further libraries ==
== Further libraries ==
In order to get an up-to-date list, please refer to
In order to get an up-to-date list, please refer to
<pre>module avail</pre>
<pre>module avail</pre>

Revision as of 14:35, 28 February 2020

AOCL

The AMD Optimizing CPU Libraries (AOCL) are available via

module load numlib/aocl/2.0

They are optimized to utilize AMD EPYC processors in an optimal way.

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