Paralelno programiranje I - rt-rk.uns.ac.rs Paralelno... · zadataka (2/2) Fleksibilnostu broju i...
Transcript of Paralelno programiranje I - rt-rk.uns.ac.rs Paralelno... · zadataka (2/2) Fleksibilnostu broju i...
Paralelno programiranje I
Projektantski šabloniOtkrivanje paralelizma
1
PokrivenostAmdalov zakon
2
Šta utiče na performase paralelnih programa?
Pokrivenostkoliki deo programa može da se izvršava paralelno
Granularnostkoličinska raspodela posla na procesore
LоkalnostPodataka i računanja
3
GranularnostMera odnosa vremena koje ode na obradu i koje ode na komunikaciju
4
Fina granulacija:• Mali odnos obrade i
komunikacije (više komunikacije)
• Mala količina posla između perioda komunikacije
• Velika režija za komunikaciju i raspoređivanje
Gruba granulacija:• Veliki odnos obrade i
komunikacije (više obrade)
• Velika količina posla između perioda komunikacije
• Teže balansirati opterećenje (više praznog hoda)
LokalnostTumačenje može da zavisi od tipa platforme na kojoj se obavlja paralelizacija (mreža računara, procesori sa deljenom memorijom, sa odvojenom memorijom, keš memorija...)Ali u suštini, što više lokalnosti, to manje delenja resursa i, samim tim, manje guranja za pristup resursima.
5
4 Korakaparalelizacijeprograma
6
Dekompozicija (Pokrivenost)Pronaći paralelizam i odlučiti se na kom nivou ga iskorititiRazbiti obradu na zadatke, koji će biti podeljeni između procesa
Zadaci mogu nastajati dinamičkiBroj zadataka se može menjati u vremenu
Dovoljno zadataka koji će uposliti procesoreBroj raspoloživih zadataka u određenom trenutku predstavlja gornju granicu ostvarivog ubrzanja
7
Dodela (Granularnost)Odrediti mehanizam podele posla na jezgara
Balanisrati posao i smanjiti komunikaciju
Po mogućnosti koristiti struktuirane pristupeAnaliza koda ili razumevanje aplikacijeKorišćenje poznatih projektantskih obrazaca
Najpre treba raditi na particionisanju obradeNezavisno od fizičke arhitekture i programskogmodelaAli složenost obično utiče na odluke
8
Orkestracija i Preslikavanje(Lokalnost)
Ostvariti što više preklapanja obrade i komunikacije
Očuvati lokalnost podataka
Raspoređivati zadatke tako da se na vremezadovolje zavisnosti između podataka (da bi se smanjilo čekanje)
9
Šabloni paralelnog programiranjaKnjiga Patterns for parallel programming, autoriMattson, Sanders i Massingill (2005)
Recepti za sistematično vođenje programera
Obezbeđuje rečnik za programersku zajednicuSvaki šablon ima ime – olakšava diskusiju rešenja
Doprinosi ponovnoj upotrebi i modularnostiČitalac brzo razume rešenje i njegov kontekst
Bez ovakve pomoći paralelno programiranje može biti suviše teško za programere i otežava potpuno iskorišćenje pralelnog hardvera
10
Četiri projektantska prostoraIzražavanje algoritma
I Pronalaženje paralelizmaUočavanje konkurentnih zadataka
II Struktura algoritmaPreslikavanje zadataka na procese radi korišćenja paralelnih arhitektura
Konstruisanje programaIII Pomoćne strukture
Šabloni koda i struktura podataka
IV Izvedbeni mehanizmiMehanizmi niskog nivoa koji se koriste za pisanje paralelnih programa
11
Evo algoritma.Gde je paralelizam?
12
Evo algoritma.Gde je paralelizam?
Dekompozicija zadatakaNezavsine krupnije obrade(gruba granulacija)Svojstvene algoritmuNiz iskaza koji operišu kao grupa (Odgovaraju nekom logičkom delu programa i obično prate način na koji programer razmišlja o problemu)
13
Evo algoritma.Gde je paralelizam?
Dekompozicija zadatakaParalelizam u aplikaciji
Dekompozicija podatakaIsta obrada se primenjuje na malim blokovima podatka, koji su izvedeni iz velikog skupa podataka
14
Evo algoritma.Gde je paralelizam?
Dekompozicija zadatakaParalelizam u aplikaciji
Dekompozicija podatakaIsta obrada, višepodataka
Dekompozicija protočne obrade
„fabričke trake“ za podatkeLanci proizvođača-potrošača
15
Uputstvo za dekompoziciju zadataka (1/2)
Algoritmi nastaju iz dobrog razumevanja problema koji se rešavaProgrami se obično prirodno dekomponuju na zadatke
Dve česte dekompozicije su:Pozivi funkcijaRazličite iteracije u petlji
Lakše je započeti sa više zadataka i kasnije ih spajati, nego sa manje zadataka koje kasnije treba razdvajati
16
Uputstvo za dekompoziciju zadataka (2/2)
Fleksibilnost u broju i veličini zadatakaZadaci ne treba da budu vezani za specifičnu arhitekturuFiksni zadaci naspram parametrizovanih zadataka
EfikasnostZadaci sa dovoljno posla da se amortizuje cena njihovog stvaranja i rukovanjaZadaci treba da budu dovoljno nezavisni, kako rukovanje zavisnostima ne bi bilo usko grlo
JednostavnostKod mora ostati čitljiv i lak za razumevanje i održavanje (debagovanje) 17
Uputstvo za dekompoziciju podataka
Dekompozicija podataka je obično određena dekompozicijom zadatakaProgramer mora adresirati ove dve dekompozicije da bi napravio paralelni program
Sa kojom započeti?
Dekompozicija podataka je dobra početna tačka kada je:
Glavna obrada organizovana oko manipulacije velike strukture podatakaPrimenjuju se slične operacije nad različitim delovima strukture podataka
18
Česte dekompozicije podatakaStrukture podataka u obliku nizova
Dekompozicija nizova po vrstama, kolonama, blokovima
Rekurzivne strukture podatakaNa primer: dekompozicija stabla u podstabla
19
Uputstvo za dekompoziciju podataka
FleksibilnostBroj i veličina blokova podataka treba da podrže širok opseg izvršenja (npr. broj iteracija nije isti pri svakom pokretanju, tj. izvršavanju, programa)
EfikasnostBlokovi podataka treba da generišu uporedive količine posla (radi balansiranja opterećenja) – to obično znači da sami blokovi podataka treba da budu slične veličine
JednostavnostSložene kompozicije podataka mogu biti teške za obradu i otkrivanje grešaka
20
Slučaj za dekompoziciju protočne obrade
Podaci teku kroz niz stepeni obradeDobra analogija je fabrička traka
Glavni primer u računarskim arhitekturama?Protočna obrada instrukcija u modernim procesorima (tzv. pajplajn)
Primer u komandnom procesoru OS Unix?Cevi (pipes) u Unix: cat foobar.c | grep bar | wc
Drugi primeriObrada signalaGrafika
21
Ponovni inženjering radi paralelizacije programa (1/3)
Najčešće se kreće od sekvencijalnih programaLakše za pisanje i otkrivanje grešakaVeć postojeći kod
Kako pretvoriti sekvencijalan program u paralelniIzučiti terenŠabloni nude listu pitanja koja pomaže pri procenipostojećeg kodaVećina pitanja su ista kao u bilo kom inženjerskom projektuDa li se program numerički dobro ponaša?
22
Ponovni inženjering radi paralelizacije programa (2/3)
Definisati domet projekta i dobiti saglasnostkorisnika (naručioca)
Zahtevana preciznost rezultataOpseg ulaznih podatakaOčekivanja u pogledu performanse (zapamtite: treba samo biti dovoljno dobar)Izvodljivost (brza procena)
Definisati protokol testiranja/prijema projekta
23
Ponovni inženjering radi paralelizacije programa (3/3)
Odrediti kritične tačke: Gde se troši najviše vremena?
Analiza gledanjem kodaAnaliza pomoću alata za profilisanje koda
ParalelizacijaKrenuti od kritičnih tačakaNapraviti niz malih izmena, svaka praćena testiranjemŠabloni obezbeđuju vođenje kroz ovaj proces
24
Evaluacija projektaKoja je ciljna arhitektura?
Deljena memorija, distribuirana memorija, prosleđivanje poruka
Da li podaci imaju takve prostorne osobine (samo čitanje, akumuliranje, vremenska ograničenja) da se njihovim zavisnostima može baratati efikasno?Ako projekat zadovoljava, pređi na sledeći projektantski prostor
25