DirectX 12 zvyšují Radeonům výkon, starším čipům ale i spotřebu
Právě na hledání možných důvodů toho, proč jsou výsledky v Ashes of the Singularity pod DirectX 12 právě takové, jaké jsou, se zaměřila redakce webu TomsHardware ve své pětistránkové analýze. V několika případech narazila na ne úplně očekávatelné chování různého hardwaru, a tak se na tyto vybrané případy podíváme. Začněme u toho, co avizuje nadpis, tedy u spotřeby. Došlo na tři základní měření - spotřebu GPU (která dopadla dle očekávání), spotřebu CPU a poměr výkon / spotřeba podle API a nastavení. Právě druhé a třetí měření dopadlo zajímavě.
Graf výše znázorňuje poměr spotřeba na FPS (takže menší [spotřeba] je lepší). Redakce správně vychází ze spotřeby CPU+GPU dohromady, nikoli jen ze spotřeby grafické karty. Výsledky jsou každopádně překvapením a to snad po všech stránkách, ve kterých mohou překvapit. Každá karta se chová zcela unikátně. Radeon R9 390X na tom v poměru spotřeba/výkon není tak dobře, jako ostatní, což je asi to jediné, co lze předpokládat. Jeho výborný výkon v DirectX 12 je ovšem částečně vykoupen zhoršením energetické efektivity, zvlášť při vypnutí asynchronních shaderů. Chování karty ovšem může být ovlivněno faktem, že jde o nereferenční kartu, která nemá nastavený standardní limit spotřeby. Přesto se její chování ani neblíží žádné z ostatních high-endových karet.
Neméně zvláštní je chování architektury Maxwell - v podání GeForce GTX 980 totiž po přechodu z DirectX 11 do DirectX 12 energetická efektivita stoupá, zatímco u GeForce GTX 980 Ti klesá. Za pozornost stojí i to, že v této hře se Maxwell v poměru výkon na watt neliší od Radeonu Fury X.
Výše jsem zmiňoval, že je při měření spotřeby a energetické efektivity správné pracovat se spotřebou procesoru a grafické karty dohromady, nikoli jen se spotřebou grafické karty. Tento graf názorně ukazuje, proč. Jednotlivá APU, ale i jednotlivé grafické karty (či jejich ovladače) mohou mít velmi odlišné nároky na procesor. V obecné rovině se uvádí obvykle dvě závislosti: jednak závislost na výkonu grafické karty (čím více FPS karta zvládá, tím více dat musí procesor dodávat). Druhá závislost se týká architektury - pokud jeden čip používá hardwarový scheduling a druhý softwarový, pak v jednom případě běží řídící výpočty na GPU (a spotřeba pro tyto výpočty jde na vrub GPU), zatímco v druhém se odehrává na úrovni CPU (spotřeba GPU je sice nižší, ale spotřeba procesoru naopak vyšší). Hardwarový scheduling využívá architektura AMD GCN (všechny verze), softwarový Nvidia Kepler a Maxwell. Toto se zde odráží hlavně v případě DirectX 11, kdy se u podobně výkonných karet liší spotřeba procesoru o 4-5 wattů. Reálně bude rozdíl větší, zde nejsou zachyceny ztráty na napájecích obvodech (a na zdroji).
V DirectX 12, zvlášť po zapnutí asynchronních shaderů, se situace mění a rozdíl se stírá. U Radeonů totiž asynchronní shadery fungují korektně a jejich použití klade mírně vyšší nároky na procesor, respektive dochází k mírně vyššímu paralelnímu zatížení procesorových jader (API, ovladače).
Další grafy zachycují stabilitu snímkové frekvence - čím nižší hodnoty a nižší výkyvy, tím lépe. Šedě jsou vykresleny výsledky GeForce GTX 980 Ti, černě Radeonu Fury X.
Když TomsHardware analyzoval jednotlivé časy (na úrovni ovladače, API, procesoru…), narazil v jednom případě na výsledky, které korespondují s výkonem a (ne)stabilitou snímkové frekvence. Jde o čekání grafického jádra na procesor. Nejlépe si vedou čipy s architekturou GCN 3. generace (Tonga/Antigua alias R9 380X a Fiji alias Fury X). Dále je GCN 2. generace (Hawaii/Grenada alias R9 390/390X) a dále pak Maxwelly. To může částečně vysvětlovat rozdíl v chování současných Radeonů a GeForce, nicméně není úplně jasné, odkud se o tolik delší čekání na procesor - tedy limitace výkonu ze strany procesoru - bere. Může jít o slabinu grafického ovladače pro DirectX 12, může jít i o důsledek softwarového schedulingu (i když tak výrazný dopad bych nečekal), může jít o aspekt grafické architektury, jemuž musí být uzpůsobený ovladač. Zatímco architektura GCN umožňuje, aby procesy běžící na jednotlivých procesorových jádrech „mluvily“ paralelně k jednotlivým blokům 3D jádra (multi-engine concurency, compute-shader concurency), architektury Kepler a Maxwell tuto možnost nemají a komunikace zřejmě probíhá postupně, což trvá déle. Otázkou je, do jaké míry lze toto obejít specifickými optimalizacemi ovladačů.