geforce-gtx280-novy-kral-3d-prichazi
Hardware Článek GeForce GTX280 - nový král 3D přichází

GeForce GTX280 - nový král 3D přichází | Kapitola 4

Z. Obermaier

Z. Obermaier

16. 6. 2008 01:00 193

Seznam kapitol

1. Úvod - G80, G200 a ti druzí ... 2. GeForce GTX 200 3. Architektura G200 4. Využití výkonu GPU pro náročné výpočty 5. Asus GeForce GTX 280 1GB 6. Testovací sestava 7. Spotřeba a přetaktování 8. Enkódování videa pomocí GPU 9. 3Dmarky 10. World In Conflict DX9 11. Company Of Heroes: Opposing Fronts DX9
12. Supreme Commander: Forged Alliance 13. Crysis DX9 14. Bioshock DX9 15. Unreal Tournament 3 16. Call Of Duty 4 17. Half Life 2: Episode Two 18. Lost Planet DX9 19. Elder Scrolls IV : Oblivion 20. DirectX 10 hry 21. Shrnutí výkonu 22. Závěr

Nová generace grafických karet NVIDIA je zde. Měsíce už se spekuluje o jejich výkonu a možnostech. Zapomeňte dnes na všechny domněnky, fámy a "zaručené" zprávy. Skutečný test nejvýkonnější grafické karty bude možná pro mnohé překvapením, v žádném případě ale ne zklamáním. Výkon karty je skutečně velmi vysoký. S touto generací karet nepřichází pouze herní výkon, ale mnohem širší možnosti využití...aktualizováno o architekturu čipu!

Reklama

Jak již víte, z předcházejících kapitol, grafické jádro G200 se skládá z 240-ti "Stream procesorů". Každý tento procesor je malá velmi výkonná výpočetní jednotka, která dokáže některé instrukce provést v neskutečně krátkém čase. Možnosti využití těchto jednotek jsou omezené, jedná se o jednoduché "procesory", které nedokáží zpracovat jakýkoliv kód. Jejich využitelnost je sice úzká, v instrukcích (výpočetní operace) které ale zvládají, jsou bezkonkurenčně nejrychlejší.

CPU versus GPU

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Než si povíme dále o konkrétních možnostech GTX 200, musím vás trochu uvést do světa reálných aplikací. Běžné procesory (CPU) dokáží na jednom jádru spustit dvě vlákna instrukcí, které se snaží jednu po druhé provést v co nejkratším čase. I když jsou dnešní čtyřjádrové čipy tedy schopné velmi rychle provést několik vláken instrukcí najednou, jen velmi málo aplikací z toho dokáže těžit. Velká většina dnešních aplikací je stále jedno-vláknových (single-thread). Běžné programy, jako kompilery, kancelářský software, a mnoho dalších ani více-vláknové (multi-thread) nepotřebujeme. Naopak je zde mnoho aplikací, které jsou více-vláknové a dokáží využít schopností více-jádrových procesorů efektivně - a tím znatelně zkrátit dobu provedení operace.

Mezi takové programy patří editory videa, fotografií, enkodéry, vědecké a fyzikální simulátory, 3D renderovací nástroje a mnoho dalších. Zde se ale dočkáme druhého paradoxu, kdy je aplikace naprogramována jako více-vláknová ale naše dnešní čtyřjádra umožní provést pouze omezený počet instrukcí v několika vláknech. To bylo pěkně vidět v našem testu Intel SkullTrail, kde ve více-vláknových aplikacích výkon s každým dalším jádrem stále stoupal. Co z toho plyne? Čím více jader bude mít procesor, na kterém bude provozována (správně napsaná) multi-thread aplikace, tím bude výkon vyšší. Kde ale vzít v běžném počítači tolik procesorů? No přeci v GPU ...

Dnešní grafické procesory (GPU) jsou v podstatě mnoho-jádrovým multi-procesorem, který je schopen provést v jednom okamžiku (paralelně) velké množství instrukcí najednou. Klasický čtyřjádrový CPU, provede najednou jen několik instrukcí, GPU jich může provést stovky. Čtyřjádro může najednou provádět osm vláken programu (manuálně naprogramovaných), GPU GTX 200 jich může provádět až tisíc (bez nutnosti vlákna manuálně naprogramovat). GPU nikdy nemůže zcela nahradit CPU, protože by nedokázalo jiné než výpočetní úlohy ani vykonat (a nebo výrazně pomaleji, než běžné CPU). Ve výpočetních operacích s plovoucí desetinnou čárkou ale nemají GPU konkurenci. Zde spočívá jejich síla a my ji chceme využít.

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

V případě GTX 200, a jejího velkého počtu těchto výpočetních jednotek, se v jedné grafické kartě skrývá superpočítač. Tento je schopen paralelních výpočtů v desítkách/stovkách vláken, a tím se skutečně možnosti blíží superpočítačům určeným k vědeckým účelům. Na obrázku se podívejte, kolikanásobně překoná jedna grafická karta běžný čtyřjádrový procesor v konkrétních nasazeních.

O budoucnosti výpočtů přes GPU je již dnes rozhodnuto. Před nedávnem internetem proběhla zpráva, že němečtí vědci postavili počítač za cenu 4000 EUR, kde výkon dvou GeForce 9800 GX2 překonal jejich starý superpočítač za miliony EUR. Superpočítače na bází grafických jader jsou výkonnější, efektivnější a hlavně mají mnohem nižší spotřebu než sáloví giganti s (dnes) podobným výkonem.

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Ve vybraných programech pro astro-fyzikální, lékařské a další simulace je někdy nárůst výkonu více než stonásobný. Objevují se i první reálně využitelné aplikace ku prospěchu všech, například software pro výpočet obrazu u mamografů, modelů tomografů a dalších. Srovnání klasického čtyřjádra a GPU jádra GTX 200 nabízí náš třetí obrázek. Můžete porovnat výpočetní schopnosti ale také velikost čipů v přímém srovnání. Aby bylo možné tento výkon využít, je potřeba naprogramovat aplikace, které budou umět přistupovat k procesorům v GPU a využít je. Tento programovací jazyk byl nazván - CUDA.

CUDA

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Základ tohoto API pochází z programovacích jazyků "C" a "C++". Je ovšem od počátku designován jako rozšíření pro paralelní výpočty. Aplikaci napsanou pod CUDA, bude od nové verze možné spustit na jakémkoliv více-jádrovém procesoru, tedy i na CPU. Pokud programátor zná jazyky C, C++ nebude pro něj žádný problém portovat jakýkoli již hotový program pro CUDA a GPU!

Jak to funguje?

Procesory v GPU je možné využít pouze k matematickým výpočtům, o vše ostatní se stará dále hlavní procesor počítače. Aplikace využívající GPU musí být napsaná tak, aby se o běžnou režii programu (třeba i jedno-vláknového) staral CPU, a v případě potřeby matematických operací přesunul tuto úlohu právě do GPU.

Příklad: Máme zde 3D renderovací program, kde veškerý běh programu (menu, vzhled atd.) zpracovává CPU. Ve chvíli kdy zadáte úlohu k renderování se tento výpočet přesune k provedení do GPU a výsledek vám opět zprostředkuje, CPU (může jít klidně i o pomalý jedno-jádrový CPU).

Takhle to bude fungovat v ideálním případě. Co ale v případě, že je aplikace napsána jako striktně jedno-vláknová? V tento moment přijde hlavní zbraň CUDA, která tuto jedno-vláknovou aplikaci (kernel) spustí zároveň na všech SP procesorech v GPU a tím její průběh paralelizuje zcela automaticky. Programátor může napsat striktně jedno-vláknovou aplikaci, pokud bude ale spuštěna na GPU, stane se z ní více-vláknová. Jednoduchým převodem (ve speciálním kompileru) z C++ do CUDA, lze i jedno-vláknové programy přeměnit ve více-vláknové (které jako více-vláknové půjdou spustit i na klasických CPU). Již v příští verzi vývojářského kitu bude možnost CUDA aplikace spouštět nejen na GPU. Více o CUDA zde.

ATi versus CUDA

Mnozí z vás vědí, že s prováděním výpočetních operací přes GPU přišlo už před nějakou dobou, konkurenční AMD/ATi na svých grafických kartách Radeon. Nejznámějším (kromě fyziky Havok) využitím, je možnost počítání distribuovaných výpočtů v projektu Folding@Home, od ovladačů Catalyst 7.3 z roku 2007. Aplikací využívající možnosti výpočtů pro karty ATi není zatím mnoho, důvod je v opravdu velmi náročném programování.

Pokud chcete využít jádro GPU karet ATi, musíte do nejmenších detailů znát architekturu čipu, protože mu to musíte napsat skutečně "na tělo". Velkou nevýhodou je překladač instrukcí aplikace pro GPGPU, mezi vrstvou operačního systému a hardwarem. Všechny instrukce musí projít skrze grafické DirectX nebo OpenGL rozhraní, přímo k výpočetním jednotkám v jádru GPU přistupovat nelze. Využití GPU v případě karet ATi je velmi náročné, a složitost napsání takových aplikací mnohé tvůrce odrazuje.

NVIDIA šla jinou cestou, k podobnému výsledku. K procesorům v jádru se přistupuje přímo, a ne přes rozhraní DirectX a OpenGL. Programovací jazyk je rozšířením běžně používaného "Céčka". Napsání aplikace pod CUDA je pro každého programátora v "C" stejné, jako pro běžné CPU. Aplikace je použitelná pro různá zařízení, pro GPU, CPU - je univerzální.

Příklad: Existuje aplikace napsaná v C++ (například video enkodér), potřebujeme urychlit zpracování videa, které na běžném CPU trvá minuty/hodiny. Nabízí se tedy možnost, převést část výpočtů do GPU na osazené kartě. Program necháte překompilovat CUDA-kompilerem, který správně vyhodnotí, které části kódu bude zpracovávat CPU a které GPU. Nakonec zde máme aplikaci, spustitelnou jak na samotném CPU, tak na systému s CPU i GPU. Na obou počítačích poběží, s kompatibilním GPU ale mnohem rychleji. Takhle jednoduše to na ATi zkrátka nelze provést.

Praktické využití

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

V CUDA bylo vytvořeno již velké množství programů, využitelných v konkrétních oborech. V materiálech o možnostech CUDA, je velké množství příkladů a společností, které na aplikacích pro využití výpočetního výkonu GPU pracují. Jsou jich desítky. Jak se výpočty zrychlily proti běžným postupům s CPU ukazuje první obrázek této kapitoly. Pojďme ale k programům, které využijeme my všichni.

Enkódování videa

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Možnost převodu videa, je v tuto chvíli pro běžné uživatele nejzajímavějším využitím výpočetní síly GPU. První vlaštovkou v tomto směru budiž enkodér videa BadaBoom. Ten dokáže převádět video mezi nejpoužívanějšími formáty, včetně plného HD rozlišení a kodeku H.264. Jde o rannou verzi, a v době kdy se dostane na trh, budou možnosti programu jistě vyšší než dnes. Nyní je možné převádět videa pouze do přednastavených profilů (iPod, iPhone atd.). Aplikace by měla být zdarma, pouze některé licencované kodeky bude nutné dokoupit zvlášť.

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

První obrázek je graf, kolik snímků za vteřinu dokáže převést procesor CPU (dvoujádro i čtyřjádro) a jádro GPU G92 (GeForce 9600 GT) a G200 (GeForce GTX 280). Pokud počet snímků za vteřinu přepočteme na výsledný čas převodu, tak vězte že: Na 3GHz čtyřjádru trval převod HD klipu 3 minuty a 51 vteřin. Proti tomu GeForce GTX 280 převáděla ten stejný HD klip pouze 21 vteřin. Velmi zajímavá úspora času, nemyslíte?

Druhý obrázek ukazuje dobu převodu 2-hodinového HD filmu. Na čtyřjádru se film převádí 5 hodin a 33 minut, přes GPU GTX 280 byl hotov za 35 minut. Srovnání, které jsem provedl sám, najdete v  samostatné kapitole.

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Program BadaBoom není ale jediný, společnost Elemental Technologies uvedla a běžně prodává několik profesionálních aplikací, využívající GPU. Řada programů se nazývá RapiHD a jsou určeny jako samostatné enkodéry videa různých formátů, nebo jako doplněk pro akceleraci videa pro Adobe Premiere. Do konce roku se očekává několik nezávislých enkodérů videa dostupných na trhu.

Folding @ Home

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Folding@home je projekt Stanfordské univerzity, který se pomocí distribuovaných výpočtů snaží přispět k výzkumu mechanizmu skládání proteinů, jehož výstupy by mohly vést k léčení závažných nemocí (Alzhaimerova choroba atd.).

Od roku 2000 se do projektu připojilo více než 3 miliony počítačů. Stávající výkon všech těchto připojených počítačů je nyní 1,9 PetaFLOPs. Jediná grafická karta GeForce GTX 280 má výkon 933 GigaFLOPs (jádro G80, G92 má kolem 520 GigaFLOPS). NVIDIA do této chvíle prodala 70 miliónů grafických karet schopné spouštět CUDA aplikace (karty s jádry G80, G92) to představuje nevyužitý výkon kolem 3640 PetaFLOPs. Kdyby se do projektu Folding@home zapojilo jen 0,1 procent všech prodaných grafik, představovalo by to sílu 36 PetaFLOPs, to jest 13x více než je současná síla všech připojených počítačů.

PhysX

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

NVIDIA před nedávnem koupila skomírající společnost Ageia, tvůrce fyzikálního akcelerátoru Ageia PhysX PPU. V některých hrách, s plnou podporou byla využitelnost pro fyzikální efekty skutečně vysoká a přítomnost PPU karty v PCI slotu byla zkrátka znát. Po prvotních problémech ranných ovladačů, dokonce i fps systému s osazenou kartou bylo vyšší než bez ní (zpočátku tomu bylo naopak). Lidé si ale kartu nekupovali, a společnost se kvůli tomu dostala na pokraj krachu. Důvod byl prostý - málo herních AAA titulů podporující PhysX.

Poté co NVIDIA společnost koupila, učinila ihned nejdůležitější věc - zajistila použití této technologie v co možná největším počtu AAA herních titulů. A to, že NVIDIA umí přesvědčit je známý fakt - dnes je přislíbeno použití PhysX v několika desítkách herních titulů pro tento rok. Tentokrát ale již nebudete potřebovat PPU kartu do PCI slotu, veškerou fyziku vám spočítá přímo jádro GPU.

GeForce GTX280 - nový král 3D přichází
i Zdroj: PCTuning.cz

Pokud jste v počítači PPU kartu neměli, musel fyziku a veškeré náležitosti počítat procesor vašeho počítače. Ten je ale ve hrách zaneprázdněn i dalšími úlohami, a proto byla fyzika v jeho podání ochuzená a nebo bylo fps nízké. Graf ukazuje, kolik snímků za vteřinu vypočte procesor CPU (modré sloupce) a kolik zvládne GPU v podání GTX 280 (sloupce zelené). Grafická karta je ve výpočtech až 15x rychlejší, a to ještě stihne vykreslovat scénu. Již příští měsíc bude plná podpora PhysX díky CUDA dostupná všem majitelům grafických karet GeForce 8800/9800.

CPU ale není mrtvé

Všechny popsané možnosti využití výpočetního výkonu GPU nejsou omezeny pouze pro grafické karty GTX 200. Vše co jsem popsal, vám bude fungovat na grafikách s jádry G80, G92, G200. Pouze si stáhněte poslední verzi ovladačů s CUDA knihovnami (odsud).

K běžnému používání počítače ale pouze GPU nestačí. Stále budeme potřebovat klasický procesor, který bude obsluhovat běžné několika-vláknové aplikace. Pokud ale bude aplikací umožňujících využít potenciálů GPU přibývat, bude nám do budoucna stačit jen pomalé a úsporné dvoujádro, které v případě potřeby vysokého výpočetního výkonu "přesune" tuto úlohu do GPU. Tohle by mohla být cesta k úspornějším počítačům budoucnosti.

POZOR: Několik čtenářů nabylo dojmu, že je programování v CUDA jednoduchou záležitostí. Možná tak můj popis vyznívá, ovšem opak je pravdou. Vše se nachází teprve v začátcích, a časem se mnohé zjednoduší. Nyní ještě není funkcionalita a popisovaná využitelnost jednoduše dostupná. Ovšem NVIDIA má prostředky, aby dotáhla tento koncept k dokonalosti.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama