Recenze Grafiky a hry

DirectX 12 Multi-engine: asynchronní shadery v praxi | Kapitola 8

Pavel Šantrůček

Pavel Šantrůček

17

Seznam kapitol

1. DirectX 12 Multi-engine: asynchronní shadery v praxi 2. Co jsou to Compute shadery 3. DirectX 11 4. DirectX 12: Multi-engine 5. Simultánní Multi-threading 6. Multi-engine - implementace AMD a Nvidia
7. MDolenc test: AMD 8. MDolenc test: Nvidia 9. MDolenc test: Nvidia (CUDA) 10. Ashes of the Singularity (v 0.49) 11. Ashes of the Singularity (v 0.60) 12. Závěr

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.

Reklama

MDolenc test Nvidia

DirectX 12 Multi-engine: asynchronní shadery v praxi

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

DirectX 12 Multi-engine: asynchronní shadery v praxi

- pro zvětšení klikněte na obrázek -

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

DirectX 12 Multi-engine: asynchronní shadery v praxi

- pro zvětšení klikněte na obrázek -

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.


Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama