38
Paralelné algoritmy

Paralelné algoritmy

  • Upload
    velvet

  • View
    70

  • Download
    6

Embed Size (px)

DESCRIPTION

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 ([email protected]). CFD - computational fluid dynamics, modely turbulencií, modely šírenia požiarov modelovanie globálnych zmien počasia - PowerPoint PPT Presentation

Citation preview

Page 1: Paralelné algoritmy

Paralelné algoritmy

Page 2: 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 ([email protected])

Page 3: Paralelné algoritmy

Ú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)

Page 4: Paralelné algoritmy

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)

(Von Neumannova architektúra)Paralelné počítače:

Page 5: Paralelné algoritmy

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)

http://kmlinux.fjfi.cvut.cz/~oberhtom/

podrobnejšie napr. na:

Page 6: Paralelné algoritmy

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)- ...

Page 7: Paralelné algoritmy

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)

Page 8: Paralelné algoritmy

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

Page 9: Paralelné algoritmy

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

Page 10: Paralelné algoritmy

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)

Page 11: Paralelné algoritmy

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)

Page 12: Paralelné algoritmy

Príklad: Supercomputer IBM SP6 (CINECA, Italy)

Charakteristika:

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-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

Page 13: Paralelné algoritmy

GRID computing

EGI – European Grid Infrastruction (from 8 Feb 2010)

• 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)

www.egi.eu

EGEE I, II, III (2004 – 2010)

DataGrid (2002 – 2004)

• v rámci Európy:

• na Slovensku:

SlovakGrid

• univerzitné (akademické) gridy

Page 14: Paralelné algoritmy

GPU computing

• 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 NVIDIAOpenCL (Open Computing Language) - otvorený multiplatformový štandardDirectCompute - API vytvorené spoločnosťou Microsoft

Page 15: Paralelné algoritmy

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ť jeN – počet procesorov

NP

PNS

)1(

1)(

Page 16: Paralelné algoritmy

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émN – počet procesorovα – pomer programu ktorý sa nedá paralelizovať

)1()( NNNS

Page 17: Paralelné algoritmy

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:

a) SMP Based b) MPP Based on Uniprocessor Nodes (Simple MPP)c) MPP Based on SMP Nodes (Hybrid MPP)

- Multiple Single-Thread Processes pre Node- One Multi-Thread Process per Node

Page 18: Paralelné algoritmy

SMP Based

Fork-join model:

• S1, S2 – procesy, kt. musia byť vykonané sekvenčne

• 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“)

• „multi-threaded “ programy sú najvhodnejšie pre SMP architektúru pretože „threads“ zdieľajú zdroje

(OpenMP)

Page 19: Paralelné algoritmy

MPP Based on Uniprocessor Nodes (Simple MPP)

• 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

• adresový priestor nie je zdieľaný medzi uzlami potreba prenosu dát cez prepojovaciu sieť

mmessageessage-p-passingassing

(MPI)

Page 20: Paralelné algoritmy

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

Page 21: Paralelné algoritmy

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

Page 22: Paralelné algoritmy

Rýchlosť komunikácie – základné pojmy

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

Rýchlosť komunikácie medzi procesorom a pamäťou je daná:

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

Page 23: Paralelné algoritmy

Rýchlosť komunikácie – latencia

Page 24: Paralelné algoritmy

Rýchlosť komunikácie – bandwidth

Page 25: Paralelné algoritmy

SPMD and MPMD

Typy „message-passing“ programov:

• podľa počtu programov, ktoré sa podieľajú na vykonaní paralelnej úlohy

a) SPMD (Single Program Multiple Data) b) MPMD (Multiple Programs Multiple Data)

Page 26: Paralelné algoritmy

SPMD program

Sekvenčný program: Paralelný SPMD program:

Page 27: Paralelné algoritmy

Historický prehľad

60-70s:• 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 )

Page 28: Paralelné algoritmy

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++)...

Page 29: Paralelné algoritmy

MPI – Message-Passing Interface

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

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

Page 30: Paralelné algoritmy

Implentácie MPI

OpenMPI: 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/

Page 31: Paralelné algoritmy

MPI Subroutines

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

Page 32: Paralelné algoritmy

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

Page 33: Paralelné algoritmy

Komunikačné skupiny

Informácie o procesoch:

• počet procesov (size) v danej skupine:

int MPI_Comm_size( MPI_Comm comm, int* size );

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)

• identifikačné číslo procesu (rank) voči danej skupine:

int MPI_Comm_rank( MPI_Comm comm, int* rank );

Page 34: Paralelné algoritmy

Jednoduchý príklad

#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

Page 35: Paralelné algoritmy

Architektúra klastra na KMaDG

embryo01, embryo02:4 * 2-jadrový procesor32GB operačná pamäť

embryo03:4 * 2-jadrový procesor64GB operačná pamäť

embryo05, embryo06, embryo07:4 * 4-jadrový procesor128GB operačná pamäť

embryo08, embryo09:4 * 8-jadrový procesor256GB operačná pamäť

Page 36: Paralelné algoritmy

• embryo01 – 07:

– Fyzické prepojenie

Architektúra klastra na KMaDG

Page 37: Paralelné algoritmy

• embryo08 - 09:

– MCM – Multi-Chip module

RAM

RAM

Architektúra klastra na KMaDG

Page 38: Paralelné algoritmy

Collective Communication Subroutines