Historie specializovaných grafických procesorů (GPU, Graphics Processing Unit) se táhne daleko do minulosti počítačů. V počítačové době kamenné šlo o speciální integrovaný obvod, který v mikropočítači řešil základní funkce 2D zobrazování – zejména algoritmické výpočty související s vykreslováním matematicky popsaných křivek a vykreslování bitmap. Postupem času, tak jak rostl výkon, rozlišení, množství barev a další parametry zobrazování informací, se GPU vyvinuly do zcela speciální podoby: vznikly komplexní grafické procesory s obrovským počtem jednoduchých jader, sloužících pro provádění relativně jednoduchých matematických výpočtů, jež je možné využívat paralelně. Díky tomu, je GPU schopno dopočítat podobu obrazu popsaného mnoha matematickými křivkami v 3D, ve vysokém rozlišení a v mnoha barvách. Složitost scény (resp. množství do scény zapojených křivek/obrazců) pak ovlivňuje rychlost zpracování obrazu na daném GPU – a s rostoucí složitostí tak neustále roste i výkon nových a nových GPU.

 

Vysoký výkon moderních GPU obsahujících velký počet aritmeticko-logických jednotek (ALU) se stal poměrně rychle lákadlem i pro programátory, kteří řeší jiné než grafické úlohy. Masivního paralelismu zpracování dat v GPU lze totiž s výhodou využít v široké škále aplikací, mezi něž patří například strojové učení, kryptografické výpočty, analýzy velkých objemů konzistentních dat, simulace z oblasti fyziky, biologie i dalších oborů, kódování videa nebo výpočty vizuálních efektů. Programování GPU patří mezi relativně složité obory, které vyžadují velkou odbornost. Vezmeme-li však v úvahu, že standardně CPU disponuje jednou ALU jednotkou v rámci každého svého jádra, je i běžná GPU vybavená více než 2000 ALU jednotkami (jádry) v obrovské výhodě. A ty nejdražší GPU dnes disponují i více než 4000 ALU jednotek. Pro srovnání: ty nejdražší CPU dnes disponují 32 jádry.

 

GPU místo CPU

První vážnější experimenty s využitím grafických procesorů pro obecné výpočetní účely se datují k počátkům tohoto století a lze bez váhání konstatovat, že od té doby urazily velký kus cesty. Rychle se zrodil se termín GPGPU (General-Purpose computing on Graphics Processing Units), který je do značné míry samovysvětlující a jen opisuje to, co již bylo zmíněno výše: jde o využití grafických procesorů pro obecné výpočetní úkoly.

Významnou roli v rozšíření zájmu o GPGPU sehrála architektura CUDA (původně akronym slov Compute Unified Device Architecture) společnosti NVIDIA. Tato softwarová vrstva poskytla vývojářům přímý přístup k virtuální sadě instrukcí GPU a k jejím jádrům, což umožnilo na grafických procesorech snadno provozovat programy napsané ve vyšších programovacích jazycích, jako jsou C/C++ nebo Fortran.

Novou vlnu zájmu o využití GPU pak přitáhly moderní aplikace, které dokáží těžit z paralelního zpracování velkých objemů dat, přičemž zřejmě nejvíce se tu hovoří o umělé inteligenci. Příkladem tedy budiž strojové učení, o kterém se v posledních letech hodně mluví jako o technologii, která má potenciál zásadně proměnit fungování světa. Pro něj jsou klasické CPU málo výkonné, resp. nenabízejí dobrý poměr cena/výkon. Grafické procesory jsou vzhledem ke své architektuře pro tento typ úloh daleko vhodnější, protože jsou v nich díky podpoře masivně paralelních výpočtů násobně rychlejší. Podle způsobu využití lze zhruba odhadnout, že při srovnatelných nákladech bude výkon systému využívajícího GPU několikanásobný–a v mnoha případech řádově vyšší– oproti systému využívajícímu pouze CPU. Není výjimečné, že hodinové úlohy strojového učení na GPU jsou pro CPU otázkou i mnoha týdnů.

 

Využití GPU v praxi

Vysoký výkon a výrazně lepší poměr cena/výkon GPGPU ve zmiňovaném typu úloh nyní nabízí možnost řešit i velmi komplexní problémy rychleji, přesněji a levněji, než by tomu bylo na klasické infrastruktuře. Nově se tak vyplatí i projekty, které by dříve byly neefektivní.

Některé z nich zmiňujeme již výše, ale aplikací, které s výhodou využívají faktu, že jsou GPU schopny rychlé realizace vybraných instrukcí paralelně nad velkou datovou sadou, je daleko více. Již zmiňované projekty umělé inteligence patří mezi v současnosti běžné scénáře využití GPGPU, stejně jako nejrůznější vizualizace, zpracování rozsáhlých databází, různé simulace a obecně aplikace z oblasti HPC (High Performance Computing). Zcela konkrétně pak jde třeba o využití strojového učení v oblasti výzkumu léčby rakoviny, výpočty týkající se fyziky plazmatu, analýzy v oblasti cryo-mikroskopie, zpracování dat z chytrých měst i o řadu dalších.

 

GPU cloud

S rostoucí poptávkou po efektivním provozování výše zmíněných typů aplikací roste pochopitelně zájem o GPGPU a o příslušnou infrastrukturu. A právě zde se protínají cesty GPGPU a cloudu, protože pro řadu uživatelů je vhodnější si příslušnou infrastrukturu nikoli pořídit, ale pronajmout. Na tento fakt reagují poskytovatelé cloudových služeb, kteří postupně začínají nabízet i cloudovou infrastrukturu s podporou GPGPU.

Stejně jako v případě klasické infrastruktury i GPU v cloudu přinášejí významné finanční úspory, protože lze při stejných nákladech dosáhnout výrazně vyššího výkonu zmiňovaného typu aplikací. K tomu se přidávají klasické výhody cloudu, tedy možnost provozovat vlastní aplikace na pronajaté infrastruktuře s výkonem na vyžádání–tedy i s náklady odpovídajícími objemu prováděných výpočtů, a to vše bez nutnosti zabývat se její správou.

Nejde však o jediné důvody využití GPGPU v cloudu. GPU v cloudu jsou typicky integrovány s další cloudovou infrastrukturou poskytovatele, což zefektivňuje jak samotné zpracování dat, tak správu využívaného řešení. Data z mnoha současných aplikací tečou přímo do cloudu, nicméně jejich zpracování dosud mnohdy probíhalo mimo cloud–na výkonných strojích s GPU. To se s příchodem GPU cloudu mění, protože i náročné výpočty lze nyní efektivně provádět přímo v cloudu.

Dodejme, že poskytovatelé cloudových služeb mnohdy nabízejí nejen samotné instance s podporou GPU, ale také katalog softwarových nástrojů s podporou výpočtů v grafických procesorech, které pak lze v jejich cloudu snadno spustit. Typicky kontejnerizované aplikace jsou přitom vyladěné pro nasazení v příslušném cloudu a uživatel se může spolehnout, že i navázaná infrastruktura odpovídá požadavkům příslušné aplikace.

 

Nový GPU cloud v České republice

V České republice právě nyní přichází s nabídkou GPU cloudu společnost České Radiokomunikace (CRA). Na trh uvádí službu typu BareMetal as a Service (BMaaS), v jejímž rámci je k dispozici i instance s GPU.

Jak novinka funguje? Zákazník si objedná službu BMaaS, čímž získá přístup k vyhrazené instanci platformy. Správu služeb si provádí z jednotného webového prostředí poskytovaného pro Media Cloud Infrastructure (MCI), přičemž tu podle poskytovatele lze využít i shodný mechanismus automatického zřizování služeb. BMaaS se tedy stává integrovaným prvkem MCI.

Konkrétní využití instance, stejně jako doba jejího užívání, zcela závisí na potřebách klienta a je v jeho režii. Systémy jsou přitom součástí definovaného síťového cloudového prostředí, je tedy možné je dále kombinovat se systémy služeb Media Cloud Infrastructure (MCI) či Business Cloud a vytvořit tak hybridní prostředí z různých prostředků a s různými SLA. Tím lze dosáhnout nejen požadované funkčnosti, ale především vysoké efektivity výsledného IT prostředí.

Jako příklad využití nových služeb s GPU cloudem lze uvést provozování výkonného webu s video obsahem, který může běžet na platformě MCI, ale z výkonnostních důvodů bude jeho součástí jedna instance BMaaS s GPU zajišťující kódování videa v reálném čase. Přitom není nutné zajišťovat jakoukoli integraci systému, protože obě platformy jsou již na takové využití připravené.

Představitelé CRA očekávají, že novou službu ocení zejména zákazníci ze sféry AI, BigData či speciálních vědeckých aplikací, a to jak pro krátkodobé užití, tak i pro to dlouhodobé. Významnou výhodou uvedeného řešení je fakt, že je služba součástí ostatních cloudových služeb poskytovatele, takže lze nakombinovat přesně takovou podobu infrastruktury, jakou zákazník pro řešené úlohy potřebuje. Výhodou je rovněž okamžité zřízení služby BMaaS.

 

Petr Mandík