Myslíš třeba Linuse? Já si tedy nepamatuji, jestli se k tomu pak někdy v poslední době znovu vyjádřil. Bylo by to možná zajímavé.
https://www.root.cz/zpravicky/linus-torvalds-doufa-ze-avx-512-zemre-bolestivou-smrti/
Ano, myslím třeba i Linuse. Podle mě moc nemá důvod se k tomu nějak vyjadřovat, spíš přihodil argument všem těm hejtrům, protože když to říkal Linus...
Já osobně v X86 nevidím velkou budoucnost, ta ISA je prohnilá, ale AVX-512 je zatím nejlepší SIMD ISA, co existuje, takže ARM i RISC-V se budou muset hodně snažit, no ale oba jdou cestou "variable vector width", takže reálnou konkurenci mít AVX-512 asi nikdy nebude (protože VVW má mnohem omezenější použití).
to se tusim tykalo implementace Intelu ve stylu 10 cpu - 10 ruzne vyrabovanych podpor instrukci 512 odstupnovanych podle ceny. To se nedivim, ze rval - to se musi skvele programovat, kdyz musis testovat padesat podmnozin instrukci, misto testu je/neni podpora AVX512 ( poprip jen par zakladnich podmnozin)
Tak to ale nikdy nebylo - v podstatě byl Skylake-X a Icelake. Skylake-X podporoval základní AVX-512 instrukce a Icelake to rozšířil o další hodně užitečné instrukce. Pak přišel Zen 4 a Zen 5, které jsou právě na úrovni Icelake.
Jen pokud někdo potřebuje hodně specifické věci jako třeba BF16 nebo FP16, tak se vyplatí vybočit z těchto dvou úrovní, jenže to už potřebuje specifický use-case (třeba podpora pro BF16 operace je skoro vždycky pro vektorové operace nad BF16 daty).
U AVX-512 je fakt potřeba se podívat na podporu rozšíření v reálných CPU a ne jen počítat CPUID bity, protože celá AVX-512 ISA je hodně rozkouskovaná, ale v reálu stačí opravdu ty 2 úrovně (neviděl jsem nikdy, že by někdo dělal implementaci pro kombinace rozšíření, které v reálu neexistujou).
Ale ono to tak bylo.... Co CPU to nový instrukční sady.. A Intel od toho dal ruce a s prominutím řekl "poserte se".
Problém byl ještě v tom, že vydávaly novější CPU, nebo refreshe a hele... nová další instrukce sada po řadach...
Taky bych řval jako tigr... Další věcí je, že AVX-512 mi ještě nikdo nevysvětlil proč ho vlastně musím mít... Na co? Proč bych ho měl tak vehementně chtít a sednout si z toho na zadek? REVOLU v čem? Odtržení vývojové větve?
No, ono to "v podstatě" znamená celkem 6 variant. Možná se to týká "okrajových" případů, leč podpora na straně SW pro vývojáře a OS bude o to náročnější. Možná ne tolik náročná, jako speciálně u toho Intelu zbytečná. To díky tomu, že při využití AVX-512 instrukcí se procesory Intelu natolik rozpálí, že musí zpomalit. A to až tak, že výsledný přínos je prakticky bezvýznamný a pro ostatní vlákna brzdící...
To u AMD implementace neplatí. Ta je naopak přínosná.
Pro 6 variant AVX-512 ale nikdo neoptimalizuje - rozhodující jsou ty 2, o kterých jsem psal. Dnes i teb baseline AVX-512 (ta první varianta) v podstatě znamená psát AVX-512 pro ty první Xeony, protože nikde jinde to tehdy nebylo, ale do toho se nikomu už moc nechce (není tam VBMI/VBMI2, takže nepoužitelné pro pokročilý data processing a kompresi). Takže realita je taková, že Icelake a Zen 4 dnes de fakto definují použitelné rozšíření AVX-512 (bez BF16, to má jen Zen) a pro to se taky optimalizuje. No a pokud člověk potřebuje něco super speciálního, třeba ty BF16 instrukce, tak tam se to řeší zvlášť. Ostatní věci mají tak okrajové použití, že o tom ani nemá cenu mluvit (např. existuje tak 10 lidí na světě, co k něčemu dokáže využít VP2INTERSECT).
Intel opravdu downclockoval při použití AVX-512, ale to bylo jen pár prvních generací (hlavně ten Skylake-X a potom pár dalších mikroarchitektur), dnešní CPU tento problém ale nemají.
AVX-512 v podání Intelu je past vedle pasti. Intel obchodně segmentuje Xeony tím způsobem, že do nižších řad davá jednu FMA jednotku a vyšší řady pak mají dvě FMA jednotky.
Reálně mají Xeony s jednou FMA jednotkou v AVX-512 úplně stejný hrubý výkon jako ve standardním AVX, protože FMA jednotka je společná pro AVX i AVX-512 instrukce a umí zpracovat buď dvě 256-bitové AVX instrukce paralelně, nebo jednu 512-bitovou AVX-512 instrukci. Ano, AVX-512 má nějaké speciální instrukce navíc, takže pokud to software dokáže využít, nějaký přínos je možný, nicméně hrubý výpočetní výkon je na CPU s jednou FMA jednotkou stejný pro AVX i AVX-512.
Tato politika rozšíření AVX-512 taky moc nepomohla, protože si uživatelé v dobré víře koupili CPU s jednou AVX-512 FMA jednotkou a pak zjistili, že jim to reálně vlastně nic nepřináší.
Jeden obrázek za 1000 slov
https://diit.cz/sites/default/files/avx-512_support_wikipedia.png
Zdroj
https://en.wikipedia.org/wiki/AVX-512
Takové typecké a hlavně reálné použití je detekce postavy.
Běží na FP16 a FPS se zvednou 3×.
https://www.phoronix.com/review/amd-strix-halo-avx512/3
29. 5. 2025, 08:57 editováno autorem komentáře
A toto je to, o čem mluvím.
Lidi se podívají na ten obrázek, a říkají si "hrůza", a přitom první 2 řádky jsou Xeon Phi akcelerátory (takže ty můžeš vymazat) a pro Cannon/Cascade/Copper Lake nikdo reálně moc neoptimalizuje.
Takže co nám zbylo? Skylake-X a Icelake/Zen4/Zen5, a o tom jsem už mluvil, že jo...
Jenže programovat pro AVX-512 dnes hlavně znamená používat ty další rozšíření. Nejdůležitější pro mě je VBMI/VBMI2 (tady se dělá magie). U FMA je sice super mít 2 FMA jednotky, ale využít obě + ten zbytek FPU jednotek (FADD) to neumí hned tak každý.
AVX-512 prostě není o FMA (stačí se podívat na simdjson a další projekty co extenzivně využívají AVX-512).
(nevím proč ta odpověď se zobrazuje tady...)
29. 5. 2025, 07:41 editováno autorem komentáře
Utilizovat všechny FMA jednotky na 100% je velmi snadné, stačí pustit inferenci jakékoliv neuronky na CPU, což je v podstatě jenom násobení a sčítání a je to omezené jen hrubým výkonem fused multiply add, který CPU má. Tady nedávají Intel CPU s jednou FMA jednotkou žádný smysl, má to poloviční výkon. Nějaké menší modely se běžně provozují v datacentrech na CPU, protože GPU jsou drahá a NPU se zatím nějak moc do serverových CPU neprosadilo.
A seš si jistý, že na to chceš používat 32-bit FMA místo třeba instrukce VDPBF16PS, kterou přidává AVX512_BF16 a díky které můžeš mít mnohem lepší výkon? A co memory bandwidth? Právě u interference je ten memory bandwidth celkem důležitý ne? Toto jde vidět u nového Zen 5 - sice má neuvěřitelný AVX-512 výkon, ale memory bandwidth hodně slabý.
Nechci se tady hádat, ale prostě AVX-512 nikdy nebylo striktně o FMA výkonu. Ta ISA je tak univerzální, že jde použít skoro na všechno, stačí jen trochu přemýšlet.