25
Paralelno programiranje I Projektantski šabloni Otkrivanje paralelizma 1

Paralelno programiranje I - University of Novi Sad Paralelno...Zadaci ne treba da budu vezani za specifičnu arhitekturu Fiksni zadaci naspram parametrizovanih zadataka Efikasnost

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

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