Intel: "Ice Lake-SP med 32 kärnor slår AMD:s 64 kärnor"

Permalänk
Datavetare
Skrivet av krigelkorren:

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.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hedersmedlem
Skrivet av Yoshman:

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.

Om tredjepartsmjukvara är designad runt MKL, kan man som användare då bara välja ett annat bibliotek att använda istället? Om inte så ställer det ju till saken en hel del.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Inaktiv

Intresse flaggan noterar, i vad AVX-512, existerar inte ens i AMD vad jag vet, vem bryr sig, jag hoppas att intel läser här var monopol på era CPUer kom det massa dynga av CPUer med lite rent av o befintlig av ökning av hastighet av 14+ upp till nu är säkert 111 gången av + eran 14nm tillverkning, säkerheten total värdelöst ena efter andra av pinsamma av fel, bevisat flera gånger att rent av grova fel uppenbart ni kan inte göra rätt i den delen, när till o med Apple får på peka det, kommer ut med egen CPU visar vad ni har misslyckats brutalt intel, är bara erkänna att era glidare tider är borta. Alla sa om AMD att är "slut" dom har bevisat flera gånger att kommer tillbaka, även i grafikkort. Intel att er del komma tillbaka är obefintlig nu är inte många gånger kvar kunna krympa era CPUer, AMD ska gå över till 5 nm hos tsmc, som redan Apple gör, skulle inte tsmc bygga en fabrik i USA i 5 nm klar i 2024 "prata om" att intel ska få hjälp 4 år senare, tsmc komma ut med 3 nm sen på väg komma med 2 nm ungefär vid 2024, så klart är inte 100% säkert förstår poängen vad vill komma, inte ens att värt att ta upp längre om intel är bara "Waste Of Time" men är ju bra på bärbara datorer nej är inte ens det längre .. .

Har dyslexi i stavning .. .

Permalänk
Medlem
Skrivet av talonmas:

Kan nån köra en ELI5 på AVX-512? Tack

Ser inte att någon gjort det - om jag missade någon så ber jag om ursäkt.

AVX = Advanced Vector Extensions, dvs en instruktionsuppsättning som kan behandla flera värden på samma gång. SIMD kallas det, och AVX är efterföljaren till SSE som i sin tur är efterföljaren till MMX. AVX kom i Sandy Bridge och AVX2 kom i Haswell. Skillnaden mellan de olika är främst att vektorerna (listorna med tal att jobba med) är längre. SSE jobbade med vektorer som var 128 bitar långa, AVX ökade till 256 och nu ökar AVX-512 till - du gissade det - 512 bitar. Du kan alltså köra 8 st 64-bitars flyttal (vanlig dubbelprecision) åt gången, vilket är dubbelt så många som gamla AVX.

Varje version har också lagt till en del nya instruktioner som är praktiska i vissa specifika fall. Gör man inte det så spelar inte funktionen någon som helst roll, men vill man ha den funktionen så är den värd massor. Exakt vad de instruktionerna är är lite utanför en ELI5 - det räcker att konstatera att det är extremt nischade instruktioner.

Förutom att dubbla exekveringsbredden igen, har AVX-512 dubblat antalet adresserbara register. Registren tar alltså fyra gånger så mycket plats som innan. På det hela taget är det här en instruktionsuppsättning som tar massor av transistorer att göra bra. AMD har varit rätt försiktiga med att spendera de transistorerna. De stödjer inte AVX-512 än, och Zen 1 stödde de bara 256-bitars instruktionerna lite halvhjärtat (genom att slå ihop två 128-bitars enheter). De kommer nog dit, men än så länge verkar de föredra att ha massor av kärnor istället.

Visa signatur

5900X | 6700XT

Permalänk
Medlem

Snark och gäsp.

Visa signatur

Fractal Design Define R4 | ASUS Z170-A | i7 6700K @ 4.6 GHz med CM Hyper 212 Evo
ASUS GTX 1070 Ti Cerberus Advanced | Corsair LPX Black 3000 Mhz 16 GB CL 14
Samsung m2 970 Evo 1 TB | EVGA Supernova G2 750W | Huawei Mate 20 X

Permalänk
Medlem
Skrivet av inquam:

Mer vilseledande rubrik får man leta efter... känns ju som man är på Facebook och duckar click-bait.

Intel körde ett benchmark, du kan aldrig gissa vad som hände sedan...

Ja, ingressen säger mer, men en rubrik bör enkapsulera vad artikeln verkligen handlar om.

Ja fast överskrifter kan inte ge hela bilden på en mening.

Permalänk
Medlem
Skrivet av hypermode:

Ja fast överskrifter kan inte ge hela bilden på en mening.

Sant, men de kan förmedla vad det handlar om istället för att framstå som motsatsen.

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Medlem
Skrivet av mpat:

Ser inte att någon gjort det - om jag missade någon så ber jag om ursäkt.

AVX = Advanced Vector Extensions, dvs en instruktionsuppsättning som kan behandla flera värden på samma gång. SIMD kallas det, och AVX är efterföljaren till SSE som i sin tur är efterföljaren till MMX. AVX kom i Sandy Bridge och AVX2 kom i Haswell. Skillnaden mellan de olika är främst att vektorerna (listorna med tal att jobba med) är längre. SSE jobbade med vektorer som var 128 bitar långa, AVX ökade till 256 och nu ökar AVX-512 till - du gissade det - 512 bitar. Du kan alltså köra 8 st 64-bitars flyttal (vanlig dubbelprecision) åt gången, vilket är dubbelt så många som gamla AVX.

Varje version har också lagt till en del nya instruktioner som är praktiska i vissa specifika fall. Gör man inte det så spelar inte funktionen någon som helst roll, men vill man ha den funktionen så är den värd massor. Exakt vad de instruktionerna är är lite utanför en ELI5 - det räcker att konstatera att det är extremt nischade instruktioner.

Förutom att dubbla exekveringsbredden igen, har AVX-512 dubblat antalet adresserbara register. Registren tar alltså fyra gånger så mycket plats som innan. På det hela taget är det här en instruktionsuppsättning som tar massor av transistorer att göra bra. AMD har varit rätt försiktiga med att spendera de transistorerna. De stödjer inte AVX-512 än, och Zen 1 stödde de bara 256-bitars instruktionerna lite halvhjärtat (genom att slå ihop två 128-bitars enheter). De kommer nog dit, men än så länge verkar de föredra att ha massor av kärnor istället.

Tack! Fint med återblicken på MMX, ett ord jag kände igen iaf. Ett tag sen jag sysslade med instruktionsuppsättningar (typ utbildningen runt millennieskiftet).

Vet du några konkreta exempel där man har fördel av dessa nischade instruktioner?

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av Yoshman:

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.

Svårt att argumentera emot här, intel har väl aldrig påstått att detta skulle vara någon slags öppen plattform så ingen anledning att öppna för andra processorer. Sweclockers har ju vart tydliga i att notera att detta inte motsvarade någon slags generell sanning om annan prestanda, och tror att de flesta som läser här förstår mer eller mindre att prestanda i AVX512 =/= generell prestanda på produkten i helhet.

Visa signatur

Gamingrigg: MEG x570 ACE, 5950X, Ripjaws V 32GB 4000MT/S CL16, 6800XT Red Devil LE, HX1200i.
Laptop: XPS 9570 x GTX 1050 x 8300h + 16GB Vengeance 2666Mhz + Intel AX200
Valheim server: i7-8559 + Iris Plus 655 + 32GB + 256GB
Printers? Yes. Ender 5, Creality LD-002R, Velleman VM8600, Velleman K8200

Permalänk
Medlem
Skrivet av talonmas:

Tack! Fint med återblicken på MMX, ett ord jag kände igen iaf. Ett tag sen jag sysslade med instruktionsuppsättningar (typ utbildningen runt millennieskiftet).

Vet du några konkreta exempel där man har fördel av dessa nischade instruktioner?

För AVX-512? Det är mycket för maskininlärning - neurala nätverk och Galois-fält osv. Kan lite för lite om sånt för att kunna uttala mig, jag läser mest specen. Man har gjort en del generella grejer också, som att det finns instruktioner för att hjälpa till med att vektorisera loopar, samt möjlighet att använda alla gamla instruktioner på fler datatyper än bara flyttal i enkel och dubbel precision. Mycket av det känns som att det skall vara ett lättare sätt att köra mer kod som är svår att vektorisera än vad det är att köra den på en GPU.

Naturligtvis kan allt som använder AVX idag expanderas till att köra dubbelt så långa vektorer, så videokompression osv kan dra nytta av det. Problemet är att processorn klockar ner om man kör AVX-512, så vinsten blir inte så stor. Vet att x264-utvecklarna talade om 5-10% bättre prestanda.

Visa signatur

5900X | 6700XT

Permalänk

Enstaka program vinner mycket med AVX512 tex 603 bwaves i SPECfp2017 Men totalt hävdar sig EPYC väl.
http://spec.org/cpu2017/results/res2019q3/cpu2017-20190723-16...

Permalänk
Medlem

Goda nyheter! AMD kan behöva lite konkurrens.

Permalänk
Datavetare
Skrivet av Thomas:

Om tredjepartsmjukvara är designad runt MKL, kan man som användare då bara välja ett annat bibliotek att använda istället? Om inte så ställer det ju till saken en hel del.

Hade MKL överhuvudtaget inte fungerat på AMD hade det garanterat funnits standardiserade sätt att byta ut biblioteket. Problemet med MKL på AMD är enbart oförutsägbar prestanda, det som beräknas blir korrekt oavsett CPU. Tar man t.ex. Matlab verkar det inte finnas något standardmässigt sätt att byta bibliotek, rent tekniskt är det ändå möjligt att byta.

NumPy är ett exempel där det finns möjlighet att köra andra bibliotek, MKL är bara standard i vissa paketeringar som Anaconda.

I grunden är MKL lite som CUDA, egentligen snäppet "snällare" då CUDA kräver en Nvidia GPU för att överhuvudtaget fungera. Båda är bibliotek som inom vissa områden ger en signifikant prestandaboost. Är fortfarande möjligt att använda dessa program utan MKL eller CUDA stöd, men med sämre prestanda (allt oftare väsentligt sämre prestanda vid avsaknad av CUDA-stöd).

Skrivet av mpat:

Ser inte att någon gjort det - om jag missade någon så ber jag om ursäkt.

AVX = Advanced Vector Extensions, dvs en instruktionsuppsättning som kan behandla flera värden på samma gång. SIMD kallas det, och AVX är efterföljaren till SSE som i sin tur är efterföljaren till MMX. AVX kom i Sandy Bridge och AVX2 kom i Haswell. Skillnaden mellan de olika är främst att vektorerna (listorna med tal att jobba med) är längre. SSE jobbade med vektorer som var 128 bitar långa, AVX ökade till 256 och nu ökar AVX-512 till - du gissade det - 512 bitar. Du kan alltså köra 8 st 64-bitars flyttal (vanlig dubbelprecision) åt gången, vilket är dubbelt så många som gamla AVX.

Varje version har också lagt till en del nya instruktioner som är praktiska i vissa specifika fall. Gör man inte det så spelar inte funktionen någon som helst roll, men vill man ha den funktionen så är den värd massor. Exakt vad de instruktionerna är är lite utanför en ELI5 - det räcker att konstatera att det är extremt nischade instruktioner.

Förutom att dubbla exekveringsbredden igen, har AVX-512 dubblat antalet adresserbara register. Registren tar alltså fyra gånger så mycket plats som innan. På det hela taget är det här en instruktionsuppsättning som tar massor av transistorer att göra bra. AMD har varit rätt försiktiga med att spendera de transistorerna. De stödjer inte AVX-512 än, och Zen 1 stödde de bara 256-bitars instruktionerna lite halvhjärtat (genom att slå ihop två 128-bitars enheter). De kommer nog dit, men än så länge verkar de föredra att ha massor av kärnor istället.

Det du beskriver är helt korrekt, men det hade inte varit x86 om förklaringen vore så enkel totalt sett

AVX är inte bara en utökning av SIMD-bredden till 256 bitar, AVX speglar alla relevanta SSE instruktioner (d.v.s. AVX-128) då det finns fler fördelar med AVX än ökad bred. En nästan lika viktig fördel med AVX över SSE är att SSE kör traditionell CISC-strategi där ett register är indata medan ett annat agerar både in- och utdata. Instruktionerna är "förstörande" m.a.p. ena indata.

AVX är mer flexibelt, varje instruktion kan där ta upp till fyra argument varav ett kan vara en konstant och ett kan vara en minnesoperand.

SSE stödjer bara denna form

A = A op B

medan AVX stödjer denna form som i praktiken är mer effekt även utan ökad bitbredd

A = B op C

Självklart är det en rinse-and-repeat i AVX-512, det finns även 128- och 256-bitars replikering av alla AVX/AVX2-instruktioner i AVX-512. Något som adderar hundratals existerande instruktioner i lite effektivare skrud, för att kunna representera detta har jag för mig att minilängden på AVX-512 instruktioner är 5 bytes (4 första bytes är prefix för att komma till AVX-512 instruktioner)... Bagaget börjar bli rätt fullt...

AVX-512 tillför faktiskt något väldigt användbart även för 128- och 256-bitar: ett extra mask-register som dynamiskt kan aktivera/avaktivera en viss SIMD-lane. Detta gör att AVX-512 är klart mer effektiv på att hantera kod där olika SIMD-lanes temporärt väljer olika vägar.

D.v.s. saker som detta hanteras betydligt bättre i AVX-512 (använder syntax från Intels ISPC kompilator, en feature hos den är att man vid kompileringstillfället kan välja t.ex. AVX-512 instruktioner, fast maximalt 256-bitars register etc)

export void diverge(uniform float r[], uniform const float a[], uniform int count) { foreach (i = 0 ... count) { float v = a[i]; if (v < 4.2) { v *= v; // vissa SIMD-lanes går den här vägen... } else { v = sqrt(v); // ...andra SIMD-lanes går denna väg } r[i] = v; } }

Ovan ser man också att man idag inte längre behöver knacka assembler för att effektivt använda SIMD, ovan genererar väldigt effektiv kod med ISPC. Genom en omkompilering kan man stödja allt från SSE, till AVX-512 och även NEON på ARM64. Likt hur CUDA-fungerar kommer kroppen till "foreach" spridas ut över SIMD-lanes, man skriver i stort sätt "vanlig" skalär kod och låter kompilatorn lura ut hur det sen hanteras av SIMD.

Tog nästan 20 år, men idag lämnar man kvar rätt lågt hängande prestanda-frukt om man inte utnyttjar SIMD. SIMD och flera CPU-kärnor är ofta komplementära, SIMD kan ibland parallellisera saker som p.g.a. core-to-core synkroniseringskostnad gör omöjligt att sprida över kärnor trots att det finns parallellism i transformen. Omvänt kan inte SIMD hantera fall där de olika parallella spåren utför väsentligt olika transformer (därför t.ex. kompilering inte kan accelereras i något större utsträckning vare sig med SIMD eller GPGPU).

Att hela tiden definiera hundratals redan existerande instruktioner varje gång man ökar SIMD-bredden är en katastrof sett till effektiv användning av transistorer och än mer av instruktionskodningsutrymme. Lite svårt att backa för x86, framtiden verkar i stället vara den RISC-V tagit och även ARM hoppat på med SVE; en instruktionsuppsättning där SIMD-bredden kan variera utan att det ändrar instruktionsflödet. Enklare CPUer, t.ex. desktop CPUer är 256-bitar bredd är mer än nog, kommer köra vissa loopar fler gånger än CPU designad för HPC med kanske 1024-4096 bitars bredd.

Skrivet av Shiprat:

Svårt att argumentera emot här, intel har väl aldrig påstått att detta skulle vara någon slags öppen plattform så ingen anledning att öppna för andra processorer. Sweclockers har ju vart tydliga i att notera att detta inte motsvarade någon slags generell sanning om annan prestanda, och tror att de flesta som läser här förstår mer eller mindre att prestanda i AVX512 =/= generell prestanda på produkten i helhet.

Håller helt med om att prestanda i AVX-512 inte har likhetstecken med "generell prestanda". Exakt samma sak gäller ju en benchmark som CB, den testar ett väldigt specifikt fall (AVX-512 är långt mer generellt än CB) och därmed inte ett mått på generell prestanda. Båda är däremot exempel på något som har en viss påverkan på genomsnittlig prestanda då de representerar en delmängd av vad som kan anses vara "generell prestanda".

På det stora hela är prestanda för skalära heltalsberäkningar så mycket viktigare för normalpersonen att egentligen allt som jobbar med flyttal (skalära eller vektoriserade) eller vektoriserade heltal rätt mycket blir ett avrundningsfel. Som alltid kan det "generella" fallet vara väldigt icke-representativt för den enskilde, lever man sitt liv i Matlab, NumPy eller liknande blir helt plötsligt SIMD-prestanda normalfallet.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

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.

Ang. MKL_DEBUG_CPU_TYPE=5 citerar jag texten från mitt tidigare inlägg, saxat från Wikipedia:

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]

Som sagt, rätt eller fel, döm själva.

Kan ju redogöra ytterligare varför jag tycker det är fel.

Jag har min åsikt klar i fallet givet den information som dykt upp under ett decennie, om det nu är tänkt att vara så, ett gravt etiskt klavertramp, varför åtgärdar dem det i senare versioner alls?

Istället för att förklara eller fortsätta hävda hur det ligger till och att det är "by design" för att produkten är bundlad till Intels CPU:er.
-Svepskälet de kört med under drygt ett decennium nu, är ju att de inte testar på annan hårdvara än Intel's vilket, på sätt och vis kan vara en godtagbar förklaring då de trots allt utvecklar både plattform och mjukvara.

Men när de har parametrar vars funktion är att förpassa andra system, baserat på varumärkesskyddad identifikation, till en mindre optimal väg istället för att använda samma tekniker som Intel själva gör, då hävdar jag att det snarare handlar om fulspel, att man vill hämma konkurrens och att det är ett medvetet val av tilltag p.g.a. den ställning man har på marknaden eller den spridning ens programvara har.

Finns väl många exempel på där företag plöjt ner enorma resurser i produkter/programvara som de sedan givit bort "gratis" i utbyte mot insamling av t.ex. användardata, inflytande, mindshare för branschstandard eller hopp om att "casha in" på det vid ett senare tillfälle, utan att för den delen försämra prestanda för konkurrenter?

Det är väl ändå ett lite smålustigt sätt som Intel använt sig av för att (vad man, givet ovan information, starkt kan misstänka) särbehandla andra tillverkare på plattformen.

Istället för att fråga:

-Vad kan du? Vad har du för färdigheter?

Frågar man här:

-Vad heter du?

Scenariot blir lite som att dra parallellen om att någon med t.ex. utländskt namn skall få ta den långa vägen in på arbetsmarknaden medan någon med inhemskt namn får förtur, orelaterat till vilken kompetens personen besitter för arbetsuppgiften det handlar om.
Så om personen med utländskt namn byter till ett svenskt så blir den helt plötsligt legitim i det fallet?
-Det var bara namnbytet som saknades?
Det viktiga är att personen som hanterar uppgifterna heter "Kalle" och inte "Steve" för då går det långsammare?

Jag tycker det vittnar om en ganska dyster trend om allt på x86-plattformen vore uppdelat på det viset.

-Vill du att ditt Radeon-kort skall funka bra, se till att du parar det med en "AuthenticAMD", inte för att den skulle efterfråga någon specifik teknik eller funktion utan endast för att namnet skall vara "rätt".

-Vill du att ditt spel skall flyta på? Se då till att det står AMD på hela ditt system annars får du patcha vartenda program eller spel utifrån vilka andra konponenter du kan ha stoppat in i din dator!

Just sådana tilltag är ju vad som förstör en annars rätt homogen plattform som x86, det som varit plattformens absoluta styrka, som öppnat upp för att så många företag skall kunna anamma plattformen och konkurrera på den samt driva utvecklingen framåt, det är här jag ofta känner att Intel är väldigt anti-competitive i sammanhanget. De tar hellre till fulknep än konkurrerar med bättre produkter och det är tyvärr så att historien upprepat sig på det området.

Så hela konceptet tycker jag är barnsligt. Särskilt när det kommer från ett företag av Intel's dominans och storlek.
Skall det vara bundlat, gör det då, men försämra inte prestandan baserat på vilket namn som dyker upp.
Som med det den ursprungliga artikeln handlar om AVX512, enbart Intel kan erbjuda det i nuläget, helt fine enl. mig om de boastar med vad de kan åstadkomma när det är en exklusiv teknik då den är helt fråntagen allt vad konkurrens heter. Det är ganska lätt att genomskåda.

Om däremot någon annan får möjlighet att konkurrera med Intel om AVX512, skall den tekniken då "få" inte användas i vissa sammanhang p.g.a. att fel namn står på produkten? -Fastän stödet mycket riktigt finns implementerat och fungerar?

-Hej, köp vår plattform med stöd för alla de senaste teknikerna, men det är inte säkert att du får eller kan nyttja dem, just beroende på att det råkar stå vårt varumärke på någon av produkterna i ditt system...

Visa signatur

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 20.04 LTS
-Numera titulerad: "dator-hipster" då jag har en AMD GPU och dessutom kör Linux.

Permalänk
Datavetare
Skrivet av krigelkorren:

Ang. MKL_DEBUG_CPU_TYPE=5 citerar jag texten från mitt tidigare inlägg, saxat från Wikipedia:

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]

Som sagt, rätt eller fel, döm själva.

Kan ju redogöra ytterligare varför jag tycker det är fel.

Jag har min åsikt klar i fallet givet den information som dykt upp under ett decennie, om det nu är tänkt att vara så, ett gravt etiskt klavertramp, varför åtgärdar dem det i senare versioner alls?

Istället för att förklara eller fortsätta hävda hur det ligger till och att det är "by design" för att produkten är bundlad till Intels CPU:er.
-Svepskälet de kört med under drygt ett decennium nu, är ju att de inte testar på annan hårdvara än Intel's vilket, på sätt och vis kan vara en godtagbar förklaring då de trots allt utvecklar både plattform och mjukvara.

Men när de har parametrar vars funktion är att förpassa andra system, baserat på varumärkesskyddad identifikation, till en mindre optimal väg istället för att använda samma tekniker som Intel själva gör, då hävdar jag att det snarare handlar om fulspel, att man vill hämma konkurrens och att det är ett medvetet val av tilltag p.g.a. den ställning man har på marknaden eller den spridning ens programvara har.

Finns väl många exempel på där företag plöjt ner enorma resurser i produkter/programvara som de sedan givit bort "gratis" i utbyte mot insamling av t.ex. användardata, inflytande, mindshare för branschstandard eller hopp om att "casha in" på det vid ett senare tillfälle, utan att för den delen försämra prestanda för konkurrenter?

Det är väl ändå ett lite smålustigt sätt som Intel använt sig av för att (vad man, givet ovan information, starkt kan misstänka) särbehandla andra tillverkare på plattformen.

Istället för att fråga:

-Vad kan du? Vad har du för färdigheter?

Frågar man här:

-Vad heter du?

Scenariot blir lite som att dra parallellen om att någon med t.ex. utländskt namn skall få ta den långa vägen in på arbetsmarknaden medan någon med inhemskt namn får förtur, orelaterat till vilken kompetens personen besitter för arbetsuppgiften det handlar om.
Så om personen med utländskt namn byter till ett svenskt så blir den helt plötsligt legitim i det fallet?
-Det var bara namnbytet som saknades?
Det viktiga är att personen som hanterar uppgifterna heter "Kalle" och inte "Steve" för då går det långsammare?

Jag tycker det vittnar om en ganska dyster trend om allt på x86-plattformen vore uppdelat på det viset.

-Vill du att ditt Radeon-kort skall funka bra, se till att du parar det med en "AuthenticAMD", inte för att den skulle efterfråga någon specifik teknik eller funktion utan endast för att namnet skall vara "rätt".

-Vill du att ditt spel skall flyta på? Se då till att det står AMD på hela ditt system annars får du patcha vartenda program eller spel utifrån vilka andra konponenter du kan ha stoppat in i din dator!

Just sådana tilltag är ju vad som förstör en annars rätt homogen plattform som x86, det som varit plattformens absoluta styrka, som öppnat upp för att så många företag skall kunna anamma plattformen och konkurrera på den samt driva utvecklingen framåt, det är här jag ofta känner att Intel är väldigt anti-competitive i sammanhanget. De tar hellre till fulknep än konkurrerar med bättre produkter och det är tyvärr så att historien upprepat sig på det området.

Så hela konceptet tycker jag är barnsligt. Särskilt när det kommer från ett företag av Intel's dominans och storlek.
Skall det vara bundlat, gör det då, men försämra inte prestandan baserat på vilket namn som dyker upp.
Som med det den ursprungliga artikeln handlar om AVX512, enbart Intel kan erbjuda det i nuläget, helt fine enl. mig om de boastar med vad de kan åstadkomma när det är en exklusiv teknik då den är helt fråntagen allt vad konkurrens heter. Det är ganska lätt att genomskåda.

Om däremot någon annan får möjlighet att konkurrera med Intel om AVX512, skall den tekniken då "få" inte användas i vissa sammanhang p.g.a. att fel namn står på produkten? -Fastän stödet mycket riktigt finns implementerat och fungerar?

-Hej, köp vår plattform med stöd för alla de senaste teknikerna, men det är inte säkert att du får eller kan nyttja dem, just beroende på att det råkar stå vårt varumärke på någon av produkterna i ditt system...

OK, så det jag observerat på min 3900X (använder bl.a. NumPy via Ananaconda) har då den förklaring i att MKL_DEBUG_CPU_TYPE slutat fungera. Noterade att något ändrats när NUC:en med i7-8559U i vissa lägen får klart högre absolut prestanda, det är en 28 W 4C U-serie CPU mot en 12C desktop CPU.

Det handlar tyvärr bara om business, ur den aspekten är Intels beteende helt förväntat och därmed logisk. De brydde sig överhuvudtaget inte om AMD så länge de inte ens var en blip på radarn, är trots allt mer jobb att explicit filtrera bort specifika modeller.

Men x86 är ingen öppen standard, så finns faktiskt inga garantier alls att program utvecklade på AMD eller Intel överhuvudtaget fungerar på den andra. I praktiken har de väldigt bra kompatibilitet då primärt AMD implementerar de instruktioner Intel lägger till, men finns en del skillnader på OS- och VM-nivå där de faktiskt inte är kompatibla. De implementerar AMD64 resp. Intel64, vilket är väldigt nära 100 % kompatibla, men inte exakt 100 %.

Om det fortsätter att bli ett tight race lär vi bara få se fler fall likt MKL. Finns ingen direkt tekniskt hinder att implementera CUDA på andra GPUer eller ens på AVX-512, finns sådana implementationer, men vet inte om jag skulle våga använda det själv av juridiska skäl. Även där är det ut ett affärsmässigt perspektiv fullt logiskt att Nvidia hindrar detta, CUDA är de-facto standarden och det råkar vara Nvidia som äger rätten till det.

Det kan också göras likt OneAPI. Det är, till skillnad från t.ex. MKL och CUDA, en öppen specifikation men då den är så omfattande krävs ändå rejäla FoU-investeringar om man ska få något relevant stöd för kisel. Det är ändå vägen jag hoppas vi ser allt mer tar, i det läget handlar det bara om vilja och resurser för att få till stöd för andra kretsar.

Eller att man kontrollerar en dominerande teknik, Intel har själva lagt resurser på att säkerställa att Nvidias GPUer fungerar i OneAPI. Lär inte finnas någon annan orsak än att de inser att CUDA är allt för stort och dominerade idag, tröskeln för de som kör CUDA lär vara så nära noll som möjligt att gå till OneAPI om det ska ha någon chans. Kort och gott, allt blir logiskt bara man tittar på den affärsmässiga biten.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Det du beskriver är helt korrekt, men det hade inte varit x86 om förklaringen vore så enkel totalt sett

Jag vet allt detta, men jag höll mig medvetet kort för att försöka få det till en ELI5, eller ELI15 i alla fall. Börjat skriva mina ELI5-svar på telefonen just för att jag skall hålla dem korta - knackar jag på ett riktigt tangentbord så kan det bli...långt.

Men jag håller med om att maskningen i AVX-512 i riktigt smart. Den har inte heller de problem som resten av AVX-512 har, så den biten får AMD gärna implementera.

Visa signatur

5900X | 6700XT

Permalänk
Medlem

Uttrycket “stjärna i eget nummer” har nog aldrig vart mer passande.

Permalänk
Medlem

Regardless... fascinating! 🤔👍

Visa signatur

Hårdvara:
Varierande nog, = onödig information.

Gillar Linux, det kan vara värt vetande. 🙂