C.5 Paralelizace výpočetních algoritmů
Pro urychlení a často dokonce i pro samotné umožnění výpočtu velmi rozsáhlých (jednorozměrných nebo vícerozměrných)
algoritmů (kódů) je nezbytné tyto algoritmy paralelizovat, tj. rozdělit je na více oddílů (procesů) souběžně (paralelně) počítatelných na odpovídajícím počtu
strojových procesorů. Principem paralelizace je tedy rozdělit celkovou prostorovou výpočetní oblast
(viz například obrázek ) na množství separátních výpočetních oblastí, ranků (ranks). Tyto ranky lze, v závislosti na povaze problému,
počítat buď zcela samostatně, nebo, pokud je nutná vzájemná komunikace
na styku těchto ranků
(například při hydrodynamických výpočtech, kde je nutná návaznost na okrajové podmínky na hranicích celé výpočetní oblasti,
jsou na hranicích ranků předávány informace o hodnotách výpočtů v sousedním ranku). Tato meziranková komunikace
přitom nepůsobí
žádné zásadní zpomalení výpočtu.
Existuje řada specializovaných knihoven pro tvorbu paralelních algoritmů, asi nejrozšířenější z nich je knihovna MPI (Message-Passing Interface), včetně několika podtypů,
vytvořená skupinou výzkumných a vývojových pracovníků
z akademické a průmyslové sféry pro široké využití na paralelně řazených počítačích.
Oficiální zdroj knihovny včetně programovacích manuálů je na webové stránce http://www.mpi-forum.org/, pro úvodní seznámení se s knihovnou i s technikami
paralelního programování doporučuji skripta Lísal (2007), pro podrobnější studium manuál Pacheco (1998). Knihovna je naprogramována
pro přesun dat z jednoho procesu do jiného procesu pomocí kooperativních operací v každém procesu (tzv. point-to-point komunikace mezi dvěma procesy).
Hlavním smyslem používání metod paralelního programování je významné urychlení výpočtů jak v případě zcela samostatně pracujících ranků, tak
v případech, kdy je nutná vzájemná hraniční send and receive
komunikace. Často je výpočet na jednom procesoru dokonce neproveditelný, v případě, že binární soubor indikuje
neúměrně rozsáhlý výpočetní proces, nelze zdrojový soubor vůbec zkompilovat.
Knihovna MPI je vyvinutá pro různé programovací jazyky, jako jsou Fortran, C, C++, Python a Java, mohou zde být ovšem velké dílčí rozdíly v organizaci výpočtu
(například rozdílné pořadí zahrnování prostorových buněk při dvourozměrném paralelním výpočtu v případě jazyka Fortran, kdy výpočet
běží
v rámci každého ranku nejprve ve vertikálním
směru, zatímco v případě jazyka C výpočet běží
vždy nejprve horizontálně
).
Protože se v současnosti jedná již o velmi rozsáhlou a specializovanou disciplínu, nebudeme zde detailněji popisovat techniky paralelního programování.
V rámci počítačových volně vázaných seskupení (počítačových clusterů), pracujících v České republice, lze standardně docílit současné zapojení až několika stovek procesů. Dostupnými a výkonnými počítačovými clustery například jsou:
-
METACENTRUM, což je virtuální organizace, která řídí a distribuuje výpočetní infrastrukturu spolupracujících akademických a univerzitních center. Výpočetní a paměťová zařízení jsou spravována v rámci projektu
Czech National Grid Infrastructure
, který je součástí projektuProjects of Large Infrastructure for Research, Development, and Innovations
(LM2010005).Součástí počítačového clusteru METACENTRUM jsou: výpočetní centrum Masarykovy univerzity v Brně (centrum CERIT-SC, Loschmidt Laboratories – pracoviště Ústavu experimentální biologie PřF MU a NCBR – Národní centrum pro výzkum biomolekul, PřF MU), výpočetní centrum Západočeské univerzity v Plzni (KIV – Katedra informatiky a výpočetní techniky FAV ZČU, KMA a KKY – Katedra matematiky a Katedra kybernetiky FAV ZČU), výpočetní centrum Jihočeské univerzity vČeských Budějovicích (Přírodovědecká fakulta JU), výpočetní centrum Akademie věd ČR, výpočetní centrum Katedry telekomunikační techniky FEL ČVUT v Praze, atd., zastřešující organizací je e-infrastruktura pro vědu, výzkum a vzdělávání CESNET z.s.p.o.
Celkové parametry a výkon clusteru převyšují 10 000 CPU počítačových jader (desítky TB operační paměti RAM) a s paměťovou kapacitou cca 1 PB (1 063 TB) pro operační data a cca 19 PB (19 000 TB) prostoru pro ukládání dat. Oficiální webovou stránkou je http://metavo.metacentrum.cz/.
-
Počítačový cluster ANSELM (národní superpočítačové centrum, VŠB – Technická univerzita Ostrava), který sestává z celkem 3 344 počítačových jader CPU (15 TB operační paměti RAM). Oficiální webovou stránkou je http://www.it4i.cz/
-
V současnosti je již k dispozici uživatelům nový počítačový cluster SALOMON (národní superpočítačové centrum, VŠB – Technická univerzita Ostrava), který je dle žebříčku TOP 500 oficiálně 40. nejvýkonnějším superpočítačem na světě! Současné parametry: 24 192 jader CPU Intel Xeon (Haswell-EP), 129 TB operační paměti RAM, 52 704 jader akceleračních koprocesorů Intel Xeon Phi s 13,8 TB RAM, 2 PFLOP/s maximální výpočetní výkon, 2 PB diskové kapacity a 3 PB zálohovací páskové kapacity. Oficiální webovou stránkou je http://www.it4i.cz/.