Když loni v srpnu, respektive září Nvidia vydala grafické karty GeForce RTX 2000, ukázalo se, že jejich 12nm GPU Turing mají velmi velkou plochu. Občas se nad tím objevují hlasy, že by čipy mohly být o dost menší a karty levnější, kdyby do nich Nvidia neintegrovala podporu pro realtime ray tracing (což však ignoruje to, že cena je na rozhodnutí výrobce a není pevně závislá na nákladech). Pokud vás zajímá, jaké má „RTX“ ve skutečnosti na velikost čipů a jejich výrobní cenu dopad, máme teď konečně podklady pro podobné debaty.
Turing s RTX a bez pod lupou
V minulosti jsme tu už párkrát odkazovali (třeba zde a zde) na práci německého fotografa s přezdívkou Fritzchens Fritz, který pořizuje parádní detailní makrosnímky odhalených čipů. Přesně ten teď obrousil a vyfotografoval dvě GPU z rodiny Turing. A to TU106, které pohání GeForce RTX 2070 a RTX 2060 na jedné straně a TU116 na druhé (to je v kartách GTX 1660 Ti a GTX 1660). Ta jsou totiž obě postavená na architektuře Turing a lze tak srovnat, kolik na čipu implementace s RTX a bez zabírá.
Toho se chopili uživatelé na Redditu, když na fotky jak říkají na Slovensku „naďabili“. Nemá pochopitelně smysl přímo porovnávat velikost čipů, protože do toho může promluvit odlišná výbava, paměťový řadič a různé další komponenty čipu, které s RTX nesouvisí. Byly by to jednoduše řečeno hrušky a jabka. Ovšem na fotografiích jsou dobře rozlišitelné přímo jednotlivé bloky výpočetních jednotek, a ty už se srovnávat dají.
Turingy se skládají z větších klastrů GPC (TU102 jich má například šest, TU106 tři), ty ovšem opět ještě mají oddělené bloky SM (či TPC), kterých je v jednom GPC šest. SM/TPC obsahuje 128 shaderů/stream procesorů. Každopádně, na úrovni této stavební jednotky je patrné zvětšení, které si technologie RTX vyžádala. Podle proměření na Redditu by plocha zabraná blokem SM měla být okolo 10,89 mm² u čipu TU106, který RTX umí, a jen asi 8,94 mm² u TU116, které je bez (nekontroloval jsem to, tak doufám, že to reddiťáci spočítali správně).
Ray tracing zvětšil shadery o 22 %
Rozdíl je to mrzké dva milimetry čtvereční, což nezní jako mnoho, ovšem když se to vezme relativně, jednotka samotná je tím o 22 % větší, tedy skoro o čtvrtinu (přičemž nejde jen o plochu výpočetních jednotek, jsou v tom i L1 cache). Dopad na velikost tedy není úplně malý, ale v čipu zase nejsou jenom bloky SM, ale i další sekce, takže i u TU102 se 4608 shadery by ty dva milimetry na SM daly jen asi 70,2 mm² navíc. Úspora by to tedy byla, ale GPU by stále bylo hodně velké (asi 684 místo 754 mm²).
V oněch 2 mm² (1,95 mm²) na 128 shaderů se schovávají RT jádra čipu, ale pozor – nejen ta. Současně jsou v tom obsaženy také akcelerátory pro výpočty neuronových sítí, tensor jádra. I ta jsou totiž ve stejném RTX „pytli“. Máme tu tedy dohromady spojený ray tracing a třeba DLSS. Na druhou stranu, ray tracing v_dnešní podobě nutně potřebuje denoising, který také běží na tensor jádrech, takže je toto spojení vlastně v pořádku. Je samozřejmě otázka, zda kvůli podpoře RTX nemusely být nějak posíleny/zvětšeny ještě nějaké obvody mimo samotné SM, ale to hlavní by snad mělo být lokalizováno v něm.
Odstranění RTX ušetřilo místo, ale zase vynutilo přidání speciálních jader pro FP16
Reálně je asi cena za podporu RTX o něco nižší než těch 1,95 mm² kvůli jedné další věci, byť v praxi to není úplně podstatné. Turing má totiž jednu zvláštnost. Ex post až při uvedení TU116 Nvidia prozradila, že výpočty FP16 (ty architektura umí s dvojnásobným výkonem proti FP32) nepočítá na standardních shaderech. Údajně jsou přesměrovávány do tensor jader a počítají je jejich ALU – a mohou běžet současně s FP32 (v praxi asi ale může být omezení co do příkonu kvůli TDP). To je docela závažné a pozoruhodné zjištění (docela by mě zajímalo, zda to má třeba nějaký dopad na latenci a schopnost míchat FP32 a FP16 v rámci jednoho shader programu).
Zajímavé je to také tím, že u TU116 je to úplně jinak, protože Turingy bez RTX tensor jádra ztratily. Nvidia tvrdí, že má čip místo toho plnohodnotné separátní jednotky ALU FP16, které naopak neexistují v Turingu s RTX. Pokud by se tyto FP16 jednotky odečetly, byl by rozdíl mezi RTX a ne-RTX tedy vyšší. Ale odečítat bychom je neměli, protože FP16 patří mezi výbavu architektury Turing. Nvidia ale zrecyklováním tensor jádra pro tuto roli dopad RTX zmenšila (pokud tedy ta FP16 jádra ve skutečnosti nejsou kompletní tensor jádra, která jen nejsou exponována pro software – ale to už by bylo na poli konspiračních technologií, takže bych tuto variantu nezvažoval).
Díky těmto fotografiím se nám tedy trošku povedlo kouknout pod pokličku Nvidie. Ve flamewarech o tom, jestli se Nvidia měla na ray tracing radši vykašlat (s čímž bych si dovolil nesouhlasit), tedy bude aspoň možné se opřít o nějaká čísla.