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 [m 2 ] 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. Překlad zdrojového kódu 4. Nahrání vstupních dat 5. Spuštění úlohy 6. 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. Ukládání maticových elementů do souborů 2. Uvolnění paměti zabrané fyzikálními koeficienty 3. Načtení maticových elementů ze souborů 4. 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): MPI/OpenMP: 1 MPI proces 24 OpenMP vláken fyzikální fyzikální koeficienty koeficienty (1 GB) (1 GB) 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: 2 41 = 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Ú)