Ah, där kom den till sist: MKL, vilka minnen!
Ja det väldistribuerat och används nog i långt fler sammanhang än gemene användare anar.
https://en.wikipedia.org/wiki/Math_Kernel_Library
Intel MKL and other programs generated by the Intel C++ Compiler improve performance with a technique called function multi-versioning: a function is compiled or written for many of the x86 instruction set extensions, and at run-time a "master function" uses the CPUID instruction to select a version most appropriate for the current CPU. 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.[9] As of 2020, Intels MKL, which remains the numeric library installed by default along with many pre-compiled mathematical applications on Windows (such as NumPy, SymPy).[10][11] Although relying on the MKL, MATLAB implemented a workaround starting with Release 2020a which ensures full support for AVX2 by the MKL also for non Intel (AMD) CPUs[12]
In older versions, setting the undocumented environment variable MKL_DEBUG_CPU_TYPE=5 could be used to override the vendor string dependent codepath choice and activate supported instructions up to AVX2 on AMD processor based systems resulting in equal or even better performance when compared to Intel CPUs.[13][14][15] Since at least Update 1 2020, the environment variable does not work anymore.[10][11]
At least two routes for hooking the MKL's internal routines to remove the discrimination have been discovered. The hook can be added at compile-time by linking or at run-time by injection. Agner Fog discovered that MKL and ICC binaries also have a non-discriminating dispatcher. A mkl_serv_intel_cpu_true function was discovered in 2019. Fog's intel_dispatch_patch provides code that hooks both routes.[16] According to Daniël de Kok, just patching the latter function on MKL 2020 Update 1 improves performance for AMD Zen.[17]
Rent spel? Döm själva. -Själv tycker jag att det är rätt patetiskt att det varit så under c:a 11 års tid.
Sedan är väl frågan om man skall ta nedan artikel med en nypa salt då den är publicerad: Apr 1st, 2020 08:01 Men test skall ha visat att det numera inte sker någon särbehandling i MATLAB.
https://www.techpowerup.com/265290/amd-processors-no-longer-c...
Får känslan av att MKL har börjar bli rätt opålitligt på Zen i de absolut senaste versionerna, MKL_DEBUG_CPU_TYPE=5 verkar inte längre göra något på min 3900X i den senaste MKL-versionen jag testade.
Att kalla det patetiskt tycker jag är en rätt naiv inställning. MKL är "gratis", trots att det är helt uppenbart att Intel plöjer ned enorma FoU-resurser i biblioteket, ännu mer går in i OneAPI. Så är det då egentligen fel om man låter MKL vara "gratis" så länge man har en HW-dongel i form av Genuine-Intel CPU?
Varför ska man som AMD ägare på något sätt anse sig ha rätt att överhuvudtaget kunna köra MKL? AMD hade ett liknande bibliotek, men de har slutat utveckla det. Kör själv OpenBLAS på Zen, det är mer pålitligt än att köra MKL sett till prestanda men på Intel CPU har MKL i princip alltid bättre än något annat som man kan hitta.
Finns saker där Intel fått gjort en del uppoffringar som måste känts bittra att svälja. Är inte bara via MKL man kan enkelt använda AVX-512, skriver man egen kod som man effektivt vill kunna kompilera för SIMD ska man kika på Intel Implicit SPMD Program Compiler.
SPMD är integrerad i OneAPI, men går att använda som fristående projekt. Det, likt typ allt nu för tiden, bygger på LLVM. För att Intel skulle få någon rimlig acceptans för SPMD kände man sig tvingad att stoppa in stöd för NEON (SIMD i ARM64). Man kanske börjar ångra sig på den punkten, med det skulle nog inte bli någon PR-hit att plocka ut NEON-stödet nu då SPMD (till skillnad från MKL) är helt öppen källkod, så ett sådant tilltag skulle bli rätt synligt. Man nämner inte ens NEON-stöd på projektframsidan, men det finns och nämns i manualen.
Kisel är värdelöst utan bra stöd i programvara. Just nu är nog Intel rätt glada att de plöjt ned så mycket FoU i programvara, backa ett årtioende eller kanske lite mer var inte bra programvara något jag associerade med Intel men det är en punkt man verkligen lyft sig på. De har absolut problem på CPU-sidan, men de har rätt länge förberett sig på att rikligen allt mer går mot heterogena kretsar.
AMD var helt rätt ute med "Fusion is the Future", de var bara för tidigt ute, fanns noll infrastruktur på programvarusidan när de körde med den slogan. Nvidia öppnade dörren med CUDA, Intel pushar OneAPI (SIMD, GPGPU, NPU och FPGA), Apple är väl förberedda att utnyttja det man stoppat in i A/M-kretsarna (SIMD, GPGPU och NPU) och även AMD lär lägga manken till om de ska göra något konstruktivt med Xilinx-köpet.
Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer