SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ
TITAN / HOPPER / NOTEBOOK TITAN
HOPPER
NOTEBOOK
Počet CPU jader
299 008
153 216
2
Operační paměť [GB]
598 016
217 000
8
Počet GPU (CUDA) jader
50 233 344
0
8
Diskový prostor [TB]
10 000
2 000
0,256
Propustnost I/O [GB/s]
240
35
0,160
Výkon [GFLOPS]
≈ 20 000 000
≈ 1 000 000
≈2
Příkon [kW]
8 200 30 000
2 910
0,028
„Účinnost“ [GFLOPS/kW]
2439
343
71
Plocha [m2]
404
0,09
Cena [USD]
≈ 100 000 000
1 500
http://www.top500.org
SUPERPOČÍTAČ (masivně paralelní systém) • Svazek počítačů propojených pomocí sítě – výpočetní uzly (10-10000+)
• Sdílený diskový prostor (storage) • Běhové prostředí (runtime environment) – přihlašování uživatelů, spouštění výpočetních úloh
VÝPOČETNÍ UZLY • Z pohledu uživatele: obyčejný počítač – – – –
základní deska procesory (typicky 8-24 jader / uzel) fyzická (operační) paměť – sdílená (typicky 1-2 GB / jádro) GPU (matematický koprocesor)
• Sdílené diskové prostory – domovské adresáře, aplikace, data
• Serverový hardware – spolehlivost, účinnost (chlazení), …
• Speciální sítě – nízká latence, vysoká propustnost, různé topologie (PAR)
VZDÁLENÝ PŘÍSTUP
• vzdálená plocha příkazová řádka (SSH) • unixové operační systémy (Linux) • komfortní programy základní programy/příkazy – cat, ls, cp, mv, grep, tar, gzip, vim, make, …
• lokální perirefie odezva na vstupy (latence) • přístup na výpočetní uzly přihlašovací uzly (login nodes) – prostředí pro spouštění paralelních úloh
SPOUŠTĚNÍ ÚLOH 1. Nahrání zdrojového kódu 2. Nastavení prostředí – překladače, výpočetní knihovny, paralelní knihovny, …
3. 4. 5. 6.
Překlad zdrojového kódu Nahrání vstupních dat Spuštění úlohy Získání výsledků
NAHRÁNÍ ZDROJOVÉHO KÓDU • •
vytvoření archivu (tar) kopírování na superpočítač (ssh/scp)
•
přihlášení na superpočítač (ssh) nastavení SSH klíčů
•
rozbalení archivu (tar)
• Aplikace paraperm – vývoj na notebooku (v Linuxové virtuální mašině) – paralelní generování velkých náhodných permutací celých čísel – paralelní programovací model MPI (nezávislé procesy, lokální paměť, komunikace pomocí posílání zpráv)
NASTAVENÍ PROSTŘEDÍ / PŘEKLAD • •
volba GNU překladačů CC: zástupce pro MPI verzi překladače
•
knihovna BOOST
•
překlad
SPUŠTĚNÍ ÚLOHY
• paralelní spuštění MPI úlohy: mpirun aprun (CRAY) • nacházíme se na výpočetním přihlašovacím uzlu • sdílení superpočítače více uživateli přímé spouštění úloh systém pro spouštění úloh
SYSTÉM PRO ŘÍZENÍ ÚLOH (JOB SCHEDULING) • Portable Batch System (PBS) – přímé spouštění úloh zařazení do fronty úloh
• Spouštěcí skript: – požadavky na zdroje (počet jader, paměť, čas, licence) – notifikace uživatele (e-mail) – příkaz pro vlastní spuštění úlohy
• Příkazy: – qsub: zařazení úlohy do fronty – qstat: stav úloh ve frontách – showstart: přibližný čas spuštění
SPUŠTĚNÍ ÚLOHY (pokračování) • • • • • • • • •
specifikace fronty úloh (více front v systému) požadavek na 1024 CPU jader maximální čas úlohy 30 vteřin notifikace e-mailem (abort / begin / end) specifikace názvu úlohy specifikace proměnných prostředí nastavení pracovního adresář příkaz pro vlastní spuštění úlohy (aprun) vložení úlohy do fronty (qsub)
ZÍSKÁNÍ VÝSLEDKŮ
PŘÍSTUP NA SUPERPOČÍTAČE • Grantové soutěže o procesorové hodiny – často pouze pro lokální instituce/projekty velké superpočítače = zahraniční spolupráce náš případ: katedra fyziky LSU
– omezený fond procesorových hodin pro výpočty – přihláška: popis výzkumu, přínos, předpokládané výsledky prokázání škálovatelnosti paralelní aplikace využití GPU (Titan)
IT4INNOVATIONS
3200 jader, 4 GB / jádro
IT4INNOVATIONS – PŘIHLÁŠKA • Popular abstract (outline of proposed research) • Scientific readiness – Aims and objectives – Methods and state-of-the-art – Imapct and outlooks
• Computational readiness – Computational approach, parallelization and scalability – Computational resources
• Economic readiness (optional) – Economic value – Operational costs – Amortization and renewal
• References • (rozsah cca. 5 stránek)
OMEZENÝ POČET PROCESOROVÝCH HODIN • Příklad: Hopper (153k jader) – roční fond projektu 2 500 000 celý superpočítač: cca. 16 hodin (/ 0,6)
– roční fond uživatele 25 000 (1%) 1 000 jader 25 hodin 80 000 jader 19 minut
• Důsledky: – Požadavky na zdroje: • čím více tím nižší priorita • čím méně tím větší riziko, že úloha bude násilně ukončena
– Minimalizace chyb: • lokální vývoj a testování • reálné výpočty nejprve na menších superpočítačích a menším počtu jader • chyby: kód, algoritmus, návrh, úvaha, neznalost, nezkušenost, …
– Analýza výsledků a chování programů • pokud je něco špatně, proč???
VÝZKUM: PROBLÉM • Fyzikální aplikace (LSU) • Paralelní programovací model: MPI • Dvě fáze: 1. konstrukce (řídké) matice 2. výpočet vlastních čísel a vektorů
• Problém: – pro generování maticových elementů jsou potřeba databáze fyzikálních koeficientů, která zaplní skoro celou paměť – maticové elementy není kam ukládat – omezení velikosti matice = řešeného problému
paměť MPI procesu:
fyzikální koeficienty
ŘEŠENÍ #1 1. 2. 3. 4.
Ukládání maticových elementů do souborů Uvolnění paměti zabrané fyzikálními koeficienty Načtení maticových elementů ze souborů Výpočet vlastních čísel / vektorů
fyzikální koeficienty
maticové elementy
maticové elementy
maticové elementy
NOVÝ PROBLÉM • Čas potřebný k uložení dat do souboru? • Příklad: – Hopper: paměť 1,33 GB / jádro (= MPI proces) – každý MPI process ukládá cca. 1 GB dat (maticové elementy) – maximální propustnost souborového systému 35 GB/s (reálná cca. 23) – malá úloha: 1 000 MPI procesů 29 vteřin – velká úloha: 130 000 MPI procesů 62 minut
• Čas k uložení dat na souborový systém určuje jeho propustnost připadající na 1 jádro (MPI proces)! TITAN
HOPPER
NOTEBOOK
Počet CPU jader
299 008
153 216
2
Propustnost I/O [MB/s]
240 000
35 000
160
Propustnost / jádro [MB/s]
0,80
0,22
80
FORMÁTY PŘO ŘÍDKÉ MATICE • Speciální datové struktury pro uložení řídkých matic • Nejjednodušší: souřadnicový formát (COO) – tři pole: řádkové/sloupcové indexy a hodnoty nenulových maticových elementů – příliš velká paměťová náročnost
• Standardní optimalizační kritérium pro návrh formátů: maximální výkon operace násobení matice vektorem • Naše kritérium (ukládání do souborů): minimalizace paměťových nároků • Vývoj nových formátů (ABHSF, …)
VÝSLEDKY (ABHSF FORMÁT) • CSR – velmi rozšířený formát, velikost cca. 1,4 větší oproti ABHSF • ABHSF – pro velké výpočty může ušetřit řádově desítky minut (tisíce procesorových hodin) • reálné matice
VÝSLEDKY (ABHSF FORMÁT) • Kdy se vyplatí ukládat matice v ABHSF? – ABHSF: ukládání menšího množství dat – overhead: konverze z CSR do ABHSF – měření: celková propustnost souborového systému 100-200 MB/s ABHSF výhodnější pro více než 32 procesorů (jader) o cca. 4 MB/s na processor
ŘEŠENÍ #2 • Hopper: výpočetní uzel: 24 jader, 32 GB paměti • MPI: 24 fyzikální koeficienty, z nichž mnohé jsou stejné • Využití sdílené paměti v rámci uzlů: hybridní paralelní programovací model MPI/OpenMP – jeden MPI proces / uzel + rozdělení na 24 vláken (OpenMP)
• Není nutné ukládat data do souborů! 24 MPI procesů / uzel (1,33 GB / proces):
fyzikální fyzikální fyzikální koeficienty koeficienty koeficienty (1 GB) (1 GB)
MPI/OpenMP: 1 MPI proces 24 OpenMP vláken
fyzikální koeficienty ( 4 GB)
maticové elemetny
NOVÝ PROBLÉM • Databáze fyzikálních koeficientů: LRU cache – datová struktura se modifikuje při přidání nových dat, ale i při jejich čtení! – sdílená paměť: zámky – primitivní přístup: zámek na každou operaci čtení/zápisu struktury čekání v cca. 80% případů na uvolnění zámku – potřeba nové implementace LRU cache pracující efektivně nad sdílenou pamětí
PARALELNÍ GENEROVÁNÍ NÁHODNÝCH PERMUTACÍ • Různé superpočítače • Hopper: – pro velké výpočty dochází k nasycení komunikační sítě – největší vypočet: 241 = 2 199 023 255 552 prvků permutace
• Zewura:
– výpočetní uzly: 80 jader problém přístupu do pamětí pro větší počet jader najednou – pouze ethernet (1 Gb)
AERODYNAMIKA (VZLÚ)