Odpovídáte na názor k článku Xeony Granite Rapids v AI výpočtech až třikrát rychlejší při použití instrukcí AMX. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
Aha. Na prvním místě je možné AMX používat na obou HT threadech jednoho jádra. Nedojde k problému, jenom jde dolů výkon. Vizte kapitolu 20.17.2 v linku.
https://kib.kiev.ua/x86docs/Intel/Intel-OptimGuide/355308-003.pdf
Na druhém místě mi nebylo jasné, jak se scheduler dozví, že thread použil AMX. Při vytvoření threadu se v registru XCR0 zakáže podpora AMX (a obdobně to funguje u AVX). Když thread poprvé použije AMX instrukci, dojde na trap (NMI) #NM (Device Not Available, 0x07, původně používaný když není k dispozici matematický koprocesor), kernel následně v nt!KiNpxNotAvailableFault zapíše do struktury KTHREAD flag HasUsedAVX512, AMX povolí, a navrátí řízení na příslušnou instrukci. Tím se zároveň zapne podpora AMX u instrukcí použitých při přepínání kontextu, ze skupiny XSAVE/XRSTOR. Konkrétně XSAVES má formu optimalizace, kde ukládá kompaktní formu. No a zbytek je černá magie scheduleru: thread s flagem HasUsedAVX512 se nechává co nejdéle běžet na konkrétním fyzickém jádru, na druhý HT thread se nevěší AMX ani latency-sensitive workload, atd. Vše psáno v kontextu Windows; na Linuxu to bude nejspíš dost podobné.
Takže ano, převážně jste měl pravdu. Díky za nasměrování na zajímavý topic.