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.