Včera během dne Nvidia podle předchozího aviza odhalila svoji nejnovější generaci GPU Ampere. Jde o její největší novinku od příchodu GPU Turing a Volta v letech 2018 a 2017. Jmenujeme je zde, protože Ampere je následníkem současně obou těchto dosud separátních architektonických větví. Ampere nese opět jméno po slavném fyziku (André-Marie Ampère); včera Nvidia odhalila tuto architekturu pro výpočetní akcelerátory, servery a superpočítače, ale pozor: už je potvrzeno, že se dostane také do herních grafických karet GeForce.
První Ampere: GPU Nvidia GA100
Včera odhalený první výpočetní akcelerátor architektury Ampere nese jméno „Nvidia A100 Tensor Core GPU“, v něm použitý čip se jmenuje GA100. Zdá se, že Nvidia opouští předchozí označení Tesla (podobně jako už nepoužívá označení Tegra pro Arm čipy), takže nástupcem předchozího akcelerátoru Nvidia Tesla V100 je pouze „Nvidia A100“.
Nejdříve se budeme zabývat samotným čipem GPU, tedy GA100. V grafice/akcelerátoru Nvidia A100 je totiž značně ořezaný, takže specifikace bude lepší od sebe oddělit. GA100 je je 7nm čip používající výrobní proces TSMC („N7“). Jde možná o vůbec největší 7nm křemík, má 826 mm² (ještě víc než 815mm² Volta) a obsahovat má 54,2 miliard tranzistorů – návrh má tedy dost vysokou hustotu tranzistorů.
8192 shaderů
Celé GPU má kulatých (v počítačovém smyslu) 8192 shaderů/stream procesorů či Cuda „jader“. Jsou členěné do osmi bloků GPC, z nichž každý je zase rozdělený na osm podbloků nazvaných TPC. V každém TPC jsou pak dva bloky SM, v nichž už jsou jednotlivé základní jednotky, zejména 64 shaderů (toto SM je něco jako CU v grafikách AMD). Celé GA100 má 128 SM, což dává oněch 8192 shaderů celkem.
V každém SM jsou vedle 64 shaderů také čtyři tensor jádra, což jsou speciální akcelerátory pro výpočet maticového násobení s velkým paralelismem – tuto operaci akcelerují pro výpočty neuronových sítí, při nichž je to hlavní náplň práce. Tato jádra generují vysoký výkon pro AI operace, ale jsou specializovaná (neumí všechny obecné operace jako shadery). Celkem má tedy GPU 512 těchto tensor jader.
6144bitová paměťová sběrnice
GPU GA100 používá paměti HBM2, respektive jejich evoluci HBM2E s vyššími efektivními takty. Zatímco Volta a Pascal GP100 (nebo Vega 20 od AMD) používaly čtyři čipy HBM2 a 4096bitovou sběrnici, GA100 má rovnou šest čipů a 6144bitovou sběrnici. Interně je to rozděleno na dvanáct 512bitových kanálů (dva kanály na jeden čip HBM2E).
Paměti jsou integrovány přímo v pouzdru čipu jako obvykle na křemíkovém interposeru a mají celkovou kapacitu 48 GB (jsou použité 8GB pouzdra). Použité jsou čipy s efektivní rychlostí 2,4 GHz, což by mělo teoreticky dávat propustnost 1,8 TB/s.
48 MB L2 cache s kompresí
Čip by také měl obsahovat celkem 48 MB L2 cache, jež je ovšem rozdělena do dvou bloků kvůli vyššímu výkonu (latenci a propustnosti). Tento blok cachuje přístupy do paměti z GPC, které jsou k němu připojené. Každý by tedy asi měl obsluhovat polovinu z 8 GPC. Propustnost by měla být 2,3× vyšší než u GV100, i když to je údaj pro ořezanou verzi čipu (viz další stránku), takže plná by mohla být rychlejší.
Zajímavé je, že Ampere podporuje kompresi paměťových dat, která s příhodnými dostatečně „řídkými“ daty dokáže zmenšit data až 4× (pochopitelně ne, pokud by nebyla komprimovatelná). To má za příhodných okolností zvyšovat efektivní propustnost cache a DRAM (prý až 4×) a také efektivně využitelný prostor v L2 cache (zde Nvidia uvádí 2× zlepšení).
PCI Express 4.0 ×16 a NVLink třetí generace
Jak se už dalo čekat, připojení do systému Nvidia povýšila na aktuální generaci PCI Express 4.0 ×16, která dává dvojnásobnou propustnost (31,5 GB/s) proti PCIe 3.0. Toto bude možné využít až s příští generací 10nm Xeonů Ice Lake, ale již nyní se 7nm procesory AMD Epyc 7002 a nebo s IBM Power9.
Pro koherentní komunikaci mezi GPU (a asi i s CPU, ovšem toto budou podporovat jenom procesory IBM Power) má čip rozhraní NVLink v třetí generaci. Ta dává propustnost 25 GB/s na jedno rozhraní, jichž má čip 12. Takže celkově dovoluje komunikovat se všemi protějšky až na 600 GB/s.
RT jádra?
Zda má čip GA100 také RT jádra, Nvidia nikde neuvádí. Na něm založený akcelerátor Nvidia A100 je ale neposkytuje, takže je možné, že je ani čip neobsahuje (kvůli úspoře plochy – Nvidia využila do mrtě maximální možnou velikost křemíku, takže takováto bagáž by byla na obtíž). Nvidia A100 také nemá grafické výstupy nebo enkodér videa NVENC – ale opět není jasné, zda přímo chybí na čipu, nebo jen v nyní oznámeném výpočetním modelu nejsou aktivované.
Článek pokračuje na další straně.
Galerie: Odhalení Nvidia A100, GPU Ampere GA100 a serverů Nvidie
První karta: Nvidia A100
A nyní již k první implementaci čipu GA100. Akcelerátor Nvidia A100 či „Nvidia A100 Tensor Core GPU“ nemá zdaleka plně aktivní konfiguraci, ale naopak poměrně dost ořezanou. Toto umožňuje, aby Nvidia měla na obřím 7nm čipu třeba i poměrně dost defektů a pořád ho mohla prodat. Navíc jak uvidíte, Nvidia má takto podchycené i případné defekty pamětí a pouzdření.
Oříznutí na 108 SM…
V „grafice“ Nvidia A100 má čip aktivních jen sedm z osmi GPC a dále pak může být v jednotlivých klastrech GPC také vypnutý jeden klastr TPC. Celkem má tak A100 jenom 108 SM a 6912 shaderů. Tensor jader je 432.
Vypnutím celého jednoho GPC se dostanete na 112 SM (7168 shaderů), takže pokud to dobře počítám, jsou vždy kromě toho vypnuté ještě další dva TPC, po jednom ve dvou ze sedmi zachovaných GPC. Pět GPC je tedy v Nvidia A100 vždy kompletních s 8 TPC, dva mají jen 7 TPC a osmý je deaktivovaný úplně. Toto umožňuje odchytit dost defektů. Zdá se, že Nvidia nepoužívá deaktivování jen jednoho jediného SM, granularita je na úrovni klastrů TPC.
… a o šestinu paměťového subsystému
A nejen výpočetní prostředky jsou „opižlané“ kvůli výtěžnosti (ve skutečnosti to ovšem není nějaké oklešťování – redundance je prostě součást strategie při výrobě takto velkých čipů). Nvidia také v akcelerátoru A100 ořezává paměti.
Ačkoliv má čip paměťovou sběrnici pro šest pouzder/svazků HBM2E, aktivních je jenom pět z nich. Sběrnice je tedy o šířce 5120 bitů. Je možné či pravděpodobné (a oficiální obrázky to tak ukazují), že šestý čip je na pouzdru přítomen, ale Nvidia ho následně deaktivuje. Toto umožňuje použít GPU, u nichž se při pouzdření jeden čip pokazil (nebo byl vadný z výroby).
To dává propustnost 1,5 TB/s, respektive 1,519 TB/s. Nvidia totiž dělá něco podobného jako u spotřebitelských grafik, kde nastavuje frekvenci o kousek výš než je standard – zde na 2,430 GHz efektivně. V oficiálních materiálech se uvádí, že propustnost je 1,6 TB/s, ale to k této frekvenci nesedí.
Spolu s jedním z čipů (svazků) HBM2 je zřejmě vypnutá i související paměťová infrastruktura v GPU, protože Nvidia zmenšila L2 cache na 40 MB (je tedy vypnutí jedna šestina, což sedí s oříznutím pamětí). Paměti stejně jako L1 a L2 cache GPU podporují ECC.
Výkon
Frekvence GPU samotného je 1410 MHz, což je takt boostu – nějaký základní takt uvedený není. Pro srovnání: 16nm Pascal GP100 jel na 1480 MHz, 12nm Volta na 1530 MHz. Na dané frekvenci GPU dosahuje teoretického výkonu 19,5 TFLOPS v běžných FP32 výpočtech, což je rekordní číslo. GPU má poloviční (což znamená plný) výkon ve dvojité přesnosti FP64: 9,7 TFLOPS. To bude podstatné pro vědecké výpočty.
Výkon v AI operacích ale udávají tensor jádra. Ty ve výpočtech s přesností FP16 nebo Bfloat16 dávají 312 TFLOPS. Tensor jádra podporují maticové násobení v FP16, INT8, ale také v INT4 a dokonce i binární (kdy je hodnota jednobitová, jen 0/1). Každé rozpůlení datové šířky zvyšuje teoretický výkon na dvojnásobek. Při výpočtech s 8bitovými hodnotami INT8 je teoretický výkon 624 TOPS, s hodnotami INT4 už 1248 TOPS. Pro pro binární výpočty uvádí Nvidia až 4992 TOPS.
400W spotřeba
Nicméně Nvidia také poněkud zvedla spotřebu tohoto čipu. Zatímco jak Pascal GP100, tak Volta GV100 měly oficiálně 300W TDP, akcelerátor Nvidia A100 povýšil TDP na 400 W. Podobné směřování k vyšším příkonům je patrné i v procesorech. Epycy 7002 jsou 240W a mají 280W HPC 300W verze, Intel plánuje 270–300W Xeony, nemluvě o 400W Xeonech řady AP.
Toto tedy není nějaká známka slabosti, ale asi odpověď na poptávku zákazníků, pro které je snazší zvýšit příkon na jeden socket/slot, než přidat další servery s méně žravými hardwarem.
Značné zvýšení AI výkonu už u ořezaného modelu
Ampere tedy díky vylepšené architektuře a 7nm procesu přinese značná navýšení výkonu. Pro Voltu se uváděl výkon tensor jader pro maticové operace v FP16 „jen“ 125 TFLOPS, proti čemuž dává Ampere (A100) 2,5× vyšší výkon. Ve vědeckých výpočtech (FP64) je to menší nárůst ze 7,8 na 9,7 TFLOPS (zlepšení o 24 %), dané tím, že v této oblasti není taková překotný vývoj speciálních akcelerátorů jako u tensor jader, jde víc o obecnou hrubou výpočetní sílu.
Připomeňme ale, že jde o výsledky silně osekané verze celého GPU. Časem s lepší výtěžností (a až se nastřádá zásoba bezchybných GPU) by mohla Nvidia uvést výkonnější model, kde by ze 128 SM bylo neaktivních jenom třeba 4 (dva TPC) a také by byla zapnuta celá 48GB paměť s plnou propustností. Tato verze by pak mohla být až o dalších 15–20 % výkonnější (podle toho, zda by se třeba také zvýšilo TDP a frekvence).
Provedení SXM4, ale asi i kartové
Hlavní verze akcelerátoru Nvidia A100 bude používat kompaktní mezaninové provedení. To se trošku jako CPU osazuje na desku a poté opatřuje vysokým chladičem (nebo asi volitelně vodním blokem), nicméně obsahuje i napájecí kaskádu. Toto provedení se označuje SXM4 (Volta používala SXM2).
Vedle toho ale si budou i verze v podobě karty do PCI Expressu. Nvidia už ukázala speciální provedení karty určené asi pro jiný model akcelerátoru, která se standardně zapojuje do PCI Expressu 4.0 ×16, na hřbetě má konektory NVLink pro propojení s dalšími kartami vedle. A v prostoru záslepky má osazený čip Mellanox, který vyvádí přímo z karty 200Gb/s konektivitu Infiniband. Nvidia Mellanox koupila a zde je vidět, proč.
Článek pokračuje na další straně.
Novinky v architektuře shaderů a tensor jader
Architektura shaderu by zdá se měla vycházet z Volty a Turingu. Je zachovaná přítomnost jak FP32, tak INT32 jednotky ALU v shaderu. Ty opět dokážá najednou zpracovávat jak celočíselnou, tak floating-point operaci. Nvidia uvádí, že souhrnná velikost L1 cache a sdílené paměti pro každý SM stoupla o 50 % na 192 KB.
Nově je podporována je operace asynchronního kopírování, která přenáší data přímo z globální paměti do sdílené paměti SM, takže se obejde L1 cache a intermediate register file. S těmito instrukcemi se také dají používat asynchronní bariéry.
GPU má také nové instrukce pro ovládání L2 cache (asi by mohlo jít o manuální vyhazování dat z ní, například). A architektura také přináší různá vylepšení programovatelnosti, která zjednoduší psaní kódu.
8×8×4 tensor jádra
Je zajímavé, že Ampere používá jenom čtyři tensor jádra na jeden 64shaderový SM. Architektura Volta jich totiž měla dvojnásobek. Ovšem výkon byl zvýšen, Nvidia uvádí, že nakonec má nižší počet jednotek 2× vyšší výkon. Došlo tedy asi k agregování výpočetních FMA jednotek do méně „frontendů“. Tensor jádra třetí generace mají velikost matice 8×8×4 místo 4×4×4 (Volta).
TensorFloat-32
Už bylo zmíněno, že tensor jádra umí výpočty dokonce i s binárními hodnatami. Ovšem jsou podporované také vyšší datové formáty (ale asi pořád jen pro maticové operace). Jednak nový formát, který Nvidia označuje TensorFloat-32 (TF32). Jde o hybrid – používá stejný 8bitový exponent jako hodnota FP32, ale k tomu má redukovánu mantisu z 23 bitů na 10bitů, stejnou přesnost, jakou má FP16.
K tomu s jedním bitem pro znaménko má hodnota fyzicky 19 bitů – výhoda proti FP32 je asi v nějakém interním zjednodušení jednotek, umožňujícím vyšší výkon. Na rozdíl od Bfloat16 se hodnota nevejde do 16 bitů, ale má vyšší přesnost. Bfloat16 má 8 bitů na exponent, ale jenom 7bitů (128 možných hodnot) na mantisu, což se někdy kritizuje jako nedostatečné.
Použití této funkce zdá se nevyžaduje změnu softwaru. Výpočty se provádějí se vstupy FP32 a výstup je také FP32. Pouze během výpočtu tensor jádra redukují přesnost (mantisu). Výsledek je tedy méně přesný, ale numerický rozsah hodnot FP32 je během práce zachován díky shodnému exponentu. Více o výpočtech v TensorFloat-32 naleznete zde.
Článek pokračuje na další straně.
Softwarová stránka: Jak dostat víc z tensor jader
Některé další optimalizace výkonu mohou dále zvýšit „TFLOPS“, které jsme uváděli v předchozích kapitolách, i když nezvyšují přímo hrubý výkon sám o sobě. S těmito softwarovými triky podle Nvidia může být A100 nejen 2,5×, ale až 20× výkonnější než Volta (ono „až“ je samozřejmě asi klíčové).
Podpora FP64 výpočtů
Zajímavé je to, že za určitých podmínek nyní tensor jádra mohou podporovat i výpočty v FP64 s dvojitou přesností – což jde tak trochu proti původnímu záměru, ale dává to ve skutečnosti smysl. V tomto případě nejde asi přímo o hardwarovou schopnost. Už před nějakým časem byla publikována studie zkoumající, zda se podobné 16bitové jednotky dají využít k vědeckým výpočtům s vysokou přesností.
Toto zdá se Nvidia v Ampere používá, ale spíše asi půjde o rozklad FP64 operací na dílčí 16bitové výpočty, z nichž se pak iterativně vypočítává přesný výsledek, což pravděpodobně řeší buď firmware nebo ovladače. Tato podpora se asi opět týká jen maticových operací, které tensor jádra umí, a Nvidia uvádí, že s použitím této funkce se dá dostat až 2,5× vyšší rychlost FP64 výpočtu než na GPU Volta (údajně až 19,54 TFLOPS). Protože to ale není univerzální řešení, není toto zahrnuto ve standardním údaji o FP64 výkonu čipu A100. Více zde.
Structured Sparsity
Dalším způsobem, jakým Nvidia umožňuje zvýšit AI výkon, je využití sparsity ve vstupních datech. Spočívá to ve využití toho, že během trénování se typicky v sadě vstupů/aktivátorů vyprofilují některé, které mají hlavní vliv, zatímco ostatní jsou zanedbatelné. Ampere přináší funkci structured sparsity, kdy je možné během postupného provádění maticových operací v tensor jádrech z poloviny vstupů, které takto nejsou významné, „udělat nulu“ a ve výsledku při výpočtu udělat jenom polovinu práce, takže jednotka zvládne efektivně dvakrát větší objem výpočetních kroků, než kdyby tuto optimalizaci nepoužívala.
Nvidia proto uvádí, že výkon s touto funkcí je efektivně dvojnásobný (při FP16 by tedy tensor jádra dala 624 TFLOPS). Samozřejmě je to ale jen efektivní výkon, kde nastává i určité minimálně teoretické zhoršení kvality výsledku, ne reálné zvýšení výpočetní kapacity jader.
Článek pokračuje na další straně.
Změna: Architektura Ampere bude i pro karty GeForce
Včerejšek přinesl zásadní novinu i pro hráče. Původně se předpokládalo, že Nvidia zachová rozdělení GPU architektur na výpočetní linii a na hráčskou linii – toto jsme měli s GPU Volta versus Turing. A Ampere tedy byl očekáván coby náhrada Volty, ale ne Turingu.
Toto ale nakonec neplatí, Nvidia strategii opět změnila. A už výslovně potvrdila, že od rodiny Ampere budou odvozené nejen výpočetní GPU A100, ale také nějaké herní karty GeForce.
Toto asi neznamená, že by se do herních karet dostalo přímo nejvyšší GPU A100 (či GA100) s HBM2 (i když do nějaké velmi drahé karty Titan by se asi výjimečně dostat mohlo, jako Volta). Nvidia pravděpodobně pro karty GeForce vyvine separátní čipy Ampere, jejichž jména zatím nebyla sdělena, ale mohlo by to být třeba GA102, GA104 a tak dále, pokud by zůstalo tradiční značení.
Ampere will eventually replace Nvidia’s Turing and Volta chips with a single platform that streamlines Nvidia’s GPU lineup, Huang said in a pre-briefing with media members Wednesday. While consumers largely know Nvidia for its videogame hardware, the first launches with Ampere are aimed at AI needs in the cloud and for research. (Zdroj: MarketWatch)
Jiná GPU, ale stejná architektura
Tato GPU budou pravděpodobně mít odebranou podporu pro rychlé výpočty s dvojitou přesností (FP64), což se ve hrách nepoužívá a lze tak ušetřit tranzistory (a plochu/cenu čipu) a zvýšit energetickou efektivitu. V herní verzi Ampere bude místo na vylepšená/posílená tensor jádra také asi kladen větší důraz na RT jádra pro výpočet raytracingových efektů (analýzu průsečíků paprsků s objekty scény).
Nvidia did not release any information about consumer GPUs using Ampere, but when asked by a reporter in the briefing about the difference between enterprise and consumer approaches to Ampere, Huang said“ there’s great overlap in the architecture, but not in the configuration. (Zdroj: MarketWatch)
Generace GPU Pascal tak místo dvojice Volta a Turing podle všeho bude vypadat spíš jako generace Pascal, kde Nvidia také měla separátní highendové GPU GP102 a zvláštní GP100 s podporou FP64 a a pamětmi HBM2, které bylo určené do serverů. Díky tomuto spojení architektury do jednoho ovšem zřejmě karty Ampere pro hráče budou moci přijít na trh relativně brzo.
Co čekáte od herních grafik s GPU Ampere?
Jaké novinky herní Ampere přinese, to teprve uvidíme. Je pravděpodobné, že při jejich odhalení Nvidia prozradí o architektuře další věci, které teď ještě zůstávají skryté.
Článek pokračuje na další straně.
Ampere A100 už proudí na trh, zákazníků bude mnoho
Cena akcelerátoru A100 nebyla sdělena a asi nikdy nebude, protože minimálně verze SXM4 bude asi prodávána jen jako součást hotových serverů. Podle předchozích let by asi mohla být i vyšší, než 10 000 dolarů za kus. Nicméně největší odběratelé by možná mohli mít slevy.
Podle Nvidie je již GA100 v plné výrobě a dokonce už by mělo směřovat k prvním zákazníkům (i když nebylo specifikováno, zda to neznamená nějakou předběžnou dostupnost v menších počtech nebo vzorky). Tato GPU plánují používat ve vlastních či cloudových serverech, nebo nabízet ve fyzických serverech na prodej firmy Atos, Cisco, Dell, Fujitsu, Gigabyte, H3C, HPE, Inspur, Lenovo, Quanta/QCS a Supermicro.
GPU Ampere také budou v nabídce cloudových poskytovatelů Amazon AWS, Alibaba, Baidu, Google, Microsoft Azure, Oracle a Tencent. Chystají se je používat i různá výpočetní centra – Indiana University se superpočítačem Big Red 200, Jülich Supercomputing Centre, Karlsruher Institut für Technologie, Max Planck Computing and Data Facility nebo US Department of Energy a další. Tato GPU budou také použitá v americkém superpočítači Perlmutter (což bude zdá se ještě pre-exascale zařízení, ale poměrně výkonné).
Nvidia samotná chystá vlastní servery Nvidia DGX A100 a HGX A100, v nichž budou tato GPU použitá, které už údajně také mají objednané různí zákazníci.
Nvidia DGX A100
V serveru DGX A100 jsou osazené grafiky Nvidia A100 v provedení SXM4 v počtu osmi kusů – jde evidentně o desku, kterou Jen-Hsun Huang ukazoval před dvěma dny na videu. Dále má server 15 TB úložiště v NVMe SSD, celkem 1 TB RAM, devět 200Gb/s Infiniband adaptérů Mellanox ConnectX-6.
GPU jsou propojená NVLinkem a přepínači NVSwitch mezi sebou, ovládají je dva procesory, kterými jsou 64jádra AMD Epyc 7742. K těm jsou GPU připojená přes PCI Express 4.0 ×16. V minulé generaci Nvidia používala procesory Xeon, které ale zatím umí jenom PCIe 3.0, takže by měly poloviční propustnost (a také by neměly plných 16 linek pro každé GPU). I SSD jsou připojená přes PCI Express 4.0. Tato legrace stojí 199 000 dolarů.
Nvidia kromě tohoto stroje bude nabízet i další výpočetní řešení. Například verzi nazvanou HGX A100, která by měla být dostupné v různých cloudových službách. Ta má také osm GPU, ale existuje i menší verze serveru jen se čtyřmi GPU.