- 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 69: Line 69:
For other compilers (gcc, LLVM, etc.), there is an [https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel MKL Link Line Advisor]
For other compilers (gcc, LLVM, etc.), there is an [https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel MKL Link Line Advisor]


Intel MKL seems to be using a '[https://www.extremetech.com/computing/302650-how-to-bypass-matlab-cripple-amd-ryzen-threadripper-cpus 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:
 
Intel MKL seems to be using a '[https://www.extremetech.com/computing/302650-how-to-bypass-matlab-cripple-amd-ryzen-threadripper-cpus 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:
<pre>
<pre>
export MKL_DEBUG_CPU_TYPE=5
export MKL_DEBUG_CPU_TYPE=5

Revision as of 11:23, 5 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 numlib/intel/mkl/<version>

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

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

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

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 an AMD CPU.

Further libraries

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

module avail