P3.2 Paralelno programiranje 2

Слични документи
P2.1 Projektovanje paralelnih algoritama 1

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

P11.3 Analiza zivotnog veka, Graf smetnji

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Рачунарска интелигенција

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

PowerPoint Presentation

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Tutoring System for Distance Learning of Java Programming Language

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft PowerPoint - C-4-1

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Microsoft PowerPoint - Predavanje3.ppt

Microsoft PowerPoint - Datoteke [Compatibility Mode]

PowerPoint Presentation

Grananje u programu predavač: Nadežda Jakšić

06 Poverljivost simetricnih algoritama1

Funkcije predavač: Nadežda Jakšić

Uvod u računarstvo 2+2

Postavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Programski jezik C

P11.2 Izbor instrukcija, IBURG

Programski jezik C

Algoritmi i arhitekture DSP I

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2

Увод у организацију и архитектуру рачунара 1

Tutoring System for Distance Learning of Java Programming Language

Problemi zadovoljavanja ogranicenja.

Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вуји

PASCAL UVOD 2 II razred gimnazije

P1.0 Uvod

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Pojačavači

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

07_PJISP_II_Predavanja

Satnica.xlsx

070-ALIP2-udzbenik.indb

Microsoft Word - 11 Pokazivaci

Vektorski procesori Najveći izvor paralelizma su DoAll petlje kako je već definisano u poglavlju o paralelizaciji petlji. Paralelizam tih petlji, ako

PowerPoint Presentation

Inženjering informacionih sistema

Programiranje za UNIX Okruženje unix procesa

Slide 1

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

P1.1 Analiza efikasnosti algoritama 1

Microsoft PowerPoint - GR_MbIS_12_IDEF

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

PowerPoint Presentation

P9.1 Dodela resursa, Bojenje grafa

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

_sheets.dvi

TEORIJA SIGNALA I INFORMACIJA

Microsoft Word - Master 2013

POSLOVNI INFORMACIONI SISTEMI I RA^UNARSKE

Посебни услови пружања TOTAL GROUP услуге

РАСПОРЕД ИСПИТА У ИСПИТНОМ РОКУ ЈАНУАР 1 ШКОЛСКЕ 2016/2017. ГОДИНЕ (последња измена ) Прва година: ПРВА ГОДИНА - сви сем информатике Име пр

1

Postojanost boja

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

ПА-4 Машинско учење-алгоритми машинског учења

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

УНИВЕРЗИТЕТ У НОВОМ САДУ ОБРАЗАЦ 6

PROMENLJIVE, TIPOVI PROMENLJIVIH

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - 10 PEK EMT Logicka simulacija 1 od 2 (2012).ppt [Compatibility Mode]

4 dan - DWeb

IV Spekulativno I predikatsko izvršavanje

Microsoft Word - Master 2013

Računarski praktikum I - Vježbe 01 - Uvod

Microsoft PowerPoint - Timer0 16F887.ppt [Compatibility Mode]

ЕКОНОМСКИ ФАКУЛТЕТ УНИВЕРЗИТЕТА У ПРИШТИНИ КОСОВСКА МИТРОВИЦА

Razvoj IS

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

PowerPoint Presentation

2015_k2_z12.dvi

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Техничко решење: Метода мерења ефективне вредности сложенопериодичног сигнала Руководилац пројекта: Владимир Вујичић Одговорно лице: Владимир Вујичић

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

Classroom Expectations

08 RSA1

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Kombinatorno testiranje

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

Microsoft Word - Smerovi 1996

Slide 1

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Microsoft Word - privitak prijedloga odluke

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

IV Spekulativno I predikatsko izvršavanje

Повезивање са интернетом

Техничко решење: Метода мерења реактивне снаге у сложенопериодичном режиму Руководилац пројекта: Владимир Вујичић Одговорно лице: Владимир Вујичић Аут

Programiranje 1

Транскрипт:

Paralelno programiranje II Analiza zavisnosti Struktura algoritma Pomoćne strukture Komunikacioni šabloni 1

4 Koraka paralelizacije programa 2

Evo algoritma. Gde je paralelizam? Dekompozicija zadataka Paralelizam u aplikaciji Dekompozicija podataka Ista obrada, više podataka Dekompozicija protočne obrade fabričke trake za podatke Lanci proizvođačapotrošača 3

Analiza zavisnosti Ako su data dva zadatka, kako odrediti da li se oni mogu bezbedno izvršavati u paraleli? 4

Bernštajnov uslov R i skup mem. lokacija koje čita zadatak T i (ulaz) W j skup lokacija u koje piše zadatak T j (izlaz) Dva zadatka, T 1 i T 2, mogu biti paralelna ako: Ulaz T 1 nije deo izlaza T 2 Ulaz T 2 nije deo izlaza T 1 Izlazi T 1 i T 2 se ne preklapaju 5

Primer: Da li ova dva zadatka mogu biti paralelna? 6

Primer: Da li ova dva zadatka mogu biti paralelna? R 1 ={x,y}, W 1 ={a}, R 2 ={x,z}, W 2 ={b} R 1 W 2 = {x,y} {b} = Ø R 2 W 1 = {x,z} {a} = Ø W 1 W 2 = {b} {a} = Ø 7

Četiri projektantska prostora Izražavanje algoritma I Pronalaženje paralelizma Uočavanje konkurentnih zadataka II Struktura algoritma Preslikavanje zadataka na procese radi korišćenja paralelnih arhitektura Konstruisanje programa III Pomoćne strukture Šabloni koda i struktura podataka IV Izvedbeni mehanizmi Mehanizmi niskog nivoa, koji se koriste za pisanje paralelnih programa 8

Projektantski prostor: Struktura algoritma Imamo određen skup paralelnih zadataka, šta je sledeće? Sledeći korak je preslikavanje zadataka na jedinice izvršenja (npr. procesi/niti) Važno je razmotriti Broj jedinica izvršenja koje podržava ciljna platforma Cenu deljenja informacije između jedinica izvršenja Izbegavati suvišno ograničavanje implementacije Treba da radi dobro na ciljnoj platformi Ali da bude dovoljno fleksibilno, da se lako adaptira za različite arhitekture 9

Glavni princip organizovanja Kako odrediti strukturu algoritma koja predstavlja preslikavanje zadataka na jedinice izvršenja? Paralelizam obično određuje glavni princip organizovanja Organizovanje po zadacima Organizovanje po dekompoziciji podataka Organizovanje po toku podataka 10

Organizacija po zadacima Rekurzivni program => podeli i zavladaj Nerekurzivni program => paralelizam zadataka 11

Paralelizam zadataka Praćenje zraka (ray tracing) Obrada za svaki zrak je odvojena i nezavisna Dinamika molekula Obrada među-atomskih sila, neke zavisnosti Zajednički činioci Zadaci su pridruženi iteracijama petlje Zadaci su uglavnom poznati na početku obrade Ne moraju se svi zadaci završiti da bi se došlo do konačnog rešenja 12

Podeli i zavladaj (divide & conquer) Za rekurzivni program: podeli i zavladaj Potproblemi ne moraju biti uniformni Može zahtevati dinamičko uravnoteženje opterećenja 13

Organizovanje po podacima Operacije na centralnoj strukturi podataka Nizovi i linearne strukture podataka Rekurzivne strukture podataka 14

Geometrijska dekompozicija Simulator gravitacionih tela Izračunati sile između parova tela i ažurirati ubrzanja VEC3D acc[num_bodies] = 0; for (i = 0; i < NUM_BODIES - 1; i++) { for (j = i + 1; j < NUM_BODIES; j++) { // Displacement vector VEC3D d = pos[j] pos[i]; // Force t = 1 / sqr(length(d)); // Components of force along displacement d = t * (d / length(d)); acc[i] += d * mass[j]; acc[j] += -d * mass[i]; } } 15

Rekurzivni podaci Obrade nad listama, stablima ili grafovima Obično se pokazuje da je jedini način da se reši problem, da se sekvencijalno ide kroz struktu podataka Ali, pojavljuju se i prilike da se operacije preoblikuju tako da se ostvari paralelizam 16

Primer rekurzivnih podataka: Pronalaženje korena Ako je data šuma usmerenih stabala sa korenom, za svaki čvor pronađi koren njegovog stabla Paralelni pristup: za svaki čvor pronađi prethodnikovog prethodnika, ponavljaj dok ima izmena O(log n) naspram O(n) 17

Kompromis: Količina posla naspram paralelizma Paralelno prestruktuiranje algoritma za pronalaženje korena dovodi do O(n log n) naspram O(n) za sekvencijalan pristup, ali O(log n) za paralelni pristup Većina strategija zasnovanih na ovom šablonu dopuštaju povećanje ukupne količine posla radi skraćenja vremena izvršenja na osnovu iskorišćenog paralelizma 18

Organizacija po toku podataka U nekim aplikacionim domenima, tok podataka nameće redosled zadataka Regularan, u jednom smeru, uglavnom stabilan tok Iregularan, dinamički, nepredvidivi tok podataka 19

Propusnost protočne obrade naspram kašnjenja Paralelizam protočne obrade je ograničen brojem stepeni protočne obrade Radi dobro ako je vreme punjenja i pražnjenja protočne obrade malo u odnosu na vreme obrade Mera performanse je obično propusnost Stopa kojom se podaci pojavljuju na kraju protočne obrade (npr. broj okvira u sekundi) Kašnjenje protočne obrade je važno za aplikacije u realnom vremenu Vremenski interval od ulaza podataka u protočnu obradu do izlaza 20

Koordinacija zasnovana na događajima U ovom šablonu interakcija zadataka radi obrade podataka se dešava u nepredvidivim intervalima vremena U aplikacijama koje koriste ovaj šablon moguća su međusobna blokiranja zadataka (deadlock) 21

Podržavajuće strukture SPMD (Single Program Multiple Data) Paralelizam petlje Vodeći/Radnik (Master/Worker) Grananje/Pridruživanje (Fork/Join) 22

SPMD šablon Jedan program više podataka: stvara programe iz jednog izvornog koda koji se izvršavaju na više procesora Inicijalizacija Dobavljanje jedinstvenog identifikatora Izvršenje istog programa na svakom procesoru Identifikator i ulazni podaci dovode do različitog ponašanja Distribuiranje podataka Dovršavanje (finalizacija) 23

Primer SPMD: Paralelna numerička integracija Računanje broja π numeričkom integracijom funkcije f(x)=4/(1+x 2 ) nad intervalom (0,1). static long num_steps = 100000; void main() { int i; double pi, x, step, sum = 0.0; step = 1.0 / (double) num_steps; for (i = 0; i < num_steps; i++){ x = (i + 0.5) * step; sum = sum + 4.0 / (1.0 + x*x); } pi = step * sum; printf( Pi = %f\n, pi); } 24

Računanje Pi sa integracijom (MPI) static long num_steps = 100000; void main(int argc, char* argv[]) { int i_start, i_end, i, myid, numprocs; double pi, mypi, x, step, sum = 0.0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_BCAST(&num_steps, 1, MPI_INT, 0, MPI_COMM_WORLD); i_start = myid * (num_steps/numprocs) i_end = i_start + (num_steps/numprocs) step = 1.0 / (double) num_steps; for (i = i_start; i < i_end; i++) { x = (i + 0.5) * step sum = sum + 4.0 / (1.0 + x*x); } mypi = step * sum; MPI_REDUCE(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf( Pi = %f\n, pi); MPI_Finalize(); } 25

Distribucija posla: Po bloku naspram Po ciklusu static long num_steps = 100000; void main(int argc, char* argv[]) { int i_start, i_end, i, myid, numprocs; double pi, mypi, x, step, sum = 0.0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_BCAST(&num_steps, 1, MPI_INT, 0, MPI_COMM_WORLD); i_start = myid * (num_steps/numprocs) i_end = i_start + (num_steps/numprocs) step = 1.0 / (double) num_steps; for (i = myid; i < num_steps; i += numprocs) { x = (i + 0.5) * step sum = sum + 4.0 / (1.0 + x*x); } mypi = step * sum; MPI_REDUCE(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf( Pi = %f\n, pi); MPI_Finalize(); } 26

SPMD izazovi Razdeliti podatke korektno Korektno kombinovati rezultate Ostvariti ravnomernu raspodelu posla Za programe koji zahtevaju dinamičko uravnoteženje opterećenja, neki drugi šablon je pogodniji 27

Šablon paralelizma petlje Mnogi programi su izraženi korišćenjem iterativnih konstrukcija Modeli programiranja kao što je OpenMP obezbeđuju direktive za automatsku dodelu iteracija petlje pojedinim jedinicama izvršenja Posebno dobar kada se kod ne može masovno prestruktuirati #pragma omp parallel for for(i = 0; i < 12; i++) C[i] = A[i] + B[i]; i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10 i = 11 28

Šablon vodeći/radnik (1/2) vodeći A B C D E A B C D E izvršioci 29

Šablon vodeći/radnik (2/2) Posebno relevantan za probleme koji koriste paralelizam zadataka gde zadaci nemaju zavisnosti Postiđujuće paralelni programi ( embarrassingly parallel ) Glavni izazov je određivanje kada je ceo problem obrađen (postoji potpuno rešenje) 30

Šablon grananja/pridruživanja Zadaci se stvaraju dinamički Zadaci mogu stvoriti još zadataka Zadacima se rukuje u skladu sa njihovim odnosima Zadatak predak stvara nove zadatke (grananje) zatim čeka da se završe (pridruživanje) pre nego nastavi sa obradom 31

Komunikacioni šabloni Tačka-tačka (point-to-point) Slanje svima (broadcast) Redukcija (reduction) 32

Struktura algoritma i organizacija Šabloni se mogu komponovati hijerarhijski tako da program koristi više od jednog šablona Paralelizam zadataka Podeli i zavladaj Geometrijska dekompozicija Rekurzivni podaci Protočna obrada Koordinacija na bazi događaja SPMD **** *** **** ** *** ** Paralelizam petlje Vodeći/ Radnik Grananje/ pridruživanje **** ** *** **** ** * * **** * ** **** ** **** **** 33