Co je to Hardware Accelerated GPU Scheduling pro grafické karty a co nám (ne)přinese?

4

Květnový update Windows 10 přinesl novou volbu Hardware Accelerated GPU Scheduling. Teď k této zásadní změně fungování GPU aplikací a her máme víc detailů.

Minulý týden jsme informovali o tom, že se do ovladačů Nvidie pro grafiky GeForce dostala nová funkce Hardware Accelerated GPU Scheduling. Poté vyšel i první ovladač AMD, kde se tato volba objevila také (zatím jen pro GPU Navi 10). Co přesně od ní čekat, nebylo ze začátku moc jasné, Microsoft ale teď publikoval blog, kde význam této novinky přiblížil.

Hardware Accelerated GPU Scheduling je jedna z novinek, kterou přináší model ovladačů WDDM 2.7 (součást Windows 10 od aktualizace 2004). Jejím smyslem je zefektivnění schedulingu GPU – tedy přidělování výpočetního času grafického procesoru mezi jednotlivé aplikace.

Windows mají od příchodu Windows Vista (WDDM 1.0) plánovač GPU, který podobně jako scheduler CPU přiděluje čas na grafice jednotlivým aplikacím, díky čemuž je možné, aby grafiku sdílelo několik programů najednou. Tento plánovač je systémový proces běžící na CPU.

Toto ovšem klade určité překážky, jelikož komunikace mezi procesem běžícím na CPU a samotným GPU trvá nějakou dobu. Aplikace proto obvykle přidělují práci grafice například jen jednou za každý vykreslený snímek a to ještě dopředu s bufferingem (zatímco je zpracováván aktuální snímek, aplikace už zadává ten následující).

Velké překopání práce Windows s grafickou kartou

Z tohoto důvodu přináší Windows 10 v buildu 2004 alternativní plánovač grafiky, který běží přímo na GPU a dokáže práci přidělovat efektivněji. Protože komunikace mezi jím a GPU je rychlá, je možné přepínat kontext častěji a aplikace mohou zadávat grafice práci častěji po menších částech. To znamená, že se zkracuje doba prodleva mezi zadáváním úkolů a jejich zpracováním, a tedy se snižuje latence při využití GPU.

Vylepšení latencí a rychlosti odezvy v aplikacích, které používají GPU, je právě hlavním cílem funkce Hardware Accelerated GPU Scheduling. Většina práce, kterou plánování úloh GPU dělá, se přesouvá na dedikovaný hardwarový blok, který mají moderní grafiky. Hardware zajišťuje většinu operací, ačkoliv operační systém si pořád zachovává kontrolu například na přidělování úrovní priority.

windows 10 hardware scheduling setting
Windows 10: Volba Hardware accelerted GPU Scheduling v nastaveních grafiky (Zdroj: Nvidia)

Tato novinka je přirozeně volitelná (pro starší GPU zůstane starší způsob práce) a momentálně není ani u nových GPU zapnutá automaticky. Zpočátku bude testován její dopad a případné negativní vedlejší účinky. Pokud si chcete Hardware Accelerated Scheduling zapnout, najdete tuto volbu v nastaveních Windows (sekce Systém, podmenu Obrazovka, pak úplně dole odkaz „Nastavení grafiky“).

Funkce bude k dispozici jen tehdy, pokud máte ovladač standardu WDDM 2.7, který ale zároveň musí mít explicitní podporu pro tento styl schedulingu. Současně také GPU musí obsahovat příslušný hardware.

U Nvidie je zdá se podpora v grafikách Pascal, Turing (a pravděpodobně i Volta). AMD zatím v beta ovladačích (k nalezení zde) poskytlo podporu pro Radeony řady RX 5700 a RX 5600, tedy pro GPU Navi 10. Které další čipy nebo generace GPU od něj budou podporované, zatím není známo.

Ovladače Nvidia GeForce s podporou DirectX 12 Ultimate 1600
První ovladače Nvidia GeForce s podporou DirectX 12 Ultimate přinesly také podporu pro Hardware Accelerated GPU Scheduling

Podle Microsoftu je hardwarová akcelerace schedulingu hodně zásadní změna ve fungování GPU pod Windows a zároveň hodně komplexní záležitost, takže povolení této funkce na určitém GPU vyžaduje hodně testování. Microsoft by ovladače, v nichž je chystaná podpora pro další čipy (asi hlavně Intel a AMD) měl předběžně zpřístupňovat v rámci programu Windows Insider, takže pokud jste netrpěliví, můžete se do něj zkusit přihlásit. Případné chyby nebo regrese výkonu můžete Microsoftu hlásit zde.

Galerie: Přehled novinek ve Windows 10 verze 2004

Pro celoobrazovkové hraní se asi moc nezmění

Největší přínosy by proto Hardware Accelerated Scheduling měl mít tam, kde se na grafice střídají úlohy. Třeba když mát puštěné video či prohlížeč internetu s GPU akcelerací a vedle toho další okna a aplikace, které také mohou používat akceleraci na GPU. Naopak asi nelze moc čekat zvýšení výkonu (FPS) ve hrách, pokud je máte spuštěné v plné obrazovce – tam logicky hra okupuje grafickou kartu prakticky výhradně a tudíž asi není moc prostoru pro to, aby scheduling na GPU něco výrazně změnil.

Toto zdá se podporují první benchmarky. Tom’s Hardware například shledal, že FPS ve hrách se v průměru prakticky nezměnily (i když jednotlivé výsledky měly výkyvy nahoru i dolu).

Podle Microsoftu je nicméně očekávané, že uživatel by neměl při zapnutí hardwarového schedulingu nic poznat na výkonu (a pozitivním slova smyslu také doufejme, že by se nemělo nic rozbít). Současné aplikace se totiž naučily s nevýhodami CPU schedulingu počítat a kompenzovat latenci například oním zmíněným bufferingem snímků. Přechod na hardwarový scheduling GPU představuje modernizaci infrastruktury, která až pak v druhém sledu bude využitá pro uživatelsky viditelné inovace a nové možnosti ve hrách a programech.

Zdroj: Microsoft

Co je to Hardware Accelerated GPU Scheduling pro grafické karty a co nám (ne)přinese?
Ohodnoťte tento článek!
5 (100%) 16 hlas/ů

4 KOMENTÁŘE

    • Proč by to mělo být rozdílem? Však ta hra poběží ve fullscreenu na všech monitorech. Nebo se nebavíme o tom že na multi monitor setupu pouštím hru na všech monitorech? Já třeba často pouštím X-Plane na 3 ze 4 monitorů a na těch třech to samozřejmě běží ve fullscreenu. Někdo má ale víc grafik, takže třeba ten 4. monitor na kterém to neběží má připojený do druhé grafiky, tudíž výkon té první nijak neomezuje.

      Ale třeba u toho přehrávání videa. I když běžím hru na jednom monitoru a na zbylých třech mám puštěných několik videí akcelerovaných GPU, tak nepociťuju žádný výkonnostní vliv. Tohle už ty grafiky dělají vesměs za režijní, sotva pozorovatelné časy. Samozřejmě když bych si pustil na každém monitoru jinou hru, propad pocítím ale tam už nějaký sheduling nebude hrát roli.

      Navíc ani s jedním monitorem a fullscreen hrou to nemusí být přínos. Pokud mi třeba video běží na pozadí, tak jeho decoding se stále provádí, autor předpokládá že když hra běží ve fullscreenu, všechny ty akcelerace GPU od jiných aplikací se nebudou provádět, což nemusí být pravda.

      Tak jak tak, v tomhle vidím spíše teoretickou šanci jak ušetřit nějaké režijní časy, nic výrazného, pokud člověk při tom hraní nedrásá HW na krev, tak to nemá šanci poznat.

  1. Zajímalo by mě, jestli to zlepší odezvu systému při renderingu na GPU (Redshift v Cinemě 4D atd.). Momentálně se při renderingu v podstatě zaseká celý systém a ani prohlížet web nejde.