27. jūlijā Linux kodola vēstkopā ienāca vēstule par procesoru, kāda publiskā tirdzniecībā nav. Christian Ludloff, kurš uztur x86 uzziņu vietni sandpile.org un agrāk strādājis Google, AMD un TI, raksta, ka viņam lūgts dokumentēt x86 AMX un ACE uzvedību implementācijās ar 16 un 32 flīzēm. Intel Advanced Matrix Extensions kopš 2023. gada Sapphire Rapids serveru procesoriem piedāvā astoņas flīzes. Sešpadsmit vai trīsdesmit divu flīžu nav nevienā čipā, ko šodien var nopirkt.
Vēstules svarīgākā rinda nav par skaitļiem. Ludloff piebilst, ka implementācija ar 16 un 32 flīzēm jau kādu laiku darbojas lielā mērogā. Simulators lielā mērogā nedarbojas. Kaut kur stāv silīcijs.
Kas ir flīze
AMX pievieno x86 astoņus divdimensiju reģistrus, ko sauc par flīzēm. Katra flīze ir 16 rindas pa 64 baitiem, kopā 1 KB. Astoņas flīzes aizņem 8 KB procesora stāvokļa. Pašu reizināšanu dara atsevišķs bloks TMUL: tas paņem divas flīzes un sakrāj rezultātu trešajā. Programmatūra vispirms ar instrukciju LDTILECFG nodefinē, cik rindu un baitu katrā flīzē tiks izmantots, tad ar TILELOADD ielādē datus no atmiņas.
Astoņi kilobaiti uz pavedienu ir daudz. Tāpēc Linux šo stāvokli nepiešķir uzreiz. Kodols izmanto XFD mehānismu, kas noķer pirmo mēģinājumu aizskart flīzes. Procesam vēl pirms tam ar arch_prctl un karogu ARCH_REQ_XCOMP_PERM jāpieprasa atļauja. Tikai tad kodols atvēl buferi. Signāla kadrs kļūst attiecīgi lielāks. Šī kārtība nostabilizējās Linux 5.16, pēc tam, kad pirmās AMX ielāpu versijas mēģināja stāvokli piešķirt visiem procesiem. Ar 16 flīzēm buferis izaug līdz 16 KB, ar 32 flīzēm līdz 32 KB.
Ko dod vairāk flīžu
Matricu reizināšanā flīžu skaits nosaka, cik lielu rezultāta bloku var turēt procesorā vienlaikus. Ar astoņām flīzēm tipisks GEMM mikrokodols daļu atvēl uzkrājējiem, pārējās ievadam. Uzkrājēju bloks aug kvadrātiski, tāpēc no L2 ielasītie A un B dati tiek izmantoti vairāk reižu pirms izmešanas. Ieguvums nav reizināšanas ātrumā, tas ir atmiņas joslā uz vienu darbību.
Cik tieši, redzams jaunākajos skaitļos. Chips and Cheese 14. jūlija analīzē ACE izejas flīze ir 32 reiz 64 elementi. Ielādētie baiti uz vienu reizināšanas un saskaitīšanas darbību nokrīt no AMX 0,052 līdz 0,046. Tā ir aptuveni 12 % atlaide atmiņas pieprasījumam pie tās pašas skaitļošanas. Tas viss vēl pie astoņām flīzēm. Divkāršojot to skaitu, līkne turpina iet uz leju.
Kāpēc tas nonāk kodola sarakstā
16 vai 32 flīžu aparatūras mērķis ir iegūt papildu veiktspēju, darbinot programmatūru, kas izmanto papildu flīzes.
Tālāk Ludloff apraksta, kāda šī programmatūra ir. Tā galvenokārt griež skaitļošanas kodolus. Procesu pārslēgšanās ir reta. Flīzes netiek aizskartas pārtraukumu apstrādātājos, tostarp glabātuves un tīkla ceļos. Virtuālās mašīnas ir paredzētas, taču ne tādas, kur viesi mainās bieži.
Šis saraksts skan kā apraksts vienam konkrētam iekārtu parkam. Universāls patērētāju procesors nevar prasīt, lai operētājsistēma reti pārslēdz procesus. Datu centra rinda, kas dienu no dienas dzen vienu un to pašu treniņa vai inferences slodzi, to var atļauties. Kontekstu pārslēgšanas cena ir arī iemesls, kāpēc dokuments vispār ir vajadzīgs: ja stāvoklis ir 32 KB uz pavedienu, kodolam jāzina, kad to drīkst nesaglabāt.
ACE specifikācijā arī ir astoņas flīzes
Jūnijā x86 Ecosystem Advisory Group, kurā sēž gan Intel, gan AMD, publicēja AI Compute Extensions jeb ACE specifikāciju. ACE nomaina AMX iekšējo reizinājumu pret ārējo. Reģistru ir astoņi, katrs 512 bitus plats ar 16 rindām, kas ļauj glabāt 16 reiz 16 matricu ar 32 bitu uzkrāšanas tipu. Klāt nāk viens 1024 bitu mēroga reģistrs. Datu tipu sarakstā ir INT8, MXINT8, OCP FPM8, OCP MXFP8 un bfloat16. Solītais ieguvums ir līdz 16 reizēm lielāks matricu skaitļošanas blīvums pret līdzvērtīgu AVX10 reizināšanas un saskaitīšanas operāciju ar tikpat ievades vektoriem.
Dzelzs ar ACE tirgū gaidāma ap 2028. gadu. AMD ceļakartē tā parādās kopā ar Zen 7 arhitektūru. Atšķirībā no AMX, ko Intel turēja tikai serveru procesoros, ACE plānota visos kodolu variantos līdz pat piezīmjdatoru SoC.
Skaitlis, ap kuru viss griežas, tomēr paliek astoņi. Tik flīžu ir Sapphire Rapids un tik pašu ir svaigi publicētajā ACE tekstā. Ludloff apraksta divas un četras reizes vairāk, nekā paredz jaunākais publiskais standarts.
Ražotājs nav nosaukts
Phoronix atgādina, ka pērn tas pats cilvēks vēstkopā nodeva ziņu no x86 uzņēmuma, kas nav ne Intel, ne AMD. Vārds netika minēts arī toreiz. Šoreiz vēstulē nav ne ražotāja nosaukuma, ne CPUID bita numura, ne termiņa.
Dokumentācijas darbs kodola sarakstā parasti nozīmē vienu no divām lietām. Vai nu kāds gatavo ielāpus, kuriem vēlāk vajadzēs pamatojumu, vai arī kāds grib panākt, lai kodols nesabojā to, kas jau strādā. Ludloff vēstulē ir uzvedības apraksts. Koda iesnieguma tur nav.
Astoņas flīzes ir gan Sapphire Rapids, gan jaunajā ACE specifikācijā. Vēstkopā tagad ir skaitļi 16 un 32 ar piebildi, ka tie jau darbojas ražošanā.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.