Přeskočit na obsah
Infrastruktura 3 min čtení

Triton 3.8.0 překládá jádra pro Rubin, který je zatím jen v náhledu dokumentace PTX

Vydání z 28. srpna přidalo do překladače Triton cíl „cuda:107“ pro architekturu, kterou NVIDIA popisuje zatím jen ve vývojářském náhledu dokumentace PTX. Z Tritonu i z toho náhledu se dá spočítat, kolik má Rubin tenzorové paměti: 576 sloupců proti 512 na Blackwellu.

Křemíkový čip grafické karty pod makroobjektivem
Čip NVIDIA TU102 z řady Turing pod makroobjektivem. Foto: FritzchensFritz, Flickr (CC0)

Triton je překladač, ve kterém se jádra pro grafické karty píšou v Pythonu místo v CUDA C. Sám o sobě žádný model nespustí; je to vrstva pod tím, co jádra potřebuje – balíček torch si ho na Linuxu instaluje jako závislost. Co Triton neumí přeložit, to na daném čipu nepoběží.

Verze 3.8.0 vyšla na GitHubu 28. srpna 2026 v 18:25 UTC, kola na PyPI byla nahraná o dvě hodiny dřív. Předchozí stabilní vydání 3.7.1 je z 18. června. V poznámkách stojí věta, kvůli které se to vydání vyplatí otevřít: „Added initial NVIDIA Rubin (SM107) support.“

Odkazuje na tři návrhy změn a hlavní z nich, číslo 10936, byl přijatý už 17. července: 27 souborů, 902 přidaných řádků. Do verze 3.7.1 se nedostal. Soubor s jeho testy, test/Conversion/tritongpu_to_llvm_rubin.mlir, na značce v3.7.1 neexistuje, na v3.8.0 ano. V mezijazyce se nový cíl píše jako ttg.target = "cuda:107".

Tenzorová paměť má o osminu víc sloupců

Pátá generace tenzorových jader má vlastní paměť přímo na čipu. Dokumentace PTX jí říká Tensor Memory a popisuje ji jako mřížku o 128 řádcích, kde každá buňka drží 32 bitů; na Blackwellu má 512 sloupců. Tabulka 58 v náhledu dokumentace uvádí u výlučné alokace strop 512 sloupců pro sm_100, sm_103 i sm_110, ale 576 pro sm_107. Triton má totéž číslo v hlavičce TargetFeatures.h: metoda getMaxTMEMColumns() vrátí 576, když se výpočetní schopnost rovná 107, a jinak 512.

Přepočet na bajty je náš a je jednoduchý: 576 sloupců krát 128 řádků krát čtyři bajty dá 294 912 B, kdežto 512 krát 128 krát čtyři jen 262 144 B. Rozdíl 32 kB sedí na to, co autor návrhu napsal do jeho popisu – „TMEM capacity per SM to 288KB“. K větší paměti přibyl v PTX i příznak .exclusive u instrukcí tcgen05.alloctcgen05.dealloc: výlučná alokace obvykle zabere celou tenzorovou paměť a žádná jiná vedle ní žít nesmí.

Sdílená paměť nad 228 kB se platí cache

Druhá stopa je v ovladači, kterým Triton jádra spouští. Do souboru driver.c přibyla kontrola, že přihlašovaná sdílená paměť nepřesáhne 228 kB – tolik jí má na multiprocesor Blackwell –, a za ní větev pro případ, že jádro chce víc. Tehdy spuštění dostane atribut CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE s hodnotou CU_SHARED_MEMORY_MODE_ALLOW_OVERSIZED_SHARED_MEMORY. Komentář nad tím řádkem říká, co to stojí: vyrovnávací paměť L1 klesne na 8 kB a plánování skupin bloků musí běžet v režimu SPREAD.

Ty konstanty si Triton definuje sám, s poznámkou „remove attribute enum def once latest cuda.h is in use“. Ve veřejné hlavičce CUDA tedy zatím nejsou. Kolik sdílené paměti na multiprocesor Rubin má, se z kódu vyčíst nedá: číslo 328 kB stojí jen v popisu návrhu, v samotné změně nikde.

Na FP8 stačí polovina instrukcí

U maticového násobení Triton vychází z pravidla, že jedna instrukce zpracuje v rozměru K 256 bitů – u osmibitových operandů tedy K rovné 32. Na sm_107 se to při bloku M = 128 a K aspoň 64 zvedne na 64, u formátu MXFP4 ze 64 na 128. V testech je to vidět na poznámce, že FP8 s K = 128 vydá na sm_107 dvě instrukce MMA; na Blackwellu by jich byly čtyři. Přibylo i opakované použití operandu B: když se pod sebou počítají dva bloky M, načte se B jednou a druhá instrukce ho dostane s příznakem posledního použití.

Autor návrhu k tomu napsal „2x MMA throughput increase for FP8 and FP4“. Přepínače v kódu se ale jmenují supports2xFp8Tcgen05MMAsupports4xFp4Tcgen05MMA, a proč je u FP4 čtyřka, když se rozměr K zdvojnásobí stejně jako u FP8, z kódu nevyplývá.

LLVM o sm_107 neví

Nejzajímavější místo celé změny je nenápadné. V souboru compiler.py stojí dvakrát totéž: je-li výpočetní schopnost 107, předá se dál stovka. LLVM tedy dostane cíl sm_100 a rubinovské instrukce se do výsledku vkládají jako doslovný PTX – v testu je vidět llvm.inline_asm s řetězcem tcgen05.alloc.exclusive. Důvod k té náhradě do kódu nikdo nenapsal.

V běžné dokumentaci NVIDIE sm_107 není

Že jde o věc před vydáním, se pozná porovnáním dvou stránek téhož výrobce. Běžná dokumentace PTX končí u verze ISA 9.3 a řetězec sm_107 v ní nestojí ani jednou, kdežto sm_103 čtyřicetkrát. Vývojářský náhled pro CUDA 13.4 má navíc ISA 9.4 a ta začíná právě podporou cíle sm_107, k tomu sm_107f a sm_107a. Jméno Rubin v té dokumentaci nepadne; to je z Tritonu. Vedle sm_107 v seznamu stojí i sm_110, o kterém Triton taky ví – v TargetFeatures.h mu předepisuje zarovnání operandů FP4 stejně jako sm_100 a sm_103.

K uživatelům PyTorche to zatím nevede

Balíček torch ve verzi 2.13.0 žádá triton==3.7.1, a to na Linuxu a pro Python starší než 3.15. Dokud se ten zámek neposune, dostane novou verzi jen ten, kdo si ji doinstaluje sám. Podpora nové architektury se takhle skládá po vrstvách a každá čeká na tu pod sebou: NCCL 2.31 přidal přenos, který NVIDIA podporuje jen na Blackwellu a až od CUDA 13.3, a vLLM přeskočil PyTorch 2.12, protože přechod na dvojku třináctku ho stál čtyři ústupky v testech.

Zdroje: poznámky k vydání a návrh změny 10936 v repozitáři Tritonu, hlavička TargetFeatures.h na značce v3.8.0, dokumentace PTX ve vydané i náhledové podobě a záznamy balíčků tritontorch na PyPI.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Infrastruktura

    Vazba NIXL pro Rust běžela ve dvou obrazech Dynama na náhradních funkcích

    NVIDIA vydala 29. srpna opravu Dynama 1.4.2. Ve dvou jeho kontejnerových obrazech ležela knihovna NIXL v adresáři, kam dynamický zavaděč nedohlédne; přitom je to ona,…

  2. Infrastruktura

    Anthropic otevřel Model Hardware Standard jen vybraným laboratořím

    Model Hardware Standard má sjednotit ovládání mikroskopů, pipetovacích robotů a robotických ramen přes společné příkazy a bezpečnostní limity. Anthropic 27. srpna…

  3. Infrastruktura

    Ray 2.58 zohledňuje KV cache při směrování dotazů mezi replikami

    Ray 2.58 dokončil směrování požadavků podle toho, kolik jejich prefixu už leží v KV cache jednotlivých replik. Router převádí text na tokeny jednou, sleduje bloky v…

  4. Infrastruktura

    Cisco přidá do AI infrastruktury rackové servery Supermicro

    Sestava spojí výpočetní systémy, síťové přepínače a kapalinové chlazení. Do prodeje má jít v říjnu, takže zatím stojí hlavně na slibu tří dodavatelů.