- 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
No edit summary |
|||
Line 1: | Line 1: | ||
==AOCL== | == AOCL == | ||
The [https://developer.amd.com/amd-aocl/ AMD Optimizing CPU Libraries (AOCL)] are available via | The [https://developer.amd.com/amd-aocl/ AMD Optimizing CPU Libraries (AOCL)] are available via | ||
Line 52: | Line 52: | ||
|} | |} | ||
== 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: | |||
<pre> | |||
# Link with Intel MKL dynamically | |||
icc/fort ... -mkl | |||
# Link with Intel MKL statically | |||
icc/fort ... -mkl -static-intel | |||
</pre> | |||
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: | |||
<pre> | |||
export MKL_DEBUG_CPU_TYPE=5 | |||
./a.out | |||
</pre> | |||
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 an AMD CPU. | |||
== 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 11:21, 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