GCC 17 dostal první podporu ACE, společných maticových instrukcí Intelu a AMD
Do vývojové větve překladače GCC přistálo 2. září 2026 sedm změn, které zavádějí podporu ACE, nové sady maticových instrukcí pro x86. Specifikaci vydala poradní skupina, ve které sedí Intel i AMD, takže totéž rozšíření mají dostat procesory obou firem. Zatím pro ně ale žádný čip neexistuje.

Vývojová větev překladače GCC dostala 2. září 2026 sedm změn naráz. Zavádějí podporu rozšíření ACE, tedy AI Compute Extensions, což je nová sada maticových instrukcí pro architekturu x86. Autorem je Haochen Jiang z Intelu, u první z těch změn je jako spoluautor podepsaný Dipesh Sharma z AMD. Dohromady přidávají zhruba 2 160 řádků kódu a dokumentace.
Zvláštní na tom není objem, ale to, čí to rozšíření je. ACE nevydal Intel ani AMD, ale x86 Ecosystem Advisory Group, poradní skupina, kterou obě firmy založily na podzim 2024 kvůli tomu, aby se x86 nerozjíždělo do dvou nekompatibilních větví. ACE je první velká věc, kterou skupina vydala.
Sedm změn a jeden nový přepínač
Pořadí těch změn odpovídá tomu, jak se překladači obvykle nová instrukční sada přidává. Nejdřív základní rozpoznání rozšíření: příznak v CPUID, položka v seznamu vlastností procesoru, volba na příkazové řádce. Pak fiktivní registr tmm, blokový měřítkový registr BSR0, instrukce převzaté ze starší intelovské sady AMX a nakonec vlastní jádro věci, instrukce vnějšího součinu.
Nový přepínač se jmenuje -macev1 a podle dokumentace v souboru invoke.texi zapíná vedle ACEv1 také MMX, SSE až SSE4.2, AVX, AVX2 a AVX10.1. Kdo chce rozšíření zapnout jen pro jednu funkci, má na to atribut target("acev1").
__attribute__((target("acev1")))
void nasobeni_matic(void);
Dlaždice, vnější součin a osm registrů
Co ACE dělá, popisuje specifikace verze 1.16.2 vydaná 28. července 2026 a doprovodný zápis na blogu skupiny. Běžné vektorové instrukce počítají výsledek matice po jednorozměrných kusech. ACE místo toho zavádí operaci vnějšího součinu, která výsledek hromadí do dvourozměrné dlaždice, takže jedna instrukce vyrobí rovnou celý kus výstupní matice.
Dlaždicových registrů je osm a každý má šestnáct řádků po 512 bitech, tedy kilobajt na registr a osm kilobajtů celkem. K nim patří ještě blokový měřítkový registr. Ten je tam kvůli formátům s nízkou přesností: ACE umí INT8 a BF16, ale hlavně OCP FP8 a OCP MX, konkrétně MXFP8 a MXINT8. U nich sdílí skupina malých čísel jedno společné měřítko, což šetří paměť i propustnost.
Vstupy si ACE bere z vektorových registrů AVX10. Program tak může daty pohnout a přeformátovat je běžnými vektorovými instrukcemi těsně předtím, než je pošle do dlaždic. Osm dlaždic navíc dovolí držet naživu víc výstupních bloků naráz a méně sahat do paměti. Vlastní maticové instrukce dostaly v GCC jména podle konvence, jakou má VNNI pro skalární součin – vnější součin je jim podle popisu autora dost podobný.
Podobnou cestou jde AMD i mimo x86. Začátkem srpna zveřejnilo příručku k instrukční sadě CDNA5, kde u akcelerátorů Instinct nahradily maticové operace MFMA instrukce WMMA a přibyla jednotka na přesun dlaždic.
AMX zůstává, ale používat se má jedno, nebo druhé
Dlaždicový model zavedl Intel už v AMX, tedy Advanced Matrix Extensions. ACE se od něj neodstřihává: software ho uvidí jako novou „paletu“ v rámci téhož rámce, takže se dá znovu použít systémový programovací model i podpora stavu dlaždic v operačním systému. Část instrukcí ACE je z AMX rovnou převzatá – jedna dávka pochází z AMX-TILE, druhá z AMX-AVX512.
Zároveň ale v popisu jedné ze změn stojí, že se ACE a starší AMX nemají používat pohromadě. Autoři to v GCC vyřešili tak, že převzaté instrukce dostaly vlastní jména vestavěných funkcí s vloženým _ace_, zatímco vnitřní builtiny překladače zůstaly sdílené.
Zajímavý je i ten fiktivní registr tmm. U starého AMX řeší GCC vestavěné funkce vloženým assemblerem, protože dlaždice stejně nepřiděluje. U ACE se šlo jinou cestou a instrukce se popisují běžnými vzory, aby překladač viděl závislosti mezi nimi. Skutečné přidělování registrů to zatím není – autor v popisu píše, že chybí rozumný způsob, jak dlaždici odložit do paměti, a bez toho přidělování nemá smysl. Fiktivní registr je příprava na dobu, kdy se to vyřeší.
Čip zatím žádný
Procesor, který by ACE uměl, se zatím neprodává; Intel i AMD mluví o budoucích generacích. Ani vydání GCC s tou podporou hned tak nebude. Podle tabulky vydání vyšlo GCC 16.1 na konci dubna 2026 a 15.1 na konci dubna 2025, takže se sedmnáctka dá čekat na jaře 2027.
Druhý velký překladač je pozadu. Podpora ACE pro LLVM a Clang leží v žádosti o sloučení číslo 208408, otevřené od 9. července 2026, a samostatně se řeší typ pro blokový měřítkový registr. Ani jedna zatím sloučená není.
Skupina píše, že práce běží i na ladicích nástrojích a profilerech a že se počítá se zapojením do knihoven a rámců jako PyTorch a TensorFlow. To je zatím plán, ne hotová věc. Náš odhad: na tom, jestli se ACE ujme, rozhodne právě tahle vrstva, protože ručně psaný maticový kód píše málokdo.
Zdroje
- Historie repozitáře GCC – sedm změn s podporou ACEv1 z 2. září 2026
- AI Compute Extensions (ACE) Specification Version 1.16.2, x86 Ecosystem Advisory Group, 28. července 2026
- ACE: A Shared Path to Faster Matrix Math on x86, x86 Ecosystem Advisory Group, 27. dubna 2026
- GCC 17 Compiler Merges Initial Support For Intel/AMD AI Compute Extensions „ACE“, Phoronix, 2. září 2026
- GCC Releases – termíny dosavadních vydání