2. septembrī GCC koda krātuvē nonāca pirmie AI Compute Extensions (ACEv1) ielāpi. Tas ir Intel un AMD kopīgi definēts x86 matricu reizināšanas paplašinājums, ko abi ražotāji plāno likt savos nākamajos procesoros. Kompilatora karodziņš sauksies -macev1. Pēc Phoronix apraksta tas līdzi ieslēdz arī AVX10.1, AVX/AVX2 un SSE/SSE4.
Stabilā GCC 17.1 versija gaidāma nākamā gada martā vai aprīlī. Procesora, kas šīs instrukcijas tiešām izpilda, tobrīd vēl nebūs. Pēc publiski zināmajiem plāniem pirmie ACE dzelži parādīsies ap 2028. gadu.
Kopīgs pēctecis Intel AMX paplašinājumam
ACE nāk no x86 Ecosystem Advisory Group, ko Intel un AMD nodibināja 2024. gada rudenī pēc gadu desmitiem ilgas atsevišķas instrukciju kopu attīstīšanas. Grupā vēlāk iestājās Broadcom, Dell, Google, HPE, HP, Lenovo, Meta, Microsoft, Oracle un Red Hat. Specifikāciju grupa publicēja 15. jūnijā, dokumenta versija ir 1.15.
Līdz šim matricu reizināšanai x86 bija Intel AMX, kas dzīvo tikai Xeon servera procesoros. ACE tiek rakstīts plašākam diapazonam, no serveriem līdz klēpjdatoriem. Ar AMX tas nav binārā līmenī savietojams, taču programmētājam redzamie jēdzieni ir līdzīgi, tāpēc operētājsistēmām un bibliotēkām pārkārtošanās būs vieglāka.
ACE paplašinājumi definē matricu reizināšanas primitīvus, kas AVX un skalārajam kodam pievieno jaunas iespējas: ACE reģistru stāvokli ar tile un block scale reģistriem, datu apstrādes operācijas, kuras patērē AVX reģistru ievadi un darbojas ar tile reģistru stāvokli, datu pārvietošanas operācijas starp ACE reģistru stāvokli un AVX reģistriem, kā arī sistēmas pārvaldības operācijas.
Citāts ir no ACEv1 specifikācijas, ko x86 Ecosystem Advisory Group publicējusi savā vietnē.
Astoņi tile reģistri, ievadi padod ZMM
ACEv1 pievieno astoņus arhitektūras tile reģistrus. Katrs ir 512 bitus plats un 16 rindas augsts, kas dod 16×16 matricu ar 32 bitu akumulatoriem. Klāt nāk viens 1024 bitu block scale reģistrs mikromērogošanas formātu koeficientiem. HWCooling analīzē norāda, ka fiziski šie reģistri visdrīzāk izmantos to pašu fizisko reģistru kopu, kur mīt AVX-512 un AVX10 ZMM reģistri.
Darba dalīšana izskatās šādi. ZMM reģistri padod ievadi, viens tāds reģistrs nes četras rindas pa 16 astoņu bitu vērtībām. Tile reģistri strādā kā akumulatori un rezultāta glabātuve. AVX10 instrukcijas sagatavo ievadi un pēc tam pārceļ rezultātu atpakaļ SIMD reģistros, kur ar to var darīt visu pārējo. Tieši šī cieša sasaiste ar AVX ir galvenā atšķirība no atsevišķa AI paātrinātāja bloka, kas dzīvo kaut kur blakus kodolam.
Kompilatora pusē tas nozīmēja mazāk darba, nekā varētu likties. Intel inženieri jūlijā iesūtītajos ielāpos ACE atbalstu daļēji būvēja uz jau esošā AMX-TILE koda un dažiem AVX-512 elementiem. Pēc diviem mēnešiem apspriežu GCC sarakstē kods ieguva Git koka vietu.
Vienpadsmit datu formāti vienā paplašinājumā
ACEv1 ir rakstīts modeļu izpildei ar kvantizētiem svariem, tāpēc formātu saraksts ir garš. Vācu izdevums heise skaita vienpadsmit atbalstītus datu tipus: INT8 un INT32, FP32, FP16 un BF16, E8M0, FP8 pēc OFP8 specifikācijas, kā arī mikromērogošanas varianti MX FP8, MX FP6, MX FP4 un MX INT8.
Vēl viena prasība specifikācijā ir tā, ka procesoram ar ACEv1 skaitļošanas vienībām obligāti jāatbalsta noteikta AVX10.2 instrukciju apakškopa. Ražotājs nevar paņemt tikai matricu daļu un pārējo izlaist.
Praktiski tas nozīmē, ka viena kvantizēta modeļa svaru kopa varēs strādāt gan uz Intel, gan uz AMD procesora bez atsevišķiem kodola ceļiem katram ražotājam. Šobrīd bibliotēkas, kas grib izspiest maksimumu no x86, raksta vienu variantu AMX Xeon procesoriem un citu ar AVX-512 vai AVX2 visam pārējam. ACE šo dalījumu noņem vismaz jauno procesoru paaudzē.
Kompilatora karodziņu kopa ir tikai pirmais slānis. Lai -macev1 būtu jēga ikdienas kodā, atbalsts vajadzīgs arī oneDNN, llama.cpp, PyTorch un līdzīgās bibliotēkās, kur matricu reizināšanas kodols tiek izvēlēts izpildes laikā pēc CPUID. Šis darbs vēl ir priekšā. Pagaidām nav dzelžu, uz kā tādu kodu pārbaudīt.
Zen 6 un Nova Lake to vēl neprot
Neviens tuvākais procesors ACE neatbalsta. AMD Zen 6 un Intel Nova Lake specifikācijās šis paplašinājums neparādās. AMD publiskajos slaidos par Zen 7 ir minēts Matrix Engine. HWCooling to saista tieši ar ACE. Zen 7 gaidāms 2028. gadā, iespējams, visos kodolu variantos līdz mobilajiem SoC. Intel savu ACE grafiku nav nosaucis.
Divu gadu starpība starp kompilatora kodu un dzelžiem ir normāla kārtība. Kamēr GCC un LLVM iemācās ģenerēt instrukcijas, bibliotēku autori paspēj tās ielikt savos kodola ceļos. Līdz procesora iznākšanai programmatūra jau ir gatava. Ar AVX-512 sanāca otrādi. Instrukcijas bija dzelžos agrāk nekā kompilatoros, tāpēc gadiem ilgi tās izmantoja tikai atsevišķas bibliotēkas ar roku rakstītiem asemblera ceļiem.
LLVM pusē ACEv1 iestrāde vēl ir atvērtā izmaiņu pieprasījumā. GCC 17 attīstības cikls turpinās līdz nākamā gada pavasarim, tāpēc pirms stabilās versijas ACE koda apjoms visdrīzāk vēl pieaugs.
Avoti
- Phoronix: GCC 17 Compiler Merges Initial Support For Intel/AMD AI Compute Extensions “ACE”
- Phoronix: Intel Posts Initial GCC Compiler Patches For AI Compute Extensions “ACE”
- x86 Ecosystem Advisory Group: AI Compute Extensions (ACE) Specification
- heise online: AMD and Intel specify AI instruction set “ACE” for x86 processor cores
- HWCooling: x86 ACE Instructions: AMD Zen 7 core’s AI acceleration detailed
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.