in short the math kernel library from intel is checking the vendor_ID.if its AMD or other than intel,then it uses only SSE as extented functions.it skips the ask of the extentions the CPU has completly.
The workaround is quite simply based on a debug mode of the MKL.
About this one can specify on which kind CPU it runs, which overwrites the Vendor String query. The MKL is now set in this mode as if it ran on an Intel CPU “Type 5” with AVX2 support.
AMD Ryzen and Threadripper CPUs support AVX2. Nothing beats, but the whole thing just gets faster because more efficient AVX2 code is used. These instruction set extensions are standardized.
its not a problem with memory.if the mkl library uses only SSE extended instructions and not AVX2 with AMD CPUs, then the whole potential the CPU has is unused.
exactly.
Here another quote from computerbase today :
However, as long as the master function detects a non-Intel CPU, it almost always chooses the most basic (and slowest) function to use, regardless of what instruction sets the CPU claims to support. This has netted the system a nickname of “cripple AMD” routine since 2009. As of 2019, MKL, which remains the choice of many pre-compiled Mathematical applications on Windows (such as NumPy, SymPy, and MATLAB), still significantly underperforms on AMD CPUs with equivalent instruction sets.
Tbh I am just dabbling into the intricacies of math in programming and can’t really make a picture of how this all relates.
What I got is that the problem is deeper than just Blender doesn’t use MKL as I stated beforehand.
Thanks for bringing up the issue. Eager to hear more educated opinions on this.
And MKL-DNN uses MKL, which runs the slower code path for non-intel cpus.
That was sneaky / dirty of them, Blender is used for benchmarking chips all the time. Getting their Run on SSE on non-intel, but use AVX on intel code into blender is really not cool.