Analýza výkonu CPU a GPU v KeyShotu
Analýza renderování v KeyShotu s využitím 64jádrového procesoru AMD Threadripper 3990X a 72jádrového procesoru NVIDIA Quadro RTX 6000.
V kanceláři společnosti Luxion máme novou pracovní stanici vybavenou procesorem AMD Threadripper 3990X a grafickým procesorem NVIDIA Quadro RTX 6000. Cena obou se pohybuje kolem 3500 dolarů a každý z nich představuje v současné době nejlepší výkon, jaký je v pracovní stanici k dispozici pro CPU nebo GPU.
Specifikace
Procesor AMD Threadripper 3990X je založen na úžasné architektuře Zen, kterou společnost AMD představila v roce 2017. Model 3990X je v současnosti nejrychlejším procesorem pro pracovní stanice (pomineme-li serverové procesory AMD EPYC). Má 64 jader a umožňuje 128 souběžných vláken. Má celkem 292 MB mezipaměti na čipu a propustnost paměti 95 GB/s. Využívá nejmodernější 7nm proces a má spotřebu kolem 280 W.
Grafický procesor NVIDIA Quadro RTX 6000 je založen na revoluční architektuře Turing, kterou společnost NVIDIA představila v roce 2018. Je vybaven 72 jádry RT určenými pro ray tracing, 4608 jádry CUDA určenými pro stínování a obecné výpočty a 576 jádry Tensor pro hluboké učení a denoising. Má 24 GB paměti GDDR6 s propustností 672 GB/s. Používá 12nm proces a má spotřebu energie kolem 295 W.
Historie KeyShotu
Společnost Luxion předvedla veřejnosti interaktivní technologii ray tracingu v březnu 2006. Kód pro ray tracing tehdy běžel na architektuře AMD Opteron. Od té doby jsme náš kód pro ray tracing zdokonalili tak, aby plně využíval nejnovější vývoj procesorů. V roce 2010 jsme předvedli KeyShot na 40jádrové / 80vláknové pracovní stanici Intel se čtyřmi sockety Westmere včetně interaktivního ray tracingu více než 1 miliardy unikátních polygonů. Interně Luxion pracoval na GPU ray tracingu již v roce 2011, ale po důkladné analýze jsme dospěli k závěru, že kvůli omezené paměti a výkonu v té době nemohl konkurovat našemu CPU rendereru.
V roce 2018 se vše změnilo, když společnost NVIDIA představila architekturu RTX se specializovaným hardwarem pro ray tracing. V Luxionu jsme se rozhodli, že právě teď nastal čas na podporu GPU renderu, a KeyShot 9, vydaný v listopadu 2019, přidal plnou podporu renderování přes GPU pomocí RTX a OptiX 7. Vykreslování pomocí CPU jsme ponechali oddělené a poskytli uživatelům možnost nadále používat CPU, jako ve všech předchozích verzích KeyShotu, nebo nově renderovat pomocí GPU KeyShotu 9.
Renderování přes GPU používá mírně odlišné algoritmy, protože GPU dosahují nejlepších výsledků při rovnoměrném paralelním zatížení. To ovšem znamená, že algoritmy GPU konvergují k obrazu bez šumu pomaleji než algoritmy CPU. Velký počet výpočetních vláken na GPU však umožňuje mnohem vyšší propustnost a nedávné přidání rychlých denoisingových (odšumovacích) algoritmů dále překlenulo propast mezi algoritmy GPU s hrubou silou a sofistikovanějšími algoritmy CPU.
Benchmarková scéna KeyShotu, autor Magnus Skogsfjord
Benchmark KeyShotu
Během let jsme obdrželi mnoho dotazů na to, který procesor by měl poskytovat nejlepší výkon, a po zavedení renderu pomocí GPU dostáváme ještě více otázek.
V KeyShotu se po mnoho let používala k testování výkonu slavná scéna s fotoaparátem. Je však poměrně jednoduchá a ve skutečnosti neukazuje přínos velmi rychlého hardwaru. S verzí KeyShot 9.3 jsme představili nový nástroj KeyShot Benchmark, který je k dispozici s bezplatným prohlížečem KeyShot Viewer a který umožňuje provádět benchmarking CPU a/nebo GPU. V našem srovnávacím testu jsme použili produktovou scénu s mikrofonem, kterou vytvořil Magnus Skogsfjord. Abychom dostali korektní benchmark, zkalibrovali jsme kvalitu výstupu tak, aby se shodovala na CPU i GPU, takže GPU sleduje více paprsků, aby získal výsledný obraz. Jako základní výkon používáme osmijádrový / šestnáctivláknový procesor i7-6900K běžící na frekvenci 3,2 GHz - ten je kalibrován na hodnotu 1,0.
Výsledky benchmarku KeyShot na nové pracovní stanici:
AMD Threadripper 3990X: 11,83
NVIDIA Quadro RTX 6000: 34,73
Výstup z benchmarku prohlížeče KeyShot Viewer
Výsledky výpočtu produktové scény na naší pracovní stanici ukazují, že GPU je zhruba třikrát rychlejší než CPU. U CPU i GPU dokázal KeyShot udržet vytížení nad 98 %, což znamená, že KeyShot plně využívá paralelní aspekty hardwaru.
AMD Threadripper 3990X poskytuje dosud nejrychlejší výkon CPU v pracovní stanici pro KeyShot. Je zhruba dvakrát rychlejší než procesor AMD Threadripper 2990WX ( 32 jader / 64 vláken) a téměř 12krát rychlejší než procesor Intel i7-6900K (8 jader / 16 vláken).
Stejně tak NVIDIA Quadro RTX 6000 poskytuje dosud nejrychlejší výkon jednoho GPU pro KeyShot. Nové karty RTX jsou přibližně šestkrát rychlejší než předchozí generace grafických procesorů NVIDIA založených na architektuře Pascal. To ukazuje přínos nových RT jader přidaných v architektuře Turing, díky nimž GPU posunulo výkon ray tracingu pro scénu reálného produktu nad úroveň nejlepších dostupných CPU.
Výkon zhruba odpovídá tomu, co jsme viděli u jiných produktových scén. Počáteční analýza výkonu GPU i CPU naznačuje, že u řady produktových scén, které jsme analyzovali, je pro CPU i GPU limitujícím výkonem šířka paměťového pásma.
Při provádění benchmarku jsme si také všímali spotřeby energie, kterou hlásila UPS připojená k pracovní stanici.
AMD Threadripper 3990X: 530 W
NVIDIA Quadro RTX 6000: 450 W
Ačkoli jsou tyto hodnoty poměrně blízké, bylo to pro nás trochu překvapivé, protože jsme si mysleli, že brutální povaha GPU a 12nm proces povedou k vyšší spotřebě, ale tyto hodnoty vypovídají o efektivitě moderních architektur GPU.
KeyShot běží s novými kartami NVIDIA RTX velmi rychle. Po nahrání dat a sestavení shaderů je pracovní postup velmi plynulý a rychlý. Jedním z problémů s grafickými procesory je vyčerpání paměti. Velmi složité scény s velkým množstvím geometrie a textur se na GPU nemusí vejít, takže jedinou volbou zůstává CPU. Je možné vyměňovat textury z paměti CPU do GPU, ale to je spojeno s výkonnostní ztrátou.
GPU si však poradí s poměrně složitými scénami. Se dvěma kartami RTX 5000 využívajícími NVIDIA NVLink pro dohromady 32 GB paměti jsme byli schopni ray tracingem trasovat scény obsahující 1,37 miliardy unikátních trojúhelníků. Sdílení geometrie přes NVLink je však spojeno s poměrně výrazným výkonnostním zásahem. Pro složité scény nabízí Quadro RTX 6000 s 24 GB nebo Quadro RTX 8000 se 48 GB poměrně dost prostoru pro geometrii a textury a tyto karty mohou ještě využít NVLink nabízející až 96 GB sdílené paměti GPU.
Scéna s 1,37 miliardy trojúhelníků vyrenderovaná na dvou RTX 5000 pomocí NVLinku. Autor: Dries Vervoort.
Nová architektura Turing je také vybavena velmi rychlým denoiserem (odstraňováním šumu) s umělou inteligencí, kterému trvá denoisace snímku jen několik desítek milisekund. To je obrovská výhoda pro interaktivní pracovní postupy ve srovnání s procesorem, kde nejmodernější denoiser založený na hlubokém učení pracuje několik sekund.
Další významnou výhodou renderování pomocí GPU je snadnost, s jakou lze výkon škálovat jednoduchým přidáním dalších GPU do pracovní stanice. Většina stolních pracovních stanic podporuje více GPU a jak jsme zjistili, výkon se s každým dalším přidaným GPU škáluje téměř lineárně.
CPU rendrování v KeyShotu
Vzhledem k vysokému výkonu dosaženému s architekturou RTX by se někdo mohl ptát, zda je stále potřeba renderování pomocí CPU? Odpověď na tuto otázku závisí na pracovním postupu. Pro většinu produktových scén poskytuje GPU skutečně bleskový výkon, ale pro vysoce komplexní scény s velkým množstvím geometrie a textur se CPU s přístupem k větší paměti stává konkurenceschopným. I když by bylo možné takové složité scény vykreslovat na GPU, je snazší spravovat data na CPU a režie přesouvání dat mezi GPU a hlavní pamětí bude pravděpodobně znamenat, že CPU je lepší volbou i z hlediska výkonu.
Kromě toho CPU překonává GPU ve scénách s velmi odlišným chováním stínování. Příkladem je pěnová hlava od Esbena Oxholma. Využívá heterogenní rozptylující médium modulované 3D procedurální texturou k dosažení komplexního vzhledu pěny. Na GPU má rozptylující médium v kombinaci s procedurální texturou závislou na umístění za následek divergentní chování, které GPU poměrně výrazně zpomaluje. V důsledku toho je grafický čip 3990X při vykreslování této scény třikrát rychlejší než grafický čip RTX 6000.
Další oblastí, ve které má procesor výhodu, je přesnost. KeyShot používá pro některé kritické části jádra ray tracingu plovoucí desetinnou čárku s dvojnásobnou přesností (64 bitů), aby zajistil vysoce přesné zpracování geometrie. Architektura RTX se spoléhá na plovoucí desetinnou čárku s jednoduchou přesností (32 bitů), což však omezuje přesnost ve velkých scénách a může vést k mezerám nebo nepřesnému stínování.
Pro dosažení maximální přesnosti má KeyShot v procesoru jeden trik navíc: přímý NURBS raytracing. To stručně řečeno znamená, že výsledná geometrie bude vždy hladká. Přímý NURBS raytracing (tedy bez předchozího převodu na polygonové plošky) je výhodný při práci s velkými modely, které obsahují malé části. Při převodu těchto modelů na trojúhelníky malé části často používají méně trojúhelníků a následně vypadají zblízka hranatě. Naproti tomu NURBS modely vypadají hladce ve všech vzdálenostech. Renderování NURBS je sice pomalejší než renderování polygonových trojúhelníků, ale umožňuje uživateli během nastavení pracovat s relativně hrubým trojúhelníkovým modelem a poté přepnout na přesné ray tracingové renderováí NURBS pro vykreslení finálních snímků ve vysokém rozlišení, aniž by se musel starat o vzhled "rozploškované" polygonové geometrie.
Zakřivené polygonové sítě mohou být zblízka hranaté (vlevo), zatímco NURBS plochy vypadají hladce z jakékoli vzdálenosti (vpravo).
Závěr
Jak AMD Threadripper 3990X, tak NVIDIA Quadro RTX 6000 jsou pro vykreslování v KeyShotu fantastické. Ideální pracovní stanice by měla mít obě!
Threadripper 3990X je velmi rychlý při nastavování scény, zpracování geometrie a nakonec při jejím vykreslování. Poskytuje velmi plynulý interaktivní pracovní postup a umožňuje přímý ray tracing NURBS a složitost scény omezuje pouze dostupná paměť. Díky 64 jádrům / 128 vláknům je výkon posunut na téměř 12násobek oproti 8jádrovému / 16vláknovému procesoru Intel i7. AMD Threadripper 3990X je nejrychlejší (a já bych dodal nejlepší) procesor, který si dnes můžete koupit pro renderování.
Stejně tak karta Quadro RTX 6000 je při vykreslování bleskově rychlá. Nová jádra RT zvedají výkon na téměř 35násobek oproti 8jádrovému / 16vláknovému procesoru Intel i7 a zhruba 3násobek oproti procesoru 3990X. V kombinaci s denoisingem je interaktivní pracovní postup na kartě Quadro RTX 6000 fantastický a poskytuje téměř okamžité konečné výsledky a pro offline vykreslování animací je to dar z nebes, který vykresluje snímky rychleji než cokoli, co jsme dosud viděli. Pro co nejrychlejší vykreslování vřele doporučujeme mít v pracovní stanici jednu nebo více karet Quadro RTX 6000.
Dr. Henrik Wann Jensen
Dr. Henrik Wann Jensen (M.Sc., Ph.D.) je vedoucím vědcem společnosti Luxion, tvůrce KeyShotu, a emeritním profesorem na katedře informatiky Kalifornské univerzity v San Diegu. Jeho výzkum se zaměřuje na realistickou syntézu obrazu, globální osvětlení a renderování přírodních jevů. Mezi jeho příspěvky k počítačové grafice patří algoritmus mapování fotonů pro globální osvětlení a první technika pro efektivní simulaci podpovrchového rozptylu v průsvitných materiálech. Je autorem knihy "Realistic Image Synthesis using Photon Mapping", AK Peters 2001. Je držitelem ceny Akademie filmových umění a věd (Technical Achievement Award) za průkopnický výzkum v oblasti renderování průsvitných materiálů.