Az AMD prezentálta az aszinkron shader nevű titkos fegyvert

Az AMD Ausztráliában tartott rendezvényén részletezte azt a tervét, amely a GPU-limit kiütésére vonatkozik. Mint ismeretes az új, alacsony szintű hardverelérést biztosító grafikus API-k esetében a CPU-limittel kapcsolatos problémák voltak a középpontban, hiszen a hagyományos megközelítés tényleg itt eredményez olyan extrém többletterhelést és skálázhatósági problémákat, amelyekkel borzalmasan nehéz bánni.

Hirdetés

A pár napja bemutatkozott 3DMark API Overhead tesztje pont ezt a problémát prezentálja, és az eredményekből látható, hogy az új API-k sokszorosan hatékonyabban a régieknél, vagyis az előrelépés kézzel fogható. Az AnandTech ezt ki is mérte és az alábbi tesztből látható, hogy az egyes VGA-k esetében DirectX 12-ben ötször, tízszer vagy akár tizenötször is hatékonyabb a feldolgozás, annak ellenére, hogy a DirectX 12 kisebb stabilitási problémák miatt egyelőre hat szálra van korlátozva. Az IGP-k esetében is látványos a fejlődés: az AMD Kaveri APU-ja hétszer hatékonyabb az új API-val, míg az Intel Haswell megoldások esetében az előrelépés nagyjából háromszoros.

A fentiekből látható, hogy az új API-k hatékonysága a többletterhelés kiütésére vonatkozóan rendkívüli, de az AMD szerint erről már eleget beszélt az ipar, legalábbis a felhasználóik számára ez semmiképp sem újdonság. Éppen ezért a vállalat most a GPU-limit kiütésére fordítja a figyelmet. A közhiedelemmel ellentétben a GPU-limit pont ugyanolyan szoftveres probléma, mint amilyen a CPU-limit a DirectX 11 vagy a többi hagyományos API esetében. A különbség annyi, hogy más jelenség idézi elő, de ettől függetlenül kezelhető akármelyik új API-ban, ideértve a DirectX 12-t, a Vulkánt és a Mantle-t. Erre a jelenségre a gyógyír az aszinkron compute, amelyet az AMD aszinkron shadernek nevez, de alapjaiban ugyanarról van szó. A probléma forrását az alábbi videó jól szemlélteti:

A DirectX 12, a Vulkan és a Mantle alapból többszálú formában eteti a GPU-t, vagyis a feldolgozásra váró parancsok eleve nem soros formában érkeznek meg, mint például a DirectX 11-ben. Ez rendkívül hatékony a processzor oldalán, de a GPU szempontjából már nem az. Az egyes szálakból érkező feladatok fogadása ugyanis nem valós idejű, ami azt jelenti, hogy mindig csak egy szálból érkező feladat fogadható, míg a többi szálról érkező feladat várakozásra kényszerül.

Az eddigi modellhez képest ez a többszálú megoldás is előrelépés, de összességében túl sok tartalék marad a hardverben, illetve ellehetetleníti a preempciót, vagyis nem lehet magas prioritású feladatot beszúrni a feldolgozásba. A preempció bizonyos hardvereken persze így is opció, de magát az alapproblémát ez sem oldja meg. Szerencsére a DirectX 12, a Vulkan és a Mantle is támogatja az aszinkron feldolgozást, így pedig a grafikus vezérlők hatékonyan etethetők lesznek. Ezzel a móddal a compute feladatok a GPU-kba épített alternatív parancsprocesszorokon keresztül (a Radeonok esetében ezeket az ACE egységek) is bejuttathatók, így pedig elérhető az is, hogy a shaderek a hardveren belül egymással párhuzamosan fussanak. Ez nagymértékben megnöveli a grafikus vezérlők belső kihasználását jelentősen kitolva a ma tapasztalható a GPU-limitet.

Az AMD erre elkészített egy példaprogramot is, amelyen belül az utófeldolgozásra (post-process) vonatkozó effektek aszinkron módban is futtathatók. Inaktív effektekkel 245 képkocka/másodperc volt elérhető, míg bekapcsolt effektekkel a sebesség 158 képkocka/másodpercre csökkent. Korábban erről azt hittük volna, hogy csupán ennyire képes a hardver, ugyanakkor ez teljesen téves megközelítés. A hardver sokkal többet tud, ha az API képes etetni. Jelen esetben a 230 képkocka/másodperces sebesség is elérhető volt, ha az utófeldolgozósra vonatkozó effektek aszinkron módban futottak, vagyis ugyanannak a feladatnak az időigénye sokkal kevesebb, ha a futtatása párhuzamosan és nem a megszokott soros formában történik a grafikus vezérlőn belül.

Az aszinkron compute, vagy ahogy az AMD hívja aszinkron shader egyébként nem tekinthető radikális újdonságnak, ugyanis a PlayStation 4 konzolon a Battlefield 4, az InFamous: Second Son, illetve a hamarosan érkező The Tomorrow Children című játék már használja, és ennek a megoldásnak a bevetésével szinte mindenki számol. PC-n már kevésbé tekinthető kedvezőnek a helyzet az aszinkron shadert ugyanis csak a Thief című alkotás támogatja, és ez is csak a legújabb, 1.7-es frissítéstől kezdve. Ez persze elfogadható, mivel a Mantle API-hoz készült meghajtóba ez a képesség csak ősszel került bele, tehát korábban nem is volt lehetőség aszinkron shaderre.

Az AMD elmondta, hogy aszinkron shadert minden GCN architektúrára épülő Radeon támogat, és a funkció kihasználható DirectX 12, Vulkan és Mantle API alól. Előbbi két platform esetében ez szabványos formában oldható meg.

Hirdetés

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés