Download presentation
Presentation is loading. Please wait.
Published byCornelius Lloyd Modified over 6 years ago
1
UVOD U PARALELNO RAČUNARSTVO SA OSVRTOM NA MPI
BioIRC, Kragujevac UVOD U PARALELNO RAČUNARSTVO SA OSVRTOM NA MPI Miloš Ivanović, Istraživačko-razvojni centar za bioinženjering, Kragujevac
2
Sadržaj predavanja postojeći resursi
Zašto paralelno računarstvo? Koncepti i terminologija Memorijske arhitekture paralelnih računara Paralelni programski modeli Dizajniranje paralelnih programa Paralelno računarstvo u Kragujevcu postojeći resursi primeri rešenja iz prakse CSANU, bioIRC
3
Zašto paralelno? Tradicionalni softver se piše serijski
izvršava se na jednom računaru sa jednim CPU-om problem se razbija na dikretan skup instrukcija instrukcije se izvršavaju jedna nakon druge u jednom momentu se izvršava samo jedna instrukcija
4
Zašto paralelno? Jednostavno rečeno, paralelno računarstvo je korišćenje više računarskih resursa da bi se rešio problem iskorišćavanje više CPU jedinica problem se razbija na diskretne delove koji se izvršavaju konkurentno svaki deo se dalje razbija na instrukcije koje se rešavaju paralelno instrukcije iz svakog dela se izvršavaju simultano na različitim CPU jedinicama
5
Zašto paralelno? Kompjuterski resursi podrazumevaju:
jedan multiprocesorski računar proizvoljan broj računara povezanih mrežom kombinacija prve dve stavke Računarski problem čije se rešenje paralelizuje treba da pokazuje sledeće karakteristike: može se razbiti na diskretne delove koji se mogu rešavati paralelno da izvršenje programa na paralelnoj platformi traje kraće nego serijsko izvršenje
6
Zašto paralelno? Tradicionalno, paralelno računarstvo se smatra najmodernijom granom u IT svetu čiji je razvoj podstaknut numeričkim simulacijama kompleksnih sistema, kao što su: prognoza vremena i klima hemijske i nuklearne reakcije biologija, ljudski genom geologija, seizmička aktivnost mehanički uređaji – od proteza do kosmičke tehnologije elektronska kola proizvodni proces
7
Zašto paralelno? Pored naučnih aplikacija, danas još veću motivaciju za razvoj HPC tržišta daju komercijalne aplikacije koje procesiraju ogromne količine podataka: paralelne (grid) baze podataka istraživanje naftnih izvora web pretraživači, web poslovni servisi kompjuterska dijagnostika u medicini i medicinske simulacije upravljanje multinacionalnim korporacijama grafika i virtuelna realnost, filmska industrija mrežne video i multimedijalne tehnologije kolaborativna radna okruženja
8
Zašto paralelno? Primarni razlozi za razvoj paralelnog računarstva
ušteda vremena rešavanje ”gabaritnih” problema Obezbeđivanje konkurentnosti (uraditi više stvari istovremeno) Ostali razlozi uključuju mogućnost da se upotrebe resursi koji nisu lokalni => GRID ušteda novca – umesto plaćanja vremena na superkompjuteru, koristiti ”jeftine” resurse u većem broju prevazilaženje memorijskih ograničenja
9
Zašto paralelno? Ograničenja serijskog pristupa – i fizička i praktična ograničenja sprečavaju scenario u kome će zauvek biti dostupni sve brži serijski računari ograničenje brzine transmisije – koliko brzo podaci mogu da putuju u hardveru, ograničenje je c i transmisiona granica bakra (9 cm/ns) ograničenje minijaturizacije – procesorska tehnologija dozvoljava da se sve veći broj tranzistora smesti u integralno kolo. Ali limit će se svakako dostići čak i sa komponentama veličine atoma ili molekula ekonomska ograničenja – veoma je skupo ubrzavati jedan procesor, mnogo je jeftinije upotrebiti više standardnih CPU jedinica Tokom poslednjih 10 godina, trendovi kao što su brze mreže, distribuirani sistemi i multiprocesiranje čak i na desktop nivou, jasno odeđuju: PARALELIZAM JE BUDUĆNOST RAČUNARSTVA
10
Zašto paralelno? Ko koristi i razvija paralelni kompjuting?
pored podataka vezanih za najmoćnije računare na svetu, daje i statistiku njihovih korisnika ”Not specified” na grafikonu uglavnom znači više navedenih oblasti zajedno
11
Koncepti i terminologija PR
Von Neumann arhitektura – tokom više od 40 godina svi računari su bazirani na ovom modelu, nazvanom po mađarsom matematičaru Jedan von Neumann bazirani računar koristi koncept ”stored- program”, tj. CPU sekvencijalno izvršava instrukcije iz memorije koje specificiraju čitanje/pisanje iste
12
Koncepti i terminologija PR
Flinova taksonomija je način da se paralelni računari kategorizuju, i to uz pomoć pojma instrukcije i pojma podataka Svaka od ove dve dimenzije može imati dva stanja – jedan i više (single, multiple)
13
Koncepti i terminologija PR
Single Instruction Single Data (SISD) serijski (ne-paralelni) računar Single instruction: CPU izvršava samo jedan tok instrukcija u bilo kom taktu ciklusa Single data: samo jedan tok podataka se korsti kao ulaz u bilo kom taktu ciklusa Determinisano izvršavanje Primer: klasični (jednoprocesorski-jednojezgarni) PC
14
Koncepti i terminologija PR
Single Instruction Multiple Data (SIMD) tip paralelnog računara sve CPU jedinice izvode istu instrukciju u jednom taktu ciklusa svaka CPU jedinica operiše različitim elementom podataka veoma odgovara problemima sa velikim stepenom regularnosti, recimo procesiranje slike dva varijeteta: procesorski niz i vektorski pajplajn (pipeline) primeri: IBM 9000, Cray C90, Fujitsu VP, NEC SX-2, Hitachi S820
15
Koncepti i terminologija PR
Multiple Instruction Single Data (MISD) isti tok podataka ide u sve CPU jedinice svaka procesorska jedinica operiše podacimo posebno, sa sopstvenim setom instrukcija veoma redak tip, jedanod primera je Carnegie-Mellon C.mmp computer (1971)
16
Koncepti i terminologija PR
Multiple Instruction Multiple Data (MIMD) ovo je danas najzastupljeniji tip paralelnog računara Multiple Instruction: svaki procesor izvršava sopstveni tok instrukcija Multiple Data: svaki procesor operiše sopstvenim tokom podataka izvršavanje može biti sinhrono i asinhrono primeri: većina današnjih super računara, Beowulf klasteri, umrežene SMP mašine itd.
17
Memorijske arhitekture PR
Deljena memorija procesori funkcionišu nezavisno, ali dele zajednički adresni prostor sve promene koje indukuje jedan procesor, automatski su vidljive ostalima UMA (Uniform Memory Access) NUMA (Non-Uniform Memory Access) prednosti jednostavna komunikacija brzo i unifromno mane hardverska skalabilnost cena
18
Memorijske arhitekture PR
Distribuirana memorija procesori zahtevaju postojanje mreže za međusobnu komunikaciju svaki procesor ima direktan pristup samo svojoj lokalnoj memoriji na programeru je da reši situaciju kada procesoru trebaju podaci koji se nalaze u memoriji drugog prednosti skalabilna memorija nema sh_mem keš troškova cena mane programer odgovoran za komunikaciju NUMA vreme pristupa
19
Memorijske arhitekture PR
Hibridna mem. arhitektura najmoćniji super računari današnjice koriste ovaj pristup očekuje se da se ovaj trend nastavi i u budućnosti jedinica je obično keš-koherentna SMP mašina prednosti i mane se mogu opisati kao skup zajedničkih karakteristika prethodne dve arhitekture
20
Paralelni programski modeli
Nekoliko programskih modela je u upotrebi: model niti (threads) model poruka (message passing) paralelno na podacima (data parallel) hibridni (hybrid) Programski model postoji kao apstrakcija nad hardverskim nivoom Programski model ne zavisi direktno od hardverskog memorijskog modela. Primeri su: model deljene memorije na hardveru sa distribuiranom memorijom (Kendall Square Research ALLCACHE) poruke na hardveru sa deljenom memorijom (MPICH sh_mem implementacija) na SMP mašini, veoma čest pristup danas Ne postoji “najbolji” model, već njihova upotreba zavisi od konkretnog zadatka
21
Paralelni programski modeli
Model niti (Threads) verovatno najjednostavniji opis ovog modela je proces koji poziva potprograme koji se izvršavaju konkurentno obično se implementira na arhitekturi “deljene memorije” a.out uradi neki serijski zadatak, a onda kreira nekoliko konkurentnih niti niti imaju svoje lokalne podatke, ali dele i one u vlasništvu a.out implementacije: POSIX threads (biblioteka) OpenMP (kompajlerske direktive)
22
Paralelni programski modeli
Model poruka (Message Passing Model) skup procesa koji tokom izvršavanja koriste svoju lokalnu memoriju procesi se mogu izvršavati na jednoj ili više mašina komunikacija se obavlja razmenom poruka, svaka operacija slanja mora imati korespondentnu operaciju prijema Implementacija iz programerske perspektive, koristi se biblioteka funkcija, a programer je odgovoran za svaki segment paralelizacije MPI (MPI-1 i MPI-2) je “de facto” industrijski standard, praktično zamenivši sve ostale razne MPI implementacije poput MPICH, LAM, Open-MPI, HP-MPI na mašinama sa deljenom memorijom umesto mrežnih operacija koriste direktna mem. kopiranja
23
Dizajniranje paralelnih programa
Jedan od prvih koraka u dizajniranju par. programa je particionisanje celog posla na manje delove koji se distribuiraju procesima Tu su i dva osnovna načina particionisanja: domen dekompozicija i funkcionalna dekompozicija Na slikama je dat šematski prikaz domen dekompozicije
24
Dizajniranje paralelnih programa
Funkcionalna dekompozicija Kod ovog pristupa, fokus procesne podele je na funkcionalnim celinama, a ne na podacima
25
Dizajniranje paralelnih programa
Komunikacije. Potreba za komunikacijama između procesa zavisi od konkretnog problema. Dva slučaja: komunikacije nisu potrebne – postoji jedna klasa problema kod kojih praktično nema nikakve potrebe za deljenjem podataka. Recimo, izrada negativa digitalne slike, svaki piksel je nezavisan. komunikacije jesu potrebne – mnogo veća klasa problema, recimo rešavanje polja fluida metodom konačnih elemenata, elementi su spregnutio sa susedima. Faktori komunikacija za razmatranje: trošak međuprocesnih komunikacija (mreža, deljena memorija) latencija i propusni opseg – latencija je vreme potrebno za slanje poruke nulte dužine, a propusni opseg količina podataka u jedinici vremena vidljivost komunikacija – kod Message Passing Modela je potpuno vidljivo, dok kod Data Parallel modela skriveno od aplikativnog programera sinhroni i asinhroni tip – kod sinhronog proces stoji dok se ne završi komunikacija, dok kod asinhronog ide dalje
26
Dizajniranje paralelnih programa
Faktori komunikacija: opseg komunikacija point-to-point – konkretna dva procesa razmenjuju podatke kolektivni - razmena podataka više od dva procesa, recimo svih procesa u grupi kompleksnost komunikacija – dat je primer “Hello world” programa u MPI
27
Dizajniranje paralelnih programa
Granularnost je kvantitativna mera odnosa računanja i komunikacije periodi računanja su obično presečeni događajima komunikacije i sinhronizacije fina granularnost paralelizma podrazumeva male porcije posla koje se urade između sinhronizacija gruba granularnost paralelizma podrazumeva da se veliki deo posla odradi između događaja sinhronizacija između dve krajnosti treba naći pravu meru, tj. treba ići ka gruboj granulaciji zbog smanjenja troška komunikacija, a opet treba i očuvati balans opterećenja ne prevelikim porcijama posla
28
Primer paralelnog koda - C
my_int = integral(a,myid,h,n); /* local sum due process myid */ printf("Process %d has the partial integral of %f\n", myid,my_int); if(myid == master) { integral_sum = my_int; for (source=1;source<p;source++) MPI_Recv(&my_int, 1, MPI_FLOAT, source, tag, MPI_COMM_WORLD, &status); /* safe */ integral_sum += my_int; } fprintf(stdout,"The Integral =%f\n", integral_sum); else MPI_Send(&my_int, 1, MPI_FLOAT, master, tag, MPI_COMM_WORLD); /* send my_int to “master” */ MPI_Finalize(); /* let MPI finish up ... */ return 0; #include "mpi.h" #include <stdio.h> #include <math.h> float integral(float a, int i, float h, int n) { int j; float h2, aij, integ; integ = 0.0; /* initialize integral */ h2 = h/2.; /* sum over integrals in partition i*/ for (j=0; j<n; j++) aij = a + (i*n + j)*h; /* lower limit of integration of j*/ integ += cos(aij+h2)*h; /* contribution due to j */ } return integ; int main(int argc,char *argv[]) int n, p, i, myid, source, master, tag; float h, result, a, b, pi, my_int, integral_sum; MPI_Status status; /* MPI data type */ MPI_Init(&argc,&argv); /* start MPI processess */ MPI_Comm_size(MPI_COMM_WORLD,&p); /* # of processes */ MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* current proc. id */ pi = acos(-1.0); /* = */ a = 0.; /* lower limit of integration */ b = pi/2.; /* upper limit of integration */ n = 500; /* number of increment within each process */ master = 0; /* define the process that computes the final result */ tag = 123; /* set the tag to identify this particular job */ h = (b-a)/n/p; /* length of increment */
29
Primer paralelnog koda – F77
if(Iam .eq. master) then result = my_result !! initialize final result to master's do source=1,p-1 !! loop on sources (serialized) to collect local sum call MPI_Recv(my_result, 1, MPI_REAL, source, tag, & MPI_COMM_WORLD, status, ierr) !! not safe result = result + my_result enddo print *,'The result =',result else call MPI_Send(my_result, 1, MPI_REAL, dest, tag, & MPI_COMM_WORLD, ierr) !! send my_result to intended dest. endif call MPI_Finalize(ierr) !! let MPI finish up ... stop end real function integral(a,i,h,n) implicit none integer n, i, j real h, h2, aij, a real fct, x fct(x) = cos(x) !! kernel of the integral integral = !! initialize integral h2 = h/2. do j=0,n !! sum over all "j" integrals aij = a + (i*n +j)*h !! lower limit of "j" integral integral = integral + fct(aij+h2)*h return Program Example1_1 implicit none integer n, p, i, j, ierr, master real h, result, a, b, integral, pi include "mpif.h" !! This brings in pre-defined MPI constants, ... integer Iam, source, dest, tag, status(MPI_STATUS_SIZE) real my_result data master/0/ !! 0 is defined as the master processor !! which will be responsible for collecting !! integral sums ... !! Placement of executable statements before MPI_Init is not !! advisable as the side effect is implementation-dependent pi = acos(-1.0) !! = a = !! lower limit of integration b = pi*1./ !! upper limit of integration n = !! number of increment within each process dest = master !! define the process that computes the final result tag = !! set the tag to identify this particular job c**Starts MPI processes ... call MPI_Init(ierr) !! starts MPI call MPI_Comm_rank(MPI_COMM_WORLD, Iam, ierr) !! get current process id call MPI_Comm_size(MPI_COMM_WORLD, p, ierr) !! get # procs from env !! variable or command line h = (b-a)/n/p !! length of increment my_result = integral(a,Iam,h,n) !! compute local sum write(*,"('Process ',i2,' has the partial result of',f10.6)") & Iam,my_result
30
Paralelno računarstvo u CSANU, bioIRC
PBFS (Parallel Blood Flow Simulation) grid sistem za simulaciju toka krvi kroz arterije, pomoć prilikom planiranja operacije i dizajna medicinskih pomagala bazirana na MKE, ulaz su DICOM slike dinamička analiza fluida metodom konačnih elemenata je veoma dugotrajan proces i zahteva nedostupnu količinu memorije kada radi serijski zbog toga je aplikacija paralelizovana korišćenjem MPI paradigme i prilagođena gridu veća memorija (suma distribuiranih) veća brzina, npr. 10h->1h na dijagramima se vidi zavisnost vremena proračuna od broja procesora i konkretnog klastera (na SEEGRID-u)
31
Paralelno računarstvo u CSANU, bioIRC
Lizza-PAKP protok kroz porozne sredine, Darsijev zakon razvijen u saradnji sa institutom “Jaroslav Černi” specijalan osvrt na “Ranney” bunare slično kao PBFS, paralelizovan je “najkabastiji” deo – rešavanje sistema jednačina; MUMPS multifrontalni paralelni solver regionalni i detaljni modeli pojednostavljen Grid interfejs korišćenjem VIVE bindera
32
Paralelno računarstvo u CSANU, bioIRC
PPS (Parallel Particle Deposition) Softver je razvijen u okviru projekta „Particles in Developing Lung“ sa HSPH (Harvard School of Public Health) za potrebe modeliranja depozicije aerosoli u alveolarnim putevima metodom konačnih elemenata Za paralelizaciju je korišćen objektni (komponentni) pristup sa upotrebom biblioteke CTL (Component Template Library, TU Braunschweig) Zahvaljujući jednostavnoj dekompoziciji problema, postignuta je skoro idealna skalabilnost (skoro N puta na N procesora)
33
Paralelno računarstvo u CSANU, bioIRC
SPH-07 (Smoothed Particle Hydrodynamics) program za numeričke simulacije nestišljivih fluida korišćenjem SPH metode razvijen u saradnji sa Cranfield University, UK softver ima objektno-orijentisanu arhitekturu i paralelizovan je pomoću MPI specifikacije isti pristup je primenljiv i na druge čestične metode (DPD, MD) dobra skalabilnost domen dekompozicije stohantička analiza na gridu
34
Paralelno računarstvo u CSANU, bioIRC
SPH07 saobraćaj među susednim procesima česticama na granici treba kopiranjem čestica iz susednih procesa obezbediti okruženje kao da se radi o samo jednom procesu treba obezbediti mehanizam za transfer čestica ukoliko pređu u prostorni domen čiji je vlasnik drugi proces
35
Paralelno računarstvo u CSANU, bioIRC
Proboj brane - 2D slučaj Proboj brane - 3D slučaj
36
Paralelno računarstvo u CSANU, bioIRC
Fuzzy-Neural Network CFD Eksperimentalni sistem koji omogućava prognozu hemodinamskih veličina unutar anomalija krvotoka primenom sistema veštačke inteligencije Osnovna prednost ovakvog pristupa je ušteda vremena jer se posao vremenski zahtevnog CFD (Computational Fluid Dynamics) prepušta fuzzy ili NN rutinama koje imaju skoro trenutni odziv Baza znanja VI sistema je formirana hiljadama CFD analiza koje se zbog svoje zahtevnosti i brojnosti izvršavaju na Gridu Ušteda vremena 20 dana => 3.5h
37
Paralelno računarstvo u CSANU, bioIRC
Resursi u CSANU, AEGIS04-KG grid sajt UI/CE/MON čvor - IBM eServer xSeries 345 Dual Xeon 2.66GHz, 4.5GB RAM, 6x36GB 15000rpm SCSI RAID0, Scientific Linux 3, gLite 3.0 middleware DPM SE čvor - P4 1.7GHz, 1GB RAM, 500GB S-ATA disk, Scientific Linux 4.6, gLite 3.1 middleware 10 WN čvorova - Intel Core2Quad Q6600 sa 4GB RAM-a i 80GB disk prostora, Scientific Linux 4.6, gLite 3.1 middleware, što čini ukupno 42 CPU, 40GB RAM Podržane virtuelne organizacije: SEEGRID, AEGIS, SGDEMO i DTEAM
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.