4 ms·
Most high performance software on super computers uses the Intel C and Fortran compilers, and much engineering and scientific software on workstations uses the
by jarvist 6y ago
Most high performance software on super computers uses the Intel C and Fortran compilers, and much engineering and scientific software on workstations uses the Intel Maths Kernel Library (MKL) for high performance linear algebra.
Now that AMD EPYC processors are powering a lot of next generation super-computer clusters, we're going to have to figure out some workarounds!
- ip26 6y agoI think this: https://developer.amd.com/amd-aocl/amd-math-library-libm/ https://developer.amd.com/amd-aocl/amd-math-library-libm/ is supposed to be the alternative to MKL for those applications.
- jarvist 6y agoThank you! I wasn't aware of this. But this is only a replacement for libm (i.e. basic trig, exp function), not the matrix-orientated BLAS, LAPACK and SCALAPACK routines that scientific codes spend >90% of their time.
- ip26 6y agoI'm not personally familiar with those, but seems like BLAS, SCALAPACK, & others are also available: https://developer.amd.com/amd-aocl/ https://developer.amd.com/amd-aocl/
- dr_zoidberg 6y agoNo need to develop and alternative when you can trick MKL into not crippling AMD: https://www.pugetsystems.com/labs/hpc/How-To-Use-MKL-with-AMD-Ryzen-and-Threadripper-CPU-s-Effectively-for-Python-Numpy-And-Other-Applications-1637/ https://www.pugetsystems.com/labs/hpc/How-To-Use-MKL-with-AM... Edit: the link I posted follows Agner's advice from the bottom of OPs link. However I think the extra information that it adds is that Zen2 Threadrippers outpaced then-current Intel's top contender. Once Zen3 and Intel's 11th Gen become available, repeating this benchmarks would be very valuable.
- freedomben 6y agoI took a reversing course some years ago and during the first part we learned how to identify the compiler using common patterns. Long story short, the Intel compiler did a phenomenally amazing job optimizing. This was 10 years ago so things may be different now.
- mhh__ 6y ago10 years ago LLVM was a baby and GCC was still on version 4. Intel probably have an advantage in areas where people pay them for it but GCC and LLVM are excellent compilers today. Anecdotally, (ignoring that I'm still not sure whether to trust it or not) Intel stopped developing IACA and suggested (but not recommended) LLVM's MCA - which does suggest a changing of the guard in some way.
- ramoz 6y agoI just compiled tensorflow on amd epyc and had no idea https://github.com/oneapi-src/oneDNN https://github.com/oneapi-src/oneDNN was actually MKL... now Im wondering if I even am getting all that power
- jcranmer 6y agoThe actual cpuid checking code is drilled from here: https://github.com/oneapi-src/oneDNN/blob/master/src/cpu/x64/cpu_isa_traits.hpp#L187 https://github.com/oneapi-src/oneDNN/blob/master/src/cpu/x64... to here: https://github.com/oneapi-src/oneDNN/blob/master/src/cpu/x64/xbyak/xbyak_util.h#L405 https://github.com/oneapi-src/oneDNN/blob/master/src/cpu/x64... It's using feature-flag checks, not family checks, so you shouldn't be affected if you're using oneDNN.
- ramoz 6y agothank you!