Paralelné algoritmy.

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

Monte-Carlo method and Parallel computing  An introduction to GPU programming Mr. Fang-An Kuo, Dr. Matthew R. Smith NCHC Applied Scientific Computing.
Click on each of us to hear our sounds.
CS 240A: Models of parallel programming: Distributed memory and MPI.
High Performance Communication using MPJ Express 1 Presented by Jawad Manzoor National University of Sciences and Technology, Pakistan 29 June 2015.
Introduction, background, jargon Jakub Yaghob. Literature T.G.Mattson, B.A.Sanders, B.L.Massingill: Patterns for Parallel Programming, Addison- Wesley,
Hybrid MPI and OpenMP Parallel Programming
Chapter 4 Message-Passing Programming. The Message-Passing Model.
NORA/Clusters AMANO, Hideharu Textbook pp. 140-147.
3/12/2013Computer Engg, IIT(BHU)1 MPI-1. MESSAGE PASSING INTERFACE A message passing library specification Extended message-passing model Not a language.
1 ITCS4145 Parallel Programming B. Wilkinson March 23, hybrid-abw.ppt Hybrid Parallel Programming Introduction.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
MPI Basics.
gLite MPI Job Amina KHEDIMI CERIST
Introduction to MPI.
INTRANSNET Contract No. G7RT-CT
Požiadavky na hardvér a možnosti použitia jednotlivých OS Windows
Vznik a vývoj žánrov počítačových hier
Example Bullet Point Slide
VOĽNE DOSTUPNÝ REFERENČNÝ MANAŽÉR
Renesancia a humanizmus
Prečo šimpanzy nevedia rozprávať?
Zálohovanie a archivácia
Operačné systémy Čo robí operačný systém ?
Geografický informačný systém
Domény a DNS.
Vývoj a druhy počítačov
DATABÁZOVÉ JAZYKY.
Databázový systém pre malý a veľký podnik
Yulia Šurinová "There is always a better way; it should be found."
Makrá v PowerPointe Joshua Lajčiak.
Distributed Systems CS
Communicating over the Network
Schémy financovania v 7RP
1. Úvod do operačného systému UNIX
Človek vo sfére peňazí ročník.
Využitie IKT na hodinách anglického jazyka
Informatika, I. ročník Gymnázium, Park mládeže 5, Košice
Vlastnosti kvantitatívnych dát
Ing. Róbert Chovanculiak, Ph.D. INESS
História vzniku internetu
Šifrovanie Dešifrovanie
Počítačové siete a ich modely
Ako manažovať smartfóny z cloudu TechDays East 2014
Message Passing Models
Dvojrozmerné polia Kód ITMS projektu:
Lokálne príznaky vo farebných obrazoch
22. – OTVORENÝ PRÍSTUP
Servio as a Service Service desk z Telekom cloudu
Heuristické optimalizačné procesy
Heuristické optimalizačné procesy
REACH 2018 Nájdite svojich spoluregistrujúcich a pripravte sa na spoločnú registráciu.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
Veľkosť trhu agentúrnych zamestnancov
Seminár č. 9 - osnova Metódy sieťového plánovania a riadenia:
Základné tematické okruhy
Interaktívna kniha a e-learningový systém pre deti - Opera nehryzie
8. prednáška 10. november 2003.
D Novinky v DSpace 6 Ivan Masár 6.
Využitie biomasy v environmentálnych biotechnológiách
Distributed Systems CS
Distributed Systems CS
Lab Course CFD Parallelisation Dr. Miriam Mehl.
Hybrid Parallel Programming
Hybrid Parallel Programming
Introduction, background, jargon
Hybrid MPI and OpenMP Parallel Programming
Introduction to Parallel Computing
Hybrid Parallel Programming
Programming Parallel Computers
Presentation transcript:

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)

Úvod do paralelného programovania Výpočtovo náročné úlohy: 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í ...  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)

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

Architektúra paralelných počítačov Príklady paralelných architektúr: 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) podrobnejšie napr. na: http://kmlinux.fjfi.cvut.cz/~oberhtom/

Architektúra paralelných počítačov Globálna pamäť: sprostredkováva komunikáciu medzi výpočtovými jednotkami (prístup do globálnej pamäte pomalý) 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 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) ...

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)

Multiprocesorové architektúry Zloženie: 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) Delenie: podľa typu pamäte (zdieľaná alebo distribuovaná) podľa „zdieľatelnosti“ adresového priestoru

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

NUMA – Non-Uniform Memory Access Charakteristika: 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)

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)

Príklad: Supercomputer IBM SP6 (CINECA, Italy) Charakteristika: Model: IBM pSeries 575 Architecture: IBM P6-575 Infiniband Cluster Processor Type: IBM Power6, 4.7 GHz Computing Cores: 5376 Computing Nodes: 168 RAM: 21 TB (128 GB/node) Internal Network: Infiniband x4 DDR Disk Space: 1.2 PB Operating System: AIX 6 Peak Performance: 101 TFlop/s Available compilers: Fortran90, C, C++ Parallel libraries: MPI, OpenMP, LAPI In November 2009 IBM pSeries 575 has been ranked 61-th in 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 www.top500.org

EGI – European Grid Infrastruction (from 8 Feb 2010) GRID computing 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) v rámci Európy: DataGrid (2002 – 2004) EGEE I, II, III (2004 – 2010) EGI – European Grid Infrastruction (from 8 Feb 2010) www.egi.eu na Slovensku: SlovakGrid univerzitné (akademické) gridy

GPU computing CUDA (Compute Unified Device Architecture) výpočty na grafických kartách  výrazné zrýchlenie (aj 10-20-krát) obmedzenie na pamäť (6GB) 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

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

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ť

Modely paralelného programovania Cieľ paralelného programovania: využiť dostupné procesory a znížiť výpočtový čas 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

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

MPP Based on Uniprocessor Nodes (Simple MPP) adresový priestor nie je zdieľaný medzi uzlami  potreba prenosu dát cez prepojovaciu sieť 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

MPP Based on SMP Nodes (Hybrid MPP) a) Multiple Single-Thead Processes pre Node 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

MPP Based on SMP Nodes (Hybrid MPP) b) One Multi-Thread Process per Node 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

Rýchlosť komunikácie – základné pojmy Rýchlosť komunikácie medzi procesorom a pamäťou je daná: 1. Latenciou (latency): 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

Rýchlosť komunikácie – latencia

Rýchlosť komunikácie – bandwidth

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

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

Historický prehľad 60-70s: 80s: 90s: po 2000: prvé paralelné počítače od polovice 60-s vysoká cena integrovaných obvodov a teda aj CPU  processor arrays 80s: 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äť) 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 )

OpenMP (Open Multi-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 for private(j,k) for (i=0;i<=idim+1;i++) for (j=0;j<=jdim+1;j++) for (k=0;k<=kdim+1;k++)...

MPI – Message-Passing Interface 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 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. verzii MPI-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

Implentácie MPI OpenMPI: LAM-MPI: MPICH: MPICH2: http://www.open-mpi.org LAM-MPI: http://www.lam-mpi.org 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/

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

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

Informácie o procesoch: Komunikačné skupiny  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) 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 );

Jednoduchý príklad komplilácia: spustenie: výstup: #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(); } 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

Architektúra klastra na KMaDG embryo01, embryo02: 4 * 2-jadrový procesor 32GB operačná pamäť embryo03: 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äť

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

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

Collective Communication Subroutines