Výkony grafických karet rostly především ruku v ruce se strmým rozvojem počítačových her. Ty dnešní pak velmi výrazně převyšují vícejádrové procesory svým aritmetickým výkonem i paměťovou propustností. V tomto roce představil největší výrobce grafických karet NVIDIA již třetí generaci grafických výpočetních karet s tzv. unifikovanou architekturou pod názvem Tesla, založenou na výrazně přepracované architektuře „Fermi“. Ta pak otevírá dříve nedostupné možnosti pro výpočetní nasazení GPU v mnoha vědních oborech.

Myšlenka využití klasických (herních) grafických karet pro výpočetní účely se začala výrazněji rozvíjet po roce 1999. Grafické karty hnané dlouhodobou snahou o co nejvěrnější grafiku v reálném čase již v té době představovaly akcelerátory s bezprecedentním výpočetním výkonem a programovatelností. Zhruba od roku 2003 se pak již naplno rozvinula snaha přizpůsobit GPU (Graphics Processing Unit) čipy právě k výpočetnímu, tedy ne-grafickému využití, prostřednictvím programovacích jazyků jako DirectX nebo například Cg. Vývoj grafických karet byl však stále limitován nutností poměrně podrobných znalostí hardwarové architektury a také nestandardním programováním prostřednictvím vektorů, textur a stínovacích jednotek. Výraznou překážkou v širším vědeckém i komerčním využití byla také nepřítomnost výpočtů v tzv. dvojité přesnosti (double precision), nutné pro získání spolehlivých výsledků v mnoha oborech. Až v roce 2006 uvedla společnost NVIDIA na trh novou architekturu GPU čipů, uzpůsobenou nejen grafickým, ale také výpočetním úlohám. Zároveň bylo vyvinuto prostředí CUDA, jehož prostřednictvím bylo poprvé možné programovat aplikace pro grafické karty ve standardním jazyce C. V návaznosti na tyto události se začal rozšiřovat pojem GPU computing a GPGPU (General Purpose Graphics Processing Unit).

Architektura současných GPU akcelerátorů NVIDIA

Jak bylo řečeno v úvodu, dnešní grafické karty převyšují vícejádrové procesory velmi výrazně jak svým aritmetickým výkonem, tak paměťovou propustností. Současná architektura grafických karet je právem označována jako skutečně masívně paralelní GPU akcelerátory. V roce 2008 největší výrobce grafických karet NVIDIA představil druhou generaci grafických a výpočetních karet s tzv. unifikovanou architekturou pod názvem Tesla, která už nerozlišuje jednotky vertexové a pixelové, ale disponuje až 240 programovatelnými výpočetními jednotkami. Tyto změny přinesly nejen výrazný nárůst využitelného výpočetního výkonu, včetně dvojité přesnosti na úrovni čtyřjádrových procesorů, ale také například navýšení paměťového prostoru na 4 GB, umožňující zpracování velkého objemu dat přímo na GPU. Špičkový výkon výpočetních karet NVIDIA Tesla dnes dosahuje až hodnoty 1 Tflops (miliardy operací za vteřinu), což je pak u systému osazeného několika kartami srovnatelné s kategorií výpočetních clusterů a malých superpočítačů, založených čistě na procesorech.

Nová generace výpočetních GPU s jádrem „Fermi“

Na podzim tohoto roku, po mnoha měsících dalšího vývoje, byla představena nová generace výpočetních GPU Tesla, založená na výrazně přepracované architektuře s názvem „Fermi“. Ta bude nyní disponovat zejména 512 výpočetními jednotkami, paměťovým systémem se 6GB DDR5 RAM a plnou podporou ECC – detekcí a opravou chyb vzniklých v paměti na všech úrovních. Dochází zároveň k zásadnímu nárůstu výkonu akcelerátorů ve výpočtech v dvojité přesnosti, který nyní bude dosahovat hodnot až 600 Gflops, což převyšuje možnosti současných nejvýkonnějších procesorů 8–10x. Obdobně bylo zrychleno provádění základních tzv. atomických operací a také přepínání kontextu mezi výpočetním a grafickým režimem čipu, díky čemuž jsou minimalizovány ztráty výkonu při současné vizualizaci aplikace a jejích výsledků. Nový integrovaný plánovač úloh (scheduler), nazvaný GigaThread Engine, pak umožní paralelní běh více aplikací nebo jejich částí a tím opravdu efektivní využití všech výpočetních jednotek čipu. V oblasti programovatelnosti nakonec podpoří snazší využití nové generace akcelerátorů NVIDIA Tesla plná kompatibilita s velmi rozšířeným jazykem C++. Architektura Fermi je již nyní hodnocena jako revoluční krok směrem ke skutečně širokému využití výpočetních GPU ve všech oblastech, otevírající pro mnoho vědních oborů dříve nedostupné možnosti a vstup těchto grafických akcelerátorů nové generace na trh počátkem příštího roku 2010 je spojen s velkým očekáváním.

Architektura současných GPU akcelerátorů NVIDIA

Jak bylo řečeno v úvodu, dnešní grafické karty převyšují vícejádrové procesory velmi výrazně jak svým aritmetickým výkonem, tak paměťovou propustností. Současná architektura grafických karet je právem označována jako skutečně masívně paralelní GPU akcelerátory. V roce 2008 největší výrobce grafických karet NVIDIA představil druhou generaci grafických a výpočetních karet s tzv. unifikovanou architekturou pod názvem Tesla, která už nerozlišuje jednotky vertexové a pixelové, ale disponuje až 240 programovatelnými výpočetními jednotkami. Tyto změny přinesly nejen výrazný nárůst využitelného výpočetního výkonu, včetně dvojité přesnosti na úrovni čtyřjádrových procesorů, ale také například navýšení paměťového prostoru na 4 GB, umožňující zpracování velkého objemu dat přímo na GPU. Špičkový výkon výpočetních karet NVIDIA Tesla dnes dosahuje až hodnoty 1 Tflops (miliardy operací za vteřinu), což je pak u systému osazeného několika kartami srovnatelné s kategorií výpočetních clusterů a malých superpočítačů, založených čistě na procesorech.

Nová generace výpočetních GPU s jádrem „Fermi“

Na podzim tohoto roku, po mnoha měsících dalšího vývoje, byla představena nová generace výpočetních GPU Tesla, založená na výrazně přepracované architektuře s názvem „Fermi“. Ta bude nyní disponovat zejména 512 výpočetními jednotkami, paměťovým systémem se 6GB DDR5 RAM a plnou podporou ECC – detekcí a opravou chyb vzniklých v paměti na všech úrovních. Dochází zároveň k zásadnímu nárůstu výkonu akcelerátorů ve výpočtech v dvojité přesnosti, který nyní bude dosahovat hodnot až 600 Gflops, což převyšuje možnosti současných nejvýkonnějších procesorů 8–10x. Obdobně bylo zrychleno provádění základních tzv. atomických operací a také přepínání kontextu mezi výpočetním a grafickým režimem čipu, díky čemuž jsou minimalizovány ztráty výkonu při současné vizualizaci aplikace a jejích výsledků. Nový integrovaný plánovač úloh (scheduler), nazvaný GigaThread Engine, pak umožní paralelní běh více aplikací nebo jejich částí a tím opravdu efektivní využití všech výpočetních jednotek čipu. V oblasti programovatelnosti nakonec podpoří snazší využití nové generace akcelerátorů NVIDIA Tesla plná kompatibilita s velmi rozšířeným jazykem C++. Architektura Fermi je již nyní hodnocena jako revoluční krok směrem ke skutečně širokému využití výpočetních GPU ve všech oblastech, otevírající pro mnoho vědních oborů dříve nedostupné možnosti a vstup těchto grafických akcelerátorů nové generace na trh počátkem příštího roku 2010 je spojen s velkým očekáváním.

Softwarové nástroje pro vývoj aplikací

Zároveň s rozvojem hardwarové architektury dochází také k neustálému rozšiřování podpory pro programovací jazyky, jejichž prostřednictvím lze pro GPU akcelerátory NVIDIA vyvíjet aplikace. Zdaleka nejvyužívanější platformou je přímo výrobcem čipů Tesla dlouhodobě rozvíjená CUDA, která umožňuje vývoj algoritmů v jazycích C a Fortran, v nejnovější verzi též C++. Samostatnými programovacími jazyky, které vznikly specificky pro výpočetní problematiku, jsou pak OpenCL, podporující běh výsledných aplikací na procesorech a grafických kartách zároveň, a DirectCompute, součást rozhraní Microsoft DirectX 11. Přímo pro výpočetní GPU byla také již portována většina nejvyužívanějších matematických knihoven jako LAPACK, BLAS, FFT nebo specializovaných algoritmů, například Amber a Gromacs v případě molekulární dynamiky nebo CFD algoritmy. Zároveň s představením architektury Fermi pak uvedla společnost NVIDIA na trh nástroj Nexus ve formě pluginu do programu Microsoft Visual Studio, nejrozšířenějšího vývojového prostředí na platformě Windows, který významně usnadní vývoj GPU aplikací a jejich ladění. Významným usnadněním přenosu již vyvinutých aplikací a algoritmů na grafické akcelerátory jsou i specializované kompilátory jako PGI Accelerator od společnosti Portland Group, které automaticky analyzují kód například v jazyce Fortran nebo C a přeloží jeho části vhodné pro vysoce paralelní zpracování do podoby spustitelné přímo na GPU.
Podpora výpočetních grafických karet NVIDIA Tesla byla již začleněna do mnoha komerčních softwarových produktů, jak formou pluginů – například toolbox Jacket od společnosti AccelerEyes pro program Matlab od MathWorks, tak v podobě nativní podpory – například program Mathematica od společnosti Wolfram. Mnoho dalších výrobců softwaru podporu pro GPU vyvíjí pro vydání nových verzí v roce 2010.

GPU computing v Čechách

V České republice bylo do roku 2008, podobně jako ve světě, výpočetní využití grafických karet omezeno na několik málo univerzitních a akademických týmů, experimentujících s přicházející technologií a jejím využitím ve svém oboru. Po rozšíření High Performance Computing aktivit společnosti NVIDIA v Evropě a ustanovení společnosti Sprinx Systems (známé též v souvislosti s českým superpočítačem Amálka a spoluprací na projektech Evropské kosmické agentury) výhradním dodavatelem GPU výpočetních karet Tesla v regionu můžeme s jistým odstupem za USA, západní Evropou a Japonskem sledovat výrazný nástup odborného zájmu o tyto technologie i mimo akademickou oblast. Mnoho pracovišť na českých univerzitách a v Akademii věd ČR dnes již systémy vybavené výpočetními kartami NVIDIA Tesla běžně využívá při složitých výzkumech a vývoji, stejně jako specialisté ve společnostech řešících v různých oborech náročné simulace, modely nebo například interakce částic. V následujících dvou až třech letech se předpokládá pokračující nárůst využití GPU akcelerátorů ve všech výpočetně náročných oblastech, zejména formou tzv. hybridních GPU – CPU pracovních stanic a clusterů na úkor klasických čistě procesorových systémů.

Autor pracuje ve společnosti Sprinx Systems na pozici vedoucího divize HPC.
adam.vele@sprinx.cz