AVX512 neni nic jineho, nez rozsireni AVX2 o dalsi (a velmi uzitecne) features. V podstate vsechno, co AVX2 chybelo je nyni v AVX512 (masky, vic registru, volitelna sirka 128/256/512b, broadcast, spousta novych instrukci, plne permutace pres dva registry, zaokrouhlovani, ternarni operator, scatter atd.). To zlepsuje zivot lidem i kompilatorum a zjednodusuje vektorizaci. Fragmentace neni problem, protoze kdyz se vynechaji ruzne speciality jako Phi a AI, tak v podstate existuji jen dve zpetne kompatibilini urovne - SkylakeX a IceLake, ktere pokryvaji naprostou vetsinu instrukci. Ostatni je mozne ignorovat nebo pouzit po detekci pritomnosti (coz je dobre delat obecne). Navic se k nim brzy prida AMD se ZENem 4 (IceLake uroven).
To same s tim termalnim limitem - to v podstate plati jen pro 512-bit SkylakeX floating-point. Tam Intel trochu predbehl dobu (proces). Obecne, integer instrukce jedou bezvadne i v laptopovych cipech (TigerLake) a dokazou zrychlit algoritmus mnohonasobne (i oproti AVX2, kdyz mu chybi vhodne instrukce/features).
A co se tyce GPU, tak to je uplne jina vahova kategorie. GPU potrebuje obrovske mnozstvi dat a specialni kod. Navic je tam velmi vysoka latence. AVX(512) pracuje na stejnych datech jako zbytek CPU, bez latence. Kdyz mate v programu nejakou for smycku, ktera neco pocita (klidne par kb), tak se vetsinou da zvektorizovat tak, ze probehne 10-20x rychleji. Nevim jak by tohle slo prenest na GPU. A i kdyby to slo, tak jen ten prenos by trval mnohem dele, nez samotny vypocet na CPU. A tohle neni teorie, to je moje kazdodenni praxe.
Nejvíce přínosné komentáře
To same s tim termalnim limitem - to v podstate plati jen pro 512-bit SkylakeX floating-point. Tam Intel trochu predbehl dobu (proces). Obecne, integer instrukce jedou bezvadne i v laptopovych cipech (TigerLake) a dokazou zrychlit algoritmus mnohonasobne (i oproti AVX2, kdyz mu chybi vhodne instrukce/features).
A co se tyce GPU, tak to je uplne jina vahova kategorie. GPU potrebuje obrovske mnozstvi dat a specialni kod. Navic je tam velmi vysoka latence. AVX(512) pracuje na stejnych datech jako zbytek CPU, bez latence. Kdyz mate v programu nejakou for smycku, ktera neco pocita (klidne par kb), tak se vetsinou da zvektorizovat tak, ze probehne 10-20x rychleji. Nevim jak by tohle slo prenest na GPU. A i kdyby to slo, tak jen ten prenos by trval mnohem dele, nez samotny vypocet na CPU. A tohle neni teorie, to je moje kazdodenni praxe.