Már Vulkan alatt is van aszinkron compute a GeForce-okon

Az NVIDIA eltitkolta ezt a részletet, de a 372-es sorozatú meghajtókban a Pascal architektúrára vonatkozóan elérhető a funkció.

Az NVIDIA a Vulkan implementációját eredetileg úgy jelentette meg, hogy nem tettek elérhetővé olyan alternatív parancslistát, amely tartalmazott volna COMPUTE_BIT flaget. Emiatt a compute futószalagok csak a fő parancslistába voltak betölthetők a grafikus futószalagok mellé, vagyis lehetetlen volt a hardvert aszinkron compute módban üzemeltetni. Még a Doom Vulkan módjának megjelenésekor is ez volt a helyzet, és az ID Software jelezte is, hogy az aszinkron compute az említett játékban csak GCN architektúrára épülő Radeonon érhető el.

Jó hír azonban, hogy augusztusban az NVIDIA frissítette a Vulkan implementációt. Ennek hála a 372-es sorozatú meghajtókban, a Pascal architektúrára épülő GeForce-okra vonatkozóan megjelent egy új parancslista, ami a fő parancslistán kívül is tartalmaz COMPUTE_BIT flaget. A vállalat ezt a képességet annyira nem verte nagy dobra. Konkrétan nem is számoltak be róla, de tény, hogy ott van a meghajtóban. Az is tény, hogy a Doom Vulkan módja már üzemképes vele, ezen belül is a részecskeeffektek számítása biztosan párhuzamosan történik. Ugyanakkor az utófeldolgozással kapcsolatos számítások nem futnak le párhuzamosan, mivel a GeForce-ok nem tudják meghívni a present függvényt a compute parancslistából, így azt a fajta átlapolási módszert, amit a Doom leképezője alkalmaz nem tudják támogatni. Ebből persze különösebb gond nincsen, mivel a Vulkan API az erőforrás-kreálás alkalmával ellenőrzi, hogy mire képes a hardver, és ennek megfelelően futtatja a programkódot. A GeForce-ok esetében a független parancslista helyett a fő parancslistába tölti be a utófeldolgozással kapcsolatos futószalagokat, így azok nem futhatnak párhuzamosan más futószalagokkal, annak ellenére sem, hogy ki vannak jelölve párhuzamos futtatásra.

A Maxwell architektúrára épülő GeForce-ok esetében továbbra is csak a fő parancslista tartalmaz COMPUTE_BIT flaget, tehát valószínűleg ennél a rendszernél az NVIDIA inkább nem engedélyezi az aszinkron compute lehetőségét. Ez részben jó döntés, mert a Vulkan API kialakításával nem lehet az alkalmazások szintjén befolyásolni a parancsok kezelését, vagyis ha a meghajtó rendelkezik a fő parancslistától független, COMPUTE_BIT flaget tartalmazó parancslistával, akkor az arra érkező futószalagok futtatását nem utasíthatja vissza. DirectX 12 alatt ez a rendszer jóval átgondoltabb, mivel a meghajtó még a beérkező parancsok kiadása előtt dönthet arról, hogy ezeket független compute parancslistába helyezi-e, vagy visszaküldi az operációs rendszernek, hogy bekerüljenek a grafikus parancslistába. Többek között a GeForce driver minden DirectX 12-es játék esetében az utóbbi módszert alkalmazza a Maxwell architektúra, és ez alól a Pascal esetében is csak a Rise of the Tomb Raider jelent kivételt. Az új 3DMark alatt persze mindkét architektúra vonatkozóan aktív az aszinkron compute futtatásának lehetősége, de ez ugye nem játékprogram.

Természetesen a Vulkan esetében is ugyanaz igaz az aszinkron compute-ra, ami a DirectX 12-nél. Ahhoz, hogy a Pascal architektúrára épülő GeForce-ok is profitáljanak belőle, úgy kell felépíteni magát a rendszert, hogy relatíve hatékonyan futhasson az NVIDIA hardverén. Ilyenre példa az új 3DMark teszt. De ha a játékfejlesztők továbbra is inkább a GCN-es Radeonokhoz igazítják az aszinkron compute konstrukciójukat, akkor abból a GeForce nem tud előnyt kovácsolni.

Azóta történt

Előzmények

Hirdetés