1 / 38

Paralelné algoritmy

Paralelné algoritmy. Informácie o predmete. Klasifikovaný zápočet 6 kreditov Prednášajúci: Ing. Róbert Čunderlík, PhD. Cvičiaci: Ing. Róbert Špir (spir@math.sk). CFD - computational fluid dynamics, modely turbulencií, modely šírenia požiarov modelovanie globálnych zmien počasia

velvet
Download Presentation

Paralelné algoritmy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Paralelné algoritmy

  2. Informácie o predmete • Klasifikovaný zápočet • 6 kreditov • Prednášajúci: • Ing. Róbert Čunderlík, PhD. • Cvičiaci: • Ing. Róbert Špir (spir@math.sk)

  3. CFD - computational fluid dynamics, modely turbulencií, • modely šírenia požiarov • modelovanie globálnych zmien počasia • supravodivosť, jadrové a termojadrové reakcie • biológia, spracovanie genómov, tzv. protein folding • chémia, modelovanie chemických väzieb • medicína, spracovanie medicínskych dát • správa veľkých databáz • obsluha veľkého počtu transakcií • ... Úvod do paralelnéhoprogramovania Výpočtovo náročné úlohy:  snaha zefektívniť časovo/pamäťovo náročné výpočty  využitie paralelných počítačov (súbežné vykonanie elementárnych úkonov)

  4. Paralelné počítače: (Von Neumannova architektúra) Architektúra paralelných počítačov Sekvenčné počítače: Definícia: paralelná architektúra je taká, ktorá obsahuje viac jednotiek na spracovanie dát (PU)

  5. Processors Arrays • Multiprocesory (spoločné adresové pole) • nesymetrické multiprocesory • symetrické multiprocesory • Klaster (nemá spoločné adresové pole) • Grid • niekoľko uzlov (aj bežné PC) • GPU – graphical processing unit • - 100-800 PU (nVidia, ATI) Architektúra paralelných počítačov Príklady paralelných architektúr: podrobnejšie napr. na: http://kmlinux.fjfi.cvut.cz/~oberhtom/

  6. sprostredkováva komunikáciu medzi výpočtovými jednotkami • (prístup do globálnej pamäte pomalý) Architektúra paralelných počítačov • Lokálna pamäť: • výpočtové jednotky ich používajú vo chvíli, keď vykonávajú výpočty nezávislé na ostatných (rýchlejší prístup) • vo všetkých paralelných architektúrach Globálna pamäť: • lokálna pamäť môže byť: • operačná pamäť výpočtového uzla v prípade klastru alebo gridu • cache pamäť v prípade viac-procesorových systémov • register v prípade vektorových architektúr (MMX, SSE, AVX, GPU) • ...

  7. Processor arrays – pole procesorov Zloženie: • Front-end computer – plnohodnotný počítač (CPU priamy prístup do lokálnych pamätí) • niekoľko jednoduchých, synchronizovaných výpočtových jednotiek s malou lok. pam. • (v minulosti lacnejšia cesta – dnes sa už upúšťa)

  8. niekoľko plnohodnotných procesorov • zdieľané pamäte (rovnaké adresy u dvoch rôznych CPU ukazujú na rovnaké miesto v pamäti) • nezdieľané pamäte (nezávislý adresový priestor u rôznych CPU) Multiprocesorové architektúry Delenie: • podľa typu pamäte (zdieľaná alebo distribuovaná) • podľa „zdieľatelnosti“ adresového priestoru Zloženie:

  9. SMP – Symetric Multiprocessor Charakteristika: • obsahujú fyzicky zdieľanú pamäť  každý procesor (výpočtová jednotka) má do nej rovnako rýchly prístup  tzv. UMA architektúra (Uniform Memory Access) • rovnaká adresa na rôznych procesoroch ukazuje na rovnakú fyzickú pamäťovú bunku • každý procesor má svoju cache pamäť (môže mať aj viac úrovní), kt. býva omnoho rýchlejšia  ale nie je prístupná ostatným procesorom • (príkladom sú aj bežné viac-jadrové procesory)  na vývoj sa často používa rozhranie OpenMP

  10. podobný hardvérový model ako SMP, ale so zdieľaných adresovým priestorom s použitím „hardware/software directory-based protocol“, ktorý udržuje „cache coherency“ na procesoroch • súbor všetkých lokálnych pamätí jednotlivých CPU tvorí jeden logický adresový priestor • každý procesor má rýchly prístup do vlastnej pamäte, no veľmi pomalý prístup do cudzej pamäte  preto NUMA architektúra • rovnaká adresa na rôznych procesoroch ukazuje na rovnakú fyzickú pamäťovú bunku • (napr. jednotlivé servre vo výpočtovom centre na KMaDG) NUMA – Non-Uniform Memory Access Charakteristika:

  11. MPP – Massively Parallel Processor Charakteristika: • obsahujú uzly (nodes) pospájané vysokorýchlostnou sieťou • každý uzol má svoj procesor, pamäť aj I/O jednotku  distribuovaná pamäť • operačný systém beží na každom uzle • počet uzlov nemusí byť veľký, no každý uzol môže predstavovať aj SMP alebo NUMA uzol  preto „massivelly“ (napr. klaster Embryo na KMaDG)  na vývoj sa často používa štandard MPI (Message Passing Interface)

  12. Model: IBM pSeries 575Architecture: IBM P6-575 Infiniband ClusterProcessor Type: IBM Power6, 4.7 GHzComputing Cores: 5376Computing Nodes: 168RAM: 21 TB (128 GB/node)Internal Network: Infiniband x4 DDRDisk Space: 1.2 PBOperating System: AIX 6Peak Performance: 101 TFlop/sAvailable compilers: Fortran90, C, C++Parallel libraries: MPI, OpenMP, LAPI In November 2009 IBM pSeries 575 has been ranked 61-thin TOP500 In June 2010 IBM pSeries 575 has been ranked 70-th in TOP500 In November 2010 IBM pSeries 575 has been ranked 95th in TOP500 Príklad: Supercomputer IBM SP6 (CINECA, Italy) Charakteristika: www.top500.org

  13. spájanie aj bežných PC s cieľom zvýšiť efektívnosť výpočtov • väčšinou realizácia sekvenčných programov, no aj paralelné výpočty (MPI) GRID computing • v rámci Európy: DataGrid (2002 – 2004) EGEE I, II, III (2004 – 2010) www.egi.eu EGI – European Grid Infrastruction(from 8 Feb 2010) • na Slovensku: SlovakGrid • univerzitné (akademické) gridy

  14. výpočty na grafických kartách  výrazné zrýchlenie (aj 10-20-krát) • obmedzenie na pamäť (6GB) GPU computing CUDA(Compute Unified Device Architecture) - a parallel computing architecture developed by NVIDIA OpenCL (Open Computing Language) - otvorený multiplatformový štandard DirectCompute - API vytvorené spoločnosťou Microsoft

  15. Amdahlov zákon Hovorí, že ak P je pomer programu, ktorý sa dá paralelizovať a (P – 1) je pomer, ktorý je sériový, potom maximálne zrýchlenie, ktoré sa dá dosiahnuť je N – počet procesorov

  16. Gustafsonov zákon Hovorí, že s využitím vyššieho výpočtového výkonu môžeme za rovnaký čas vyriešiť rozsiahlejší problém N – počet procesorov α– pomer programu ktorý sa nedá paralelizovať

  17. využiť dostupné procesory a znížiť výpočtový čas Modely paralelného programovania • Rôzne druhy architektúr  rôzne modely paralelného programovania: • SMP Based • MPP Based on Uniprocessor Nodes (Simple MPP) • MPP Based on SMP Nodes (Hybrid MPP) • - Multiple Single-Thread Processes pre Node • - One Multi-Thread Process per Node Cieľ paralelného programovania:

  18. „multi-threaded “ programy sú najvhodnejšie pre SMP architektúru  pretože „threads“ zdieľajú zdroje SMP Based (OpenMP) • S1, S2 – procesy, kt. musia byť vykonané sekvenčne Fork-join model: • P1- P4 – procesy, kt. môžu byť vykonané paralelne • Fork (rozvetvenie) – vytvára „thread“ (vlákno) a nie samotný proces • Join (spojenie)  obidva kroky potrebujú určitú réžiu („overhead“)

  19. adresový priestor nie je zdieľaný medzi uzlami  potreba prenosu dát cez prepojovaciu sieť MPP Based on Uniprocessor Nodes (Simple MPP) message-passing (MPI) • jeden proces sa vykonáva na každom uzle • procesy komunikujú každý s každým  čas na vykonanie každého P1-P4 je dlhší • ako pri sériovom programe

  20. MPP Based on SMP Nodes (Hybrid MPP) • ako predchádzajúci model len sa využíva skutočnosť, že „message-passing“ v rámci SMP uzlu sa dá lepšie optimalizovať  dá sa docieliť zrýchlenie a) Multiple Single-Thead Processes pre Node

  21. MPP Based on SMP Nodes (Hybrid MPP) • komunikácia v rámci uzlu cez zdieľanú pamäť • („multi-thread“ proces na uzle) • komunikácia medzi uzlami cez „message-passing“ •  dá sa docieliť zrýchlenie b)One Multi-Thread Process per Node

  22. Rýchlosť komunikácie medzi procesorom a pamäťou je daná: Rýchlosť komunikácie – základné pojmy • udáva, za aký čas je pamäťový modul schopný vyhľadať požadované dáta • je podstatná vtedy, ak čítame malé bloky dát z rôznych pamäťových miest • dá sa znížiť „len“ zvyšovaním frekvencie taktovania pamäte 2. Prenosovou rýchlosťou (bandwidth): • udáva, ako rýchlo je možné prenášať bloky dát po ich nájdení • je podstatná pri práci s veľkými blokmi súvislých dát • dá sa zvýšiť – rozšírením komunikačnej zbernice (použitím viac „drôtov“) • – pripojením ďalších pamäťových modulov 1. Latenciou (latency):

  23. Rýchlosť komunikácie – latencia

  24. Rýchlosť komunikácie – bandwidth

  25. podľa počtu programov, ktoré sa podieľajú na vykonaní paralelnej úlohy SPMD and MPMD • SPMD (Single Program Multiple Data) • MPMD (Multiple Programs Multiple Data) Typy „message-passing“ programov:

  26. Paralelný SPMD program: SPMD program Sekvenčný program:

  27. prvé paralelné počítače od polovice 60-s • vysoká cena integrovaných obvodov a teda aj CPU  processor arrays 80s: Historický prehľad • s rozvojom VLSI (very-large-scale-integration) klesla cena procesorov  •  multiprocesory (zdieľaná pamäť) • vhodnejšie na spracovanie kódu s podmienkami • možnosť využitia viacerými uživateľmi • systémy s viac ako 100 procesormi  problém s pamäťovým systémom • (problém „cache coherence“ a rovnocenného prepojenia procesorov na pamäť) 60-70s: 90s: • rast výkonu bežných PC a sieťových komonentov (Ethernet) + klesajúca cena •  multiprocesory s distribuovanou pamäťou po 2000: • ukazuje sa problém zvyšovať výkon jednoprocesorových systémov zvyšovaním frekvencie (v 2002 IBM odhadovalo, že v 2010 sa budú používať 10 GHz proc.) • hľadajú sa cesty - viacjadrové procesory • - GPGPU = vektorové počítače • - trendom je CUDA (NVIDIA) a spájanie GPU do klastrov (SLI) • (súčasné sieťové prvky nie sú dostatočne rýchle )

  28. OpenMP (OpenMulti-Processing) • OpenMP – implicitná paralelizácia • Fork-Join model • Zdieľaný adresný priestor medzi jednotlivými vláknami • Programovanie pomocou direktív kompilátora • Je súčasťou štandardu programovacieho jazyka • Nutná podpora kompilátora – iba C/C++ a Fortran #pragma omp parallel forprivate(j,k) for (i=0;i<=idim+1;i++) for (j=0;j<=jdim+1;j++) for (k=0;k<=kdim+1;k++)...

  29. MPI is „message-passing library interface specification“  • - je to špecifikácia, nie implementácia • nie je to programovací jazyk • všetky MPI operácie sú vyjadrené ako funkcie, „subroutines“ alebo metódy pre daný programovací jazyk (C, C++, Fortran, Java, C#, Python...)  tvoria „MPI standard“ pre komunikáciu v systémoch s distribuovanou pamäťou MPI – Message-Passing Interface Cieľ MPI:vývoj všeobecného štandardu na písanie „message-passing“ programov Historický vývoj: • 80s – viac nezávislých skupín vyvíja vlastné spôsoby komunikácie  snaha zjednotiť  • 1992: asi 40 organizácii (najmä IBM Watson Research Center, Intel’s NX/2, Express, nCUBE’s Vertex a PARMACS ) začína spolupracovať na prvej verzii štandardu, tzv. verziiMPI-1.0 • 1993: založenie „MPI Forum“ (www.mpi-forum.org) • postupné korigovanie a dopĺňanie MPI štandardu  rôzne verzie • posledná verzia zo septembra 2009: MPI-2.2

  30. http://www.open-mpi.org LAM-MPI: http://www.lam-mpi.org Implentácie MPI MPICH: http://www.mcs.anl.gov/research/projects/mpi/mpich1/ MPICH2: http://phase.hpcc.jp/mirrors/mpi/mpich2/ http://www.mcs.anl.gov/research/projects/mpich2/ OpenMPI:

  31. (pre verziu MPI-1.2 a IBM Parallel Environment pre AIX) MPI Subroutines Kategórie podprogramov (subroutines) MPI štandardu:

  32. Envirement Management Subroutines Základ kódu pre MPI “MPI_Init”– inicializuje MPI prostredie – musí byť volaná iba raz a všetkými procesormi –až po jej zavolaní môžu nasledovať iné MPI subroutines “MPI_Finalize”– ukončuje MPI procesy –po jej zavolaní nemôžu nasledovať ďalšie MPI subroutines

  33.  určujú, ktoré procesy sa budú zúčastňovať zvolenej operácie • ide o tzv. COMMUNICATORS s typom „MPI_Comm“, • t.j. identifikátor spojený so skupinou procesov • všetky bežiace procesy sú obsiahnuté v skupine MPI_COMM_WORLD • definovanej v knižnici mpi.h • možnosť tvorby vlastnej komunikačnej skupiny(MPI_Comm_split) Komunikačné skupiny Informácie o procesoch: • počet procesov (size) v danej skupine: • int MPI_Comm_size( MPI_Comm comm, int* size ); • identifikačné číslo procesu (rank) voči danej skupine: • int MPI_Comm_rank( MPI_Comm comm, int* rank );

  34. #include <mpi.h> int main( int argc, char* argv[] ) { int nprocs, myrank; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); printf(“%d: nprocs = %d myrank = %d\n”, myrank,nprocs,myrank); MPI_Finalize(); } Jednoduchý príklad komplilácia: $ mpicc –o priklad priklad.c spustenie: $ mpiexec –n 3 ./priklad výstup: 1: nprocs = 3 myrank = 0 2: nprocs = 3 myrank = 1 3: nprocs = 3 myrank = 2

  35. Architektúra klastra na KMaDG • embryo01, embryo02: • 4 * 2-jadrový procesor • 32GB operačná pamäť • embryo03: • 4 * 2-jadrový procesor • 64GB operačná pamäť • embryo05, embryo06, embryo07: • 4 * 4-jadrový procesor • 128GB operačná pamäť • embryo08, embryo09: • 4 * 8-jadrový procesor • 256GB operačná pamäť

  36. Architektúra klastra na KMaDG • embryo01 – 07: • Fyzické prepojenie RAM CPU0 CPU1 RAM RAM CPU3 RAM CPU2

  37. Architektúra klastra na KMaDG • embryo08 - 09: • MCM – Multi-Chip module CPU6 CPU2 CPU3 CPU7 RAM CPU4 CPU0 CPU1 CPU5 RAM

  38. Collective Communication Subroutines

More Related