DirectX 12 Multi-engine: asynchronní shadery v praxi
20.11.2015, Pavel Šantrůček, recenze
Co jsou to asynchronní shadery a k čemu vlastně slouží? Jak zapadají do kontextu DirectX 12? Které grafické karty je podporují, které zase ne a proč? V dnešním článku odpovíme právě na takovéto otázky.
Kapitoly článku:
MDolenc test Nvidia
U GTX 980 je situace jiná. Rozdílné časy výpočetních úloh (modrá) a mixovaných výpočetních a grafických úloh (červená) ukazují, že výpočetní úlohy neběží souběžně s úlohami grafickými. Latence výpočetních úloh tedy nejsou skryty v úlohách grafických, ale jsou k nim přičítány a latence snímku se prodlužuje.
Průchod 1 – exekuce pouze výpočetních úloh
V tomto průchodu jsou zpracovávány pouze výpočetní úlohy, a dalo by se tedy očekávat, že Device Context aplikace AsyncCompute.exe (modrá) bude odesílat příkazy do výpočetní fronty GPU. Jenže tomu tak není a příkazy jsou odesílány do fronty grafické (3D), tedy do fronty, o kterou se stará GCP.
Průchod 2 – souběžné exekuce grafických i výpočetních úloh
V tomto průchodu jsou zpracovávány souběžně příkazy výpočetní i grafické. Všimněte si, že jak příkazy výpočetní (světle fialová), tak také grafické (tmavě fialová) jsou zasílány pouze do jediné fronty grafické (3D) a výpočetní fronta (Compute) prostě využívána není!
Co to tedy znamená? Náš závěr je poměrně jednoduchý, nicméně jednoznačný. Grafické karty architektury Kepler/Maxwell nemají pod DirectX 12 žádný samostatný výpočetní engine, který by se o příkazy z výpočetní fronty postaral. Pro výpočetní i grafické úlohy je využívána pouze jediná fronta (3D), o kterou se stará jednotka GCP. S největší pravděpodobností se tedy GCP přepíná mezi úlohami grafickými a výpočetními. Souběžné zpracovávání výpočetních a grafických úloh je tedy zcela vyloučeno.
Ten, kdo se o problematiku kolem asynchronních shaderů a grafických karet Nvidia zajímal už dříve, jistě narazil na informace kolem jednotky GMU (Grid Management Unit). Dle různých informací, které měly opět svůj základ v článku na anandtech.com, měla tato jednotka plnit úlohu obdobnou, jako u grafických karet GCN jednotka ACE, a poskytovat tak pro výpočetní úlohy až 32 front technologie Hyper-Q.
Jak vidíte, není tomu tak, ale věřte, že tato jednotka GMU není na grafickém čipu jen tak bez užitku. Využijeme toho, že MDolenc test nebyl napsán pouze pro DirectX 12, ale jeho druhá verze také přímo pro Nvidia CUDA.