Superpočítání pro průmysl www.it4i.cz

Paralelní programování

Výpočetní prostředky během posledních 50-ti let zaznamenaly obrovský rozvoj. Naši otcové ještě běžně používali tabulky, logaritmická pravítka, mechanické kalkulátory a v lepším případě elektronické kalkulačky, ti mladší se pak mohli setkat s prvními počítači na jejich pracovním stole.

Ne každý počítač se však vejde na pracovní stůl, některé potřebují celou místnost a jsou na světě i takové, které zaplní basketbalové hřiště. Superpočítače, jak jsou tito obři výpočetního světa nazýváni (mimochodem ještě nedávno byl nejvýkonějším počítačem světa stroj jménem „Titan“, viz Top500), jsou postaveny z tisíců „obyčejných“ počítačů, nazývaných uzlů, které se díky extrémně rychlé počítačové síti tváří jako jeden celek.

Dne 24. května 2013 byl symbolicky spuštěn provoz našeho prvního superpočítače, který dostal jméno ANSELM poprvní šachtě na Ostravsku. Tomu předcházely déle než měsíc trvající náročné zatěžkávací testy, které prověřily výkonnostní a provozní parametry superpočítače. Bližší informace o výpočetních prostředcích Centra excelence IT4Innovations a o jejich využití naleznete na stránce https://support.it4i.cz/docs/anselm-cluster-documentation/.

Superpočítače však nejsou doménou pouze superpočítačových center. Technologií, ať už hardwarových nebo softwarových, vzniklých při jejich vývoji, dnes využíváme všichni. Jako první příklad uveďme dnešní více-jádrové procesory. Jejich potenciálu lze plně využít pouze tehdy, použijeme-li paralelní programovací model se sdílenou pamětí a programovací jazyk včetně kompilátoru tento model podporující.

Jako druhý příklad uveďme grafické akcelerátory (GPU), které dnes pohánějí nejvýkonnější počítače světa. Pokud se podíváme zpět do roku 1997, tak nejvýkonnější sálový superpočítač (ASCI Red), byl díky svým téměř 10000 jednojádrovým procesorům schopen vykonat 1012 operací za sekundu. O necelých patnáct let později si každý z nás může v obchodě koupit grafický akcelerátor s více než 3000 procesorovými jádry disponující obdobným výpočetním výkonem a použít jej ve své pracovní stanici k řešení výpočetně náročných vědeckých nebo inženýrských problémů. To, co mají tyto dvě technologie společné, je počet paralelních výpočetních jednotek v řádech tisíců. Tyto vysoké počty ovšem nutí uživatele hledat algoritmy dovolující takto vysoký stupeň paralelizace za účelem jejich efektivního využití.

Pokud se podíváme na paralelní programovaní pro dnešní superpočítače, musíme vzít v potaz několik stupňů paralelizace:

Pro každý stupeň je třeba:

Toto činí efektivní paralelní programování velice složitým. Nicméně právě efektivita je klíčem k úspěchu.

Rozvoj a hlavně úspěch superpočítačů je úzce spojen s vývojem efektivních metod, které je dokážou plně využít. Paralelismus přinesl zcela nový pohled na algoritmy a jejich efektivitu – algoritmus efektivní pro sekvenční zpracování je mnohdy neefektivní pro zpracování paralelní a naopak, algoritmus pro sekvenční systém zcela nepoužitelný, může být na paralelním počítači velice efektivní. Efektivita metody se navíc může velmi lišit na různých paralelních architekturách.

Co nám tedy paralelní počítání nabízí? Řešit:

Závislosti výpočetního času daného algoritmu na počtu použitých výpočetních jader se říká „paralelní škálovatelnost“. Ta bývá často potlačena zvětšováním řešené úlohy. Výsadou těch nejlepších algoritmů je nezávislost počtu kroků vedoucích k nalezení řešení na velikosti úlohy – této vlastnosti říkáme „numerická škálovatelnost“. Efektivním algoritmem tedy budeme rozumět takový, který je jak paralelně tak numericky škálovatelný a často jej budeme nazývat jen „škálovatelným algoritmem“.

Naše pracoviště se dlouhodobě zabývá vývojem a implementací takovýchto algoritmů, konkrétně metodami rozložení oblastí založenými na metodě konečných a hraničních prvků (viz Základní výzkum) a jejich použitím k řešení rozsáhlých inženýrských úloh (viz Portfolio). Zmíněné algoritmy byly rovněž implementovány do některých námi vyvíjených knihoven (viz Produkty).

Partneři