of 142 /142
Multiprocesorski sistemi Uvod u paralelno računarstvo Marko Mišić, Andrija Bošnjaković 13S114MUPS, 13E114MUPS, MS1MPS, RI5MS, IR4MPS, SI4MPS 2016/2017. Zasnovano na: Blaise Barney, Lawrence Livermore National Laboratory Introduction to Parallel Computing https://computing.llnl.gov/tutorials/parallel_comp/

MPS - Uvod

  • Author
    dangbao

  • View
    266

  • Download
    1

Embed Size (px)

Text of MPS - Uvod

  • Multiprocesorski sistemi

    Uvod u paralelno raunarstvo

    Marko Mii, Andrija Bonjakovi 13S114MUPS, 13E114MUPS,

    MS1MPS, RI5MS, IR4MPS, SI4MPS

    2016/2017. Zasnovano na:

    Blaise Barney, Lawrence Livermore National Laboratory

    Introduction to Parallel Computing

    https://computing.llnl.gov/tutorials/parallel_comp/

  • ta je paralelno raunarstvo? (1)

    Ranije je softver pisan za sekvencijalno izvravanje

    Izvrava se na pojedinanom raunaru, sa jednim procesorom

    Problem se razdvaja na vie diskretnih serija instrukcija

    Instrukcije se izvravaju redom, jedna za drugom

    Samo jedna instrukcija se moe izvravati u jednom trenutku

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 2/142

  • ta je paralelno raunarstvo? (2)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 3/142

  • ta je paralelno raunarstvo? (3)

    Paralelno raunarstvo predstavlja istovremeno korienje vie raunarskih resursa u cilju reavanja nekog problema

    Softver se izvrava na vie procesora

    Problem se razdvaja na vie delova koji se mogu reavati uporedno (u paraleli)

    Svaki deo problema se dalje razdvaja na serije diskretnih instrukcija

    Instrukcije iz svakog od delova se izvravaju istovremeno na razliitim procesorima

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 4/142

  • ta je paralelno raunarstvo? (4)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 5/142

  • ta je paralelno raunarstvo? (5)

    Raunarski resurs moe biti

    Pojedinani raunar sa vie procesora

    Odreen broj raunara povezanih mreom

    Kombinacija oba navedena

    Poeljne osobine problema koji se reava

    Mogunost da se podeli na delove koji se mogu istovremeno reavati

    Mogunost da bude reen u kraem vremenu korienjem viestrukih resursa

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 6/142

  • Moderni paralelni raunari (1)

    Skoro svi moderni stand-alone raunara podravaju neku formu paralelizma na nivou hardvera: Imaju vie funkcionalnih jedinica

    Vie nivoa keeva u paraleli (L1, L2)

    Vei broj jedinica za obradu skokova, dekodovanje instrukcija, rad sa celim brojevima i brojevima u pokretnom zarezu

    Grafiki procesori i drugi koprocesori

    Imaju vie izvrnih jedinica jezgara

    Mogu da izvravaju vie hardverski podranih niti istovremeno

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 7/142

  • Moderni paralelni raunari (2)

    Interkonekcione mree se koriste da poveu pojedinane raunare u paralelne raunarske klastere

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 8/142

  • Moderni paralelni raunari (3)

    Arhitektura tipinog klastera Svaki raunski vor je multiprocesorski sistem za sebe Vie raunskih vorova je povezano Infiniband mreom vorovi specijalne namene su takoe multiprocesori

    login, storage i gateway vorovi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 9/142

  • Zato koristiti paralelno raunarstvo? (1)

    Glavni razlozi Uteda na vremenu i trokovima (jeftine komponente)

    Mogunost reavanja veih i sloenijih problema

    Mogunost reavanja vie problema istovremeno Omoguavanje konkurentnosti

    Korienje sve dostupnijeg paralelnog hardvera

    Drugi razlozi Mogunost korienja nelokalnih slobodnih resursa

    (putem mree ili celokupnog Interneta)

    Prevazilaenje memorijskih ogranienja

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 10/142

  • Zato koristiti paralelno raunarstvo? (2)

    Ogranienja jednoprocesorskih sistema

    Brzina prenosa signala na ipu

    ograniena brzina prenosa bakarnih ica

    Ogranienja minijaturizacije

    Trenutno 32/22nm postupak, oekuje se zid na 9-11nm

    Ekonomska neisplativost daljeg razvoja

    Trendovi poslednjih godina ukazuju da je paralelizam budunost raunarstva

    Bre mree, napredak na polju distribuiranih sistema, multiprocesorski desktop raunari, GPU raunarstvo...

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 11/142

  • Zato koristiti paralelno raunarstvo? (4)

    Top500 lista

    Do 2020. godine, Exascale computing

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 12/142

  • Primeri korienja paralelnog raunarstva

    Primena u nauci i inenjerstvu Grand challenge problemi

    Simulacije u fizici, hemiji, geologiji, biologiji i tehnici Hemijske i nuklearne reakcije, ljudski genom,

    seizmike aktivnosti, prognoza vremena

    Komercijalne aplikacije Web pretraivai i web orijentisani servisi

    Big data, data mining, machine learning, deep learning

    Istraivanje nafte i gasa

    Medicinska dijagnostika i farmaceutika

    Virtuelna realnost

    Mrene multimedijalne tehnologije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 13/142

  • Osnovni koncepti i podela paralelnih raunara

  • Von Neumann arhitektura (1)

    Raunarski model koji se koristi preko 40 godina

    Procesor izvrava program koji se sastoji od sekvence operacija itanja i pisanja po memoriji

    Osnove dizajna Memorija se koristi da se uvaju instrukcije i podaci

    Programske instrukcije su kodirani podaci koji govore raunaru da uradi neto

    Podaci su informacije koje program koristi pri izvravanju

    Procesor dohvata instrukcije i podatke iz memorije, tumai instrukcije i onda ih sekvencijalno izvrava

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 15/142

  • Von Neumann arhitektura (2)

    Paralelni raunari i danas slede ovaj bazini dizajn

    Na nivou pojedinanih, funkcionalnih jedinica

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 16/142

  • Flynn klasina taksonomija (1)

    Jedna od najkorienijih klasifikacija paralelnih raunara

    Multiprocesorske arhitekture se dele prema dve nezavisne dimenzije: instrukcija (Instructions) i podataka (Data)

    Svaka od ove dve dimenzije moe imati dva stanja: Single i Multiple

    Na osnovu ovoga su izvedene etiri mogue klasifikacije paralelnih raunara

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 17/142

  • Flynn klasina taksonomija (2)

    SISD

    Single Instruction,

    Single Data

    SIMD

    Single Instruction,

    Multiple Data

    MISD

    Multiple Instruction,

    Single Data

    MIMD

    Multiple Instruction,

    Multiple Data

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 18/142

  • Single Instruction, Single Data (SISD) (1)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 19/142

  • Single Instruction, Single Data (SISD) (2)

    Sekvencijalni raunar

    Samo jedna instrukcija se izvrava u jednom ciklusu procesora (Single Instruction)

    Samo jedan tok podataka se koristi kao ulaz tokom jednog ciklusa procesora (Single Data)

    Izvravanje je deterministiko (predodreeno)

    Najstariji i do skora preovlaujui oblik raunara

    Stariji PC raunari, mainframe raunari

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 20/142

  • Single Instruction, Multiple Data (SIMD) (1)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 21/142

  • Single Instruction, Multiple Data (SIMD) (2)

    Vrsta paralelnog raunara Veliki broj jedinica za izvravanje malog kapaciteta Moderni centralni procesori imaju SIMD jedinice,

    kao i grafiki procesori

    Svi procesori izvravaju istu instrukciju tokom jednog ciklusa (Single Instruction)

    Svaki procesor moe raditi sa razliitim podatkom (Multiple Data)

    Sinhrono i deterministiko izvravanje Najpogodniji su za probleme koje karakterie

    visok stepen regularnosti Obrada slika, obrada audio signala,

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 22/142

  • Mulitple Instruction, Single Data (MISD) (1)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 23/142

  • Mulitple Instruction, Single Data (MISD) (2)

    Pojedinani tok podataka se deli na vie procesorskih jedinica (Single Data)

    Svaka procesorska jedinica radi nad podacima nezavisno, koristei nezavisan set instrukcija (Multiple Instruction)

    Malo pravih primera ove klase paralelnih raunara

    Eksperimentalni Carnegie-Mellon C.mmp raunar (1971)

    Mogua (uglavnom teorijska) polja primene

    Viefrekvencijski filtar koji radi sa jednim tokom podataka (pojedinanim signalom)

    Razbijanje pojedinane kodirane poruke korienjem vie razliitih kriptografskih algoritama

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 24/142

  • Multiple Instruction, Multiple Data (MIMD) (1)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 25/142

  • Multiple Instruction, Multiple Data (MIMD) (2)

    Trenutno najzastupljeniji tip paralelnih raunara

    Svaki procesor moe da izvrava razliit set instrukcija (Multiple Instruction)

    Svaki procesor moe da radi sa razliitim setom podataka (Multiple Data)

    Izvravanje moe biti sinhrono ili asinhrono, deterministiko ili nedeterministiko

    Veina dananjih superkompjutera, raunarski gridovi, SMP i CMP raunari, sadanji PC raunari

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 26/142

  • Memorijska arhitektura paralelnih raunara

  • Deljena memorija (1)

    Svi procesori u multiprocesorskom sistemu imaju mogunost da pristupaju svim memorijskim resursima kao globalnom adresnom prostoru

    Vie procesora radi nezavisno, ali koriste iste memorijske resurse

    Promene u memoriji od strane jednog procesora vidljive su ostalim procesorima

    Multiprocesori sa deljenom memorijom se prema vremenu pristupa memoriji mogu podeliti na dve klase

    UMA (Uniform Memory Access)

    NUMA (Non-Uniform Memory Access)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 28/142

  • Deljena memorija (2)

    Uniform Memory Access (UMA) Najea memorijska arhitektura

    kod Symmetric Multiprocessor (SMP) maina Procesori u SMP mainama su identini

    Podjednak pristup i vreme pristupa memoriji za sve procesore Najee se odrava koherencija ke memorija

    Koherencija kea se odrava na hardverskom nivou

    Non-Uniform Memory Access (NUMA) esto se ostvaruje kroz fiziko povezivanje

    dva ili vie SMP sistema Nemaju svi procesori podjednako vreme pristupa

    svim memorijama u sistemu Pristup memoriji kroz link je sporiji Moe se postii koherencija ke memorija (cc-NUMA),

    ali ona nije obavezna

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 29/142

  • Deljena memorija (3)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 30/142

  • Deljena memorija (4)

    Prednosti deljene memorije Globalni adresni prostor olakava programiranje ovakvih sistema

    Deljenje podataka izmeu zadataka je brzo (esto i uniformno) zbog blizine memorije procesorima

    Nedostaci deljene memorije Slaba skalabilnost izmeu memorije i broja procesora

    Poveanje broja procesora u sistemu geometrijski poveava saobraaj na deljenoj magistrali

    Kod sistema koji odravaju koherenciju ke memorija znaajno se poveava reijski saobraaj za odravanje koherencije

    Programer je odgovoran za sinhronizacione primitive za korektan pristup memoriji

    Cena ovakvih sistema znaajno raste sa porastom broja procesora u maini sa deljenom memorijom

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 31/142

  • Distribuirana memorija (1)

    Kod sistema sa distribuiranom memorijom postoji interkonekciona komunikaciona mrea koja povezuje procesore i memorije

    Svaki procesor ima svoju lokalnu memoriju koju koristi nezavisno od drugih procesora Memorijske adrese jednog procesora

    se ne mapiraju kod drugih procesora

    Ne postoji globalni adresni prostor

    Promene koje se dese u lokalnoj memoriji jednog procesora ne utiu na memorije drugih procesora

    Nije potreban koncept koherencije ke memorije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 32/142

  • Distribuirana memorija (2)

    Kada je procesoru potreban podatak iz memorije drugog procesora, obaveza je programera da definie nain na koji e i kada e podatak biti dobavljen

    Sinhronizacija izmeu zadataka je programerova odgovornost

    Interkonekciona mrea

    Moe biti jednostavna (Ethernet, Infiniband, Myrinet)

    Postoje i namenske interkonekcione mree poput hiper kocke, razliitih mesh-eva i sl.

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 33/142

  • Distribuirana memorija (3)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 34/142

  • Distribuirana memorija (4)

    Prednosti distribuirane memorije Memorija je skalabilna prema broju procesora

    Svaki procesor ima svoju memoriju

    Nema potrebe za odravanjem koherencije ke memorija Niski trokovi primene i eksploatacije

    Mogu se koristiti off-the-shelf komponente i opte mree

    Nedostaci distribuirane memorije Programer je odgovoran za celokupnu komunikaciju i

    razmenu podataka izmeu procesora Moe biti teko implementirati strukture podataka

    zasnovane na globalnoj memoriji na ovakvoj memorijskoj organizaciji

    Nejednako vreme pristupa razliitim memorijama

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 35/142

  • Hibridni pristup (1)

    Najbri raunari na svetu koriste hibridni pristup Postoji i Shared Memory i Distributed memory

    komponenta u sistemu (Distributed Shared Memory)

    Vie SMP maina je povezano putem interkonekcione mree Procesor unutar SMP maine

    moe pristupiti celokupnoj memoriji svoje maine

    Ukoliko je potrebno da se neki podaci prenesu iz memorije jedne SMP maine na drugu, koristi se mrea

    Hibridni pristup je trenutno preovlaujui

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 36/142

  • Hibridni pristup (2)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 37/142

  • Programski modeli za paralelno programiranje

  • Pregled

    Paralelni programski model predstavalja apstrakciju iznad hardvera i memorijskih arhitektura

    Korieni programski model najee zavisi od problema koji treba reiti, dostupnosti i linog izbora

    Postoji nekoliko paralelnih programskih modela Deljena memorija (shared memory)

    Niti (threads)

    Prosleivanje poruka (message passing)

    Data parallel

    Hibridni i drugi modeli

    Ovi programski modeli nisu specifini za pojedinani tip maine ili memorijske arhitekture Teorijski, svaki od ovih modela se moe implementirati

    na bilo kom hardveru

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 39/142

  • Model deljene memorije

    Zadaci dele zajedniki adresni prostor po kome itaju i piu asinhrono

    Razliiti mehanizmi kao to su brave i semafori se koriste za kontrolu pristupa deljenoj memoriji

    Ne postoji princip vlasnitva nad podatkom Komunikacija izmeu zadataka uproena,

    to doprinosi jednostavnijem razvoju programa

    Problem odravanja lokalnosti podataka Teko razumevanje i sloeno upravljanje

    razmetajem podataka Vrlo sloeno za prosenog korisnika (tj. programera)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 40/142

  • Niti (1)

    Prema ovom modelu paralelnog programiranja, proces moe imati vie konkurentnih grana izvravanja

    Jednostavnije od modela deljene memorije

    Niti su esto zastupljene u operativnim sistemima i sistemima sa deljenom memorijom

    Implementacije se obino sastoje od

    Biblioteka rutina koje se pozivaju iz paralelnog koda

    Skupa direktiva prevodiocu (ili pretprocesoru) ugraenih u sekvencijalni ili paralelni izvorni kod

    U oba sluaja programer je zaduen za paralelizaciju

    Niti su uobiajen koncept u raunarstvu

    Mnogo nekompatibilnih standarda i platformi ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 41/142

  • Niti (2)

    POSIX niti (Pthreads) Biblioteke rutina koje se pozivaju iz paralelnog koda IEEE POSIX 1003.1c standard (1995-2013) Implementacije samo za jezik C Vrlo eksplicitan paralelizam,

    programer mora da obrati panju na detalje

    OpenMP standard Zasnovan na direktivama prevodiocu (pretprocesoru) Moe se koristiti na uobiajenom (sekvencijalnom) kodu Fortran i C/C++ implementacije Portabilan i multiplatformski (ukljuuje Unix/Linux i Windows) Lak za korienje

    Microsoft je razvio sopstvenu implementaciju niti, nevezanu za pomenute standarde

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 42/142

  • Prosleivanje poruka (1)

    Skup zadataka koristi svoje lokalne memorije prilikom izraunavanja

    Vie zadataka moe postojati bilo na istoj fizikoj maini, bilo na odreenom broju maina

    Zadaci razmenjuju podatke komunicirajui putem slanja i primanja poruka

    Razmena podataka obino ukljuuje saradnju izmeu procesa koji uestvuju u komunikaciji Operacija slanja se mora upariti

    sa odgovarajuom operacijom za prijem

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 43/142

  • Prosleivanje poruka (2)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 44/142

  • Prosleivanje poruka (3)

    Implementacije Ovaj model se obino implementira kroz biblioteku

    rutina koje programer poziva iz izvornog koda

    Programer je odgovoran za paralelizaciju problema

    Message Passing Interface (MPI) MPI-1 (1994), MPI-2 (1996) i MPI-3 (2012)

    Trenutno je industrijski standard za razmenu poruka

    Kod arhitektura sa deljenom memorijom, MPI implementacije obino ne koriste mreu za komunikaciju izmeu zadataka, ve koriste deljenu memoriju zbog poboljanja performansi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 45/142

  • Data parallel model (1)

    Ponekad se naziva Partitioned Global Address Space (PGAS) Adresni prostor je globalno vidljiv

    Paralelizacija se vri nad skupom podataka Podaci su tipino organizovani u pravilnu strukturu,

    kao to su niz i kocka

    Skup zadataka zajedniki radi na istoj strukturi podataka Svaki zadatak radi na razliitom delu iste strukture Zadaci rade istu operaciju na njihovom delu posla Na sistemima sa deljenom memorijom,

    svi zadaci imaju pristup celoj strukturi kroz globalnu memoriju Na sistemima sa distribuiranom memorijom

    se struktura deli i postoji u delovima u lokalnoj memoriji svakog zadatka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 46/142

  • Data parallel model (2)

    Implementira se obino zadavanjem data-parallel instrukcija Ostvarenje ili kroz biblioteke potprograma

    ili kroz direktive data parallel kompajlerima

    esto eksperimentalna reenja Coarray Fortran 90/95, High Performance Fortran (HPF) i sl.

    Unified Parallel C (UPC)

    Global Arrays biblioteka za distribuirane sisteme

    Chapel jezik za Cray superraunare

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 47/142

  • Data parallel model (3)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 48/142

  • Drugi modeli (1)

    Hibridni model Bilo koja dva (ili vie) modela se kombinuju

    esta je kombinacija MPI i POSIX/OpenMP za hibridni model memorijske arhitekture (DSM)

    Sree se i kombinacija data parallel i MP modela

    Single Program Multiple Data (SPMD) Pojedinaan program se izvrava

    od strane vie zadataka simultano

    U svakom trenutku zadaci mogu izvravati iste ili razliite instrukcije unutar programa

    Pojedinaan zadatak moe izvravati samo deo programa, u zavisnosti od ugraene programske logike

    Svi zadaci mogu koristiti razliite podatke

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 49/142

  • Drugi modeli (2)

    Multiple Program Multiple Data (MPMD) Ovakve aplikacije imaju vie programa

    Dok se aplikacija izvrava u paraleli, svaki zadatak moe izvravati isti ili drugaiji program

    Svi zadaci mogu koristiti razliite podatke

    SPMD i MPMD su programski modeli visokog nivoa Mogu se izgraditi na bilo kojoj kombinaciji

    pomenutih paralelnih programskih modela

    GPGPU (General Purpose computation on GPU) Upotreba grafikog procesora (GPU) za raunanje

    Compute Unified Device Architecture (CUDA), OpenCL

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 50/142

  • Drugi modeli (3)

    SPMD

    MPMD

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 51/142

  • Razvoj paralelnih programa

  • Automatska i manuelna paralelizacija (1)

    Dizajn i implementacija paralelnih programa je tipino manuelni, iterativni proces

    Programer je odgovoran i za prepoznavanje i za implementaciju paralelizma u nekom programu

    esto je to vremenski zahtevan i sloen iterativni proces, podloan grekama

    Vremenom su razvijeni razliiti alati koji pomau prevoenje sekvencijalnog u paralelni kod

    Najee su to prevodioci ili pretprocesori prilagoeni da rade paralelizaciju koda

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 53/142

  • Automatska i manuelna paralelizacija (2)

    Potpuno automatska paralelizacija Prevodilac sam analizira izvorni kod i

    pronalazi delove pogodne za paralelizaciju Petlje su najpogodnije za paralelizaciju

    Ne daje uvek eljene rezultate Moe dovesti do pogrenih rezultata

    prilikom korienja paralelizovanog programa

    Performanse mogu da opadnu

    Nedostatak fleksibilnosti

    Paralelizacija upravljana od strane programera Direktive paralelnom kompajleru

    kako da paralelizuje odreeni deo koda Primer je OpenMP

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 54/142

  • Razumevanje problema koji se reava (1)

    Prvi korak u razvoju paralelnog softvera je razumevanje problema koji treba reiti u paraleli

    Ukoliko se polazi od postojeeg sekvencijalnog koda, potrebno je i njega dobro razumeti

    Potrebno je utvrditi da li je problem uopte mogue paralelizovati

    Razmotriti druge algoritme za reavanje istog problema

    esto su restrukturirani algoritmi pogodniji za paralelizaciju

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 55/142

  • Razumevanje problema koji se reava (2)

    Potrebno je paralelizovati najbitnije delove (hotspots) Delovi koda koji troe najvie vremena

    Nema svrhe paralelizovati delove koda koji malo koriste procesor

    Identifikovati inhibitore paralelizma (bottlenecks) Uobiajeno su to I/O operacije i komunikacija

    Vrlo esto su to zavisnosti po podacima

    Profajleri koda i programi za analizu performansi mogu pomoi pri odreivanju navedenih mesta

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 56/142

  • Razumevanje problema koji se reava (3)

    Primeri:

    Mnoenje dve matrice

    Problem izuzetno pogodan za paralelizaciju

    Raunanje jednog elementa rezultujue matrice je nezavisno u odnosu na druge

    Izraunavanje Fibonaijevih brojeva

    Problem nemogu za paralelizaciju

    Izraunavanje (k+2)-og broja u seriji zahteva poznavanje (k+1)-og i k-tog Fibonaijevog broja

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 57/142

  • Dekompozicija problema

    Jedan od prvih koraka prilikom dizajniranja paralelnih programa je podela (particionisanje) problema koji se reava na diskretne delove posla

    Diskretni delovi se potom alju razliitim paralelnim zadacima na obradu

    Dva tipa dekompozicije

    Dekompozicija domena

    Funkcionalna dekompozicija

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 58/142

  • Dekompozicija domena (1)

    Podaci u vezi sa problemom se dele

    Svaki paralelni zadatak potom radi na delu podataka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 59/142

  • Dekompozicija domena (2)

    Nekoliko naina za podelu podataka

    1D, 2D, ciklino

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 60/142

  • Funkcionalna dekompozicija (1)

    Svaki zadatak dobija deo problema koji treba da se rei

    Fokus je na raunskom poslu koji treba izvriti, a manje nad podacima koji se koriste prilikom raunanja

    Funkcionalna dekompozicija je pogodna za odreene klase problema

    Modelovanje ekosistema

    Procesiranje signala

    Modelovanje klimatskih promena

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 61/142

  • Funkcionalna dekompozicija (2)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 62/142

  • Funkcionalna dekompozicija (3)

    Primer modeliranje klimatskih promena

    Svaka komponenta modela je zaseban zadatak

    Komponente meusobno komuniciraju da dou do neophodnih podataka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 63/142

  • Komunikacija izmeu zadataka (1)

    Potreba za komunikacijom izmeu zadataka zavisi od tipa problema koji se reava Ne postoji potreba za komunikacijom

    Ovakvi problemi se nazivaju embarrassingly parallel, jer zahtevaju vrlo malo komunikacije izmeu zadataka

    Primeri su odreeni algoritmi za obradu slike

    Postoji potreba za komunikacijom

    Veina paralelnih aplikacija zahteva razmenu podataka izmeu paralelnih zadataka

    Simulacija klimatskih promena je takav primer Neophodna je komunikacija izmeu razliitih delova modela

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 64/142

  • Komunikacija izmeu zadataka (2)

    Komunikacija meu zadacima iziskuje dodatne reijske trokove Glavni izvor paralelnog overhead-a

    Zbog sinhronizacije, zaguenja komunikacionih kanala, ekanja

    Kanjenje (latency) i propusni opseg (bandwidth) utiu na performanse komunikacije

    Slanje velikog broja malih poruka dovodi do toga da kanjenje dominira u reijskim trokovima komunikacije

    Vidljivost komunikacije je bitan faktor

    Da li je komunikacija eksplicitna ili implicitna?

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 65/142

  • Komunikacija izmeu zadataka (3)

    Sinhrona i asinhrona komunikacija Sinhrona komunikacija zahteva

    neku vrstu handshaking protokola izmeu zadataka

    Moe je implementirati programer ili moe biti transparentna

    Sinhrona komunikacija je blokirajua, jer ostali posao mora da saeka dok se komunikacija ne zavri

    Asinhrona komunikacija dozvoljava prenos podataka izmeu zadataka nezavisno jedan od drugih

    Trenutak kada primalac stvarno prima podatke nije bitan, poto poiljalac moe da nastavi da radi drugi posao

    Asinhrona komunikacija je neblokirajua, jer poiljalac moe da nastavi da radi svoj posao

    Da li je dobitak od preklapanja komunikacije i raunanja vredan komplikovanja programskog koda?

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 66/142

  • Komunikacija izmeu zadataka (4)

    Opseg komunikacije

    Pojedinana, izmeu dva zadatka (point-to-point)

    Ukljuuje komunikaciju dva zadatka, od kojih se prvi ponaa kao proizvoa/poiljilac, a drugi kao potroa/primalac podataka

    Grupna, izmeu vie zadataka (collective)

    Ukljuuje komunikaciju vie zadataka, najee pripadnika iste grupe

    Efikasnost komunikacije

    Performanse istog modela variraju izmeu platformi

    Zavisi i od vrste mree za komunikaciju

    Koju mreu izabrati ukoliko ima vie dostupnih?

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 67/142

  • Primeri kolektivne komunikacije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 68/142

  • Reijsko vreme i kompleksnost

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 69/142

  • Sinhronizacija izmeu zadataka (1)

    Sinhronizacija je neizostavna za koordinaciju paralelnih zadataka

    Sinhronizacija na barijeri (barrier) Obino ukljuuje sve zadatke

    Svaki zadatak radi posao dok ne doe do barijere, kada prekida posao i blokira se

    Kada poslednji zadatak dosegne barijeru svi zadaci su sinhronizovani Barijeru obino sledi kritina sekcija

    koja se mora sekvencijalno izvriti

    Alternativno, zadaci se deblokiraju i nastavljaju svoj posao

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 70/142

  • Sinhronizacija izmeu zadataka (2)

    Brava (lock) Moe uestvovati bilo koji broj zadataka

    Samo jedan zadatak moe istovremeno da koristi bravu i ue u kritinu sekciju

    Prvi zadatak koji naie na slobodnu bravu je zakljuava i obavlja posao, ostali moraju da ekaju

    Semafori (semaphores) Moe uestvovati bilo koji broj zadataka

    Odreeni broj zadataka moe istovremeno da koristi semafor i koristi resurs ili ue u kritinu sekciju

    Blokirajui, binarni (brave) i brojaki semafori

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 71/142

  • Sinhronizacija izmeu zadataka (3)

    Uslovne promenljive (conditional variables) Naredni zadatak nastavlja tek kad prethodni zavri

    Postoji red zadataka koji ekaju na uslovnoj promenljivoj zadatak se obavezno blokira prilikom

    izvravanja operacije ekanja na uslovnoj promenljivoj

    Sinhrone komunikacione primitive Ukljuuje samo one zadatke koji komuniciraju

    Zahteva odreeni nivo koordinacije izmeu zadataka koji komuniciraju Pre nego to izvri slanje, poiljalac mora da dobije

    potvrdu da je primalac spreman da prihvati poruku

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 72/142

  • Zavisnosti po podacima (1)

    Zavisnost u programu postoji kada redosled izvravanja naredbi u programu utie na krajnji rezultat odreenog dela programa ili celog programa Zavisnost izmeu instrukcija postoji ako e izmena redosleda

    instrukcija uticati na rezultate programa Zavisnost po podacima nastaje usled korienja

    memorijskih lokacija od strane vie paralelnih zadataka

    Zavisnosti su primarni inhibitori paralelizma! Najee reenje je sinhronizacija zadataka

    Na sistemima sa distribuiranom memorijom je neophodne podatke potrebno razmeniti na sinhronizacionim takama

    Na sistemima sa deljenom memorijom je potrebno je sinhronizovati operacije itanja i upisa podataka izmeu paralelnih zadataka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 73/142

  • Zavisnosti po podacima (2)

    Primer loop-dependent zavisnosti po podacima DO 500 J = MYSTART,MYEND

    A(J) = A(J-1) * 2.0 500 CONTINUE

    Vrednost A(J-1) se mora izraunati pre vrednosti A(J) i stoga postoji zavisnost po podacima Paralelizam je onemoguen

    Loop-dependent zavisnosti je jako bitno uoiti prilikom razvoja paralelnih programa, jer to utie na paralelizaciju petlji, koja se najee vri u procesu paralelizacije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 74/142

  • Zavisnosti po podacima (3)

    Primer loop-independent zavisnosti po podacima task 1 task 2

    ------ ------ X = 2 X = 4 . . . . Y = X**2 Y = X**3

    Paralelizam je onemoguen, jer izraunavanje vrednosti Y zahteva poznavanje vrednosti X, koja zavisi od toga da li e vrednost X biti slata izmeu zadataka i koji e je zadatak prvi menjati

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 75/142

  • Balansiranje optereenja (1)

    Balansiranje optereenje (load balancing) se odnosi na podelu posla meu zadacima tako da svi podaci budu zauzeti sve vreme

    Osnovni cilj je da svi zadaci stalno neto rade

    Primer barijere svi zavise od najsporijeg zadatka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 76/142

  • Balansiranje optereenja (2)

    Ravnomerna podela posla svim zadacima Podela iteracija petlji, ravnomerna raspodela podataka

    Statika i dinamika podela posla

    Dinamika podela posla Neke vrste problema izazivaju neravnomerno optereenje

    i kad su podaci podjednako podeljeni po zadacima Retko posednuti nizovi i retko posednute matrice Adaptivne tehnike obrade, kada odreeni zadaci imaju potrebu

    da izvre finiju obradu nad odreenim podacima

    Veliina posla se ne moe unapred predvideti Korienje rasporeivaa i depoa poslova

    moe reiti problem (scheduler - task pool) Kada jedan zadatak zavri deo posla,

    staje u red i eka da dobije sledei

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 77/142

  • Granularnost (1)

    Odnos vremena potroenog na raunanje i vremena potroenog na komunikaciju (computation to communication ratio) Periodi u kojima se vri neki raunski posao su

    odvojeni od perioda kada se vri komunikacija sinhronizacionim dogaajima

    Fine-grain paralelizam Relativno mala koliina raunskog posla

    se izvri izmeu dve komunikacije Olakava balansiranje optereenja Veliko reijsko vreme za komunikaciju

    Moda ak due od vremena potrebnog za raunski posao

    Smanjena mogunost za popravljanje performansi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 78/142

  • Granularnost (2)

    Coarse-grain paralelizam Relativno velika koliina raunskog posla se

    izvri izmeu dva komunikaciona dogaaja

    Vie mogunosti za popravljanje performansi

    Tee je odrati balansiranje optereenja

    Bolji ukoliko je reijsko vreme komunikacije i sinhronizacije veliko u odnosu na vreme izvravanja

    Izbor najvie zavisi od konkretnog problema i platforme

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 79/142

  • I/O operacije

    Ulazno-izlazne operacije su esto inhibitor paralelizma

    Mogua reenja Neke platforme nude paralelne fajl sisteme

    GPFS, Lustre, OrangeFS/PVFS

    Podrka u okviru MPI-2 standarda

    Nedovoljna zrelost

    Smanjiti I/O poslove na minimum

    Korienje veih blokova podataka za upis

    Izbegavanje rada sa malim fajlovima

    Lokalizacija I/O poslova u manji broj zadataka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 80/142

  • Analiza performansi paralelnih programa

    Znaajno komplikovanija nego kod sekvencijalnih programa

    Slino je i sa debugging-om

    Analizu performansi je potrebno izvriti i pre i posle paralelizacije programa

    Bitno je odrediti odnos vremena raunanja i vremena komunikacije

    Postoji veliki broj alata za ovu namenu

    Razliiti tajmeri, profajleri i namenski alati

    Neki su multiplatformski

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 81/142

  • Ubrzanje

    Ubrzanje (p procesora) = (speedup)

    Za problem fiksne veliine (ulazni podaci), performanse = 1/vreme

    Ubrzanje (p procesora) =

    Koliko je ubrzanje mogue?

    Performanse (p procesora)

    Performanse (1 procesor)

    Vreme (1 procesor)

    Vreme(p procesora)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 82/142

  • sekvencijalni deo aplikacije, p broj procesora

    Ti vreme izvravanja sa i procesora

    Ubrzanje je ogranieno sekvencijalnim delom aplikacije nezavisno od broja procesora

    Amdalov zakon (1)

    p

    TTTp

    11

    1

    1

    11111

    11

    lim1

    1

    TT

    TTTTT

    TT

    pp

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 83/142

  • sekvencijalni deo aplikacije, p broj procesora Ti vreme izvravanja sa i procesora

    Ubrzanje je ogranieno sekvencijalnim delom

    aplikacije nezavisno od broja procesora

    Amdalov zakon (2)

    1

    1

    1lim

    11limlim

    111

    1

    111

    pp

    p

    pS

    p

    pS

    ppp

    p

    11 p

    pS p

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 84/142

  • Vreme u zavisnosti od broja procesora i udela sekvencijalnog dela aplikacije

    Zavisnost vremena izvravanja od broja procesora

    0,00

    20,00

    40,00

    60,00

    80,00

    100,00

    120,00

    1

    10

    19

    28

    37

    46

    55

    64

    73

    82

    91

    10

    Broj procesora

    Vre

    me Vreme 0,1

    Vreme 0,5

    Vreme 0,9

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 85/142

  • Ubrzanje u zavisnosti od broja procesora i udela sekvencijalnog dela aplikacije

    Zavisnost ubrzanja od broja procesora

    0,00

    1,00

    2,00

    3,00

    4,00

    5,00

    6,00

    7,00

    8,00

    9,00

    10,00

    1

    10

    19

    28

    37

    46

    55

    64

    73

    82

    91

    10

    Broj procesora

    Vre

    me Ubrzanje 0,1

    Ubrzanje 0,5

    Ubrzanje 0,9

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 86/142

  • Ogranienja paralelnog programiranja (1)

    Sloenost

    Paralelne aplikacije su za red veliine sloenije od sekvencijalnih programa

    Ne samo da postoji vie tokova izvravanja programa, ve postoji i tok podataka meu njima

    Paralelno programiranje zahteva da programer potroi vie vremena prilikom dizajna programa, kodiranja, debagovanja, podeavanja performansi i odravanja

    Pridravanje uobiajenih tehnika razvoja softvera je znaajno ako na projektu radi vei tim

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 87/142

  • Ogranienja paralelnog programiranja (2)

    Prenosivost (portability)

    Situacija je prilino dobra, jer postoji nekoliko standarda za paralelno programiranje

    MPI, POSIX threads, HPF, OpenMP standardi

    Problem sa razliitim implementacijama standarda na razliitim platformama

    Znaajan uticaj operativnih sistema

    Hardverske platforme mogu biti znaajno razliite i mogu uticati na prenosivost

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 88/142

  • Ogranienja paralelnog programiranja (3)

    Skalabilnost Prosto dodavanje novih resursa (procesora) esto nije reenje

    Moe dovesti do zasienja ili opadanja performansi zbog niza faktora

    Korieni algoritam po svojoj prirodi moe imati ogranienja po pitanju skalabilnosti

    Hardver znaajno utie na skalabilnost Propusni opseg magistrale na SMP mainama Propusni opseg komunikacione mree Ukupna raspoloiva memorija Brzina (takt) procesora

    Paralelne biblioteke mogu ograniiti skalabilnost

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 89/142

  • Ogranienja paralelnog programiranja (4)

    Zahtevi za resursima Da bi se smanjilo ukupno vreme izvravanja programa

    potrebno je potroiti vie procesorskog vremena

    Paralelni programi mogu zahtevati vie memorije za svoje izvravanje Replikacija podataka na vie procesora

    Dodatni troak za paralelne biblioteke i podsisteme

    Reijski trokovi paralelizacije (overhead) Kreiranje zadataka, komunikacija,

    pokretanje paralelnog okruenja

    Paralelizacija esto nije reenje za probleme malih dimenzija!

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 90/142

  • Primeri paralelnih programa

  • Primeri paralelnih programa

    Raunanje broja PI

    Obrada 2D niza (array processing)

    Simple heat equation problem

    1-D Wave Equation problem

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 92/142

  • Raunanje broja PI (1)

    Jedan jednostavan algoritam za priblino raunanje broja PI

    Upisati krug u kvadrat

    Sluajno generisati take u datom kvadratu

    Utvrditi broj taaka u kvadratu koje su istovremeno i u krugu

    PI se moe priblino izraunati po formuli

    PI = 4.0 * (broj taaka u krugu)/(ukupan broj taaka)

    to se vie taaka generie, aproksimacija je bolja

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 93/142

  • Raunanje broja PI (2)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 94/142

  • Raunanje broja PI (3)

    Sekvencijalni kod

    npoints = 10000 circle_count = 0 do j = 1,npoints generate 2 random numbers between 0 and 1 xcoordinate = random1 ; ycoordinate = random2 if (xcoordinate, ycoordinate) inside circle then circle_count = circle_count + 1 end do PI = 4.0*circle_count/npoints

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 95/142

  • Raunanje broja PI (4)

    Veina vremena u izvravanju ovog koda bi bila potroena na izvravanje petlje

    Jo jedan od embarrassingly parallel problema Raunski zahtevan, minimalna komunikacija i I/O

    Paralelna strategija Razbiti petlju na delove koje e izvravati zadaci

    Svaki zadatak obavlja svoj deo raunanja petlje

    Ne postoje zavisnosti po podacima, pa nema ni komunikacije meu zadacima

    Koristi se SPMD model Jedan zadatak se ponaa kao master i sakuplja rezultate

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 96/142

  • Raunanje broja PI (5)

    npoints = 10000 circle_count = 0 p = number of tasks num = npoints/p find out if I am MASTER or WORKER do j = 1,num generate 2 random numbers between 0 and 1 xcoordinate = random1 ; ycoordinate = random2 if (xcoordinate, ycoordinate) inside circle then circle_count = circle_count + 1 end do

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 97/142

  • Raunanje broja PI (6)

    if I am MASTER receive from WORKERS their circle_counts compute PI (use MASTER and WORKER calculations) else if I am WORKER send to MASTER circle_count endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 98/142

  • Obrada 2D niza (1)

    Radi se obrada nad elementima 2D niza, a raunski posao nad svakim elementom je nezavisan u odnosu na druge

    Sekvencijalni program rauna jedan element u jednom trenutku idui sekvencijalno kroz niz

    Ceo problem je raunski veoma zahtevan

    Problem je tzv. embarrassingly parallel, jer je izraunavanje jednog elementa nezavisno od drugih elemenata

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 99/142

  • Obrada 2D niza (2)

    Sekvencijalno reenje

    do j = 1,n do i = 1,n a(i,j) = fcn(i,j) end do end do

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 100/142

  • Obrada 2D niza (3)

    Paralelno reenje

    Elementi niza se podele tako da svaki procesor dobije jednu podmatricu na obradu

    Prilikom izbora eme za distribuciju podmatrica, gleda se da maksimizuje korienje ke memorije

    Komunikacija izmeu zadataka nije potrebna zbog karakteristika problema

    Nakon to se matrica distribuira, svaki zadatak izvrava deo petlje, u zavisnosti koji deo podataka je dobio na obradu

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 101/142

  • Obrada 2D niza (4)

    Primer koda

    do j = mystart, myend do i = 1,n a(i,j) = fcn(i,j) end do end do

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 102/142

  • Obrada 2D niza (5)

    Jedno mogue reenje

    Implementirati SPMD model

    Master zadatak inicijalizuje niz, alje podatke radnicima i prima rezultate

    Zadatak-radnik prima podatke, izvrava svoj deo raunanja i alje rezultate masteru

    Ovakvo reenje se moe oblikovati prema pseudo-kodu datom na sledeoj stranici

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 103/142

  • Obrada 2D niza (6)

    find out if I am MASTER or WORKER if I am MASTER initialize the array send each WORKER info on part of array it owns send each WORKER its portion of initial array receive from each WORKER results

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 104/142

  • Obrada 2D niza (7)

    else if I am WORKER receive from MASTER info on part of array I own receive from MASTER my portion of initial array # calculate my portion of array do j = my first column,my last column do i = 1,n a(i,j) = fcn(i,j) end do end do send MASTER results endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 105/142

  • Obrada 2D niza (8)

    Prethodno reenje prikazuje statiko balansiranje optereenja

    Svaki zadatak dobija podjednaku koliinu posla

    Ukoliko su procesori razliitih karakteristika, moe doi do gubitka procesorskog vremena u ekanju

    Statiko balansiranje optereenje obino nije problem ukoliko zadaci izvravaju podjednak posao na identinim mainama

    Ukoliko postoji problem balansiranosti optereenja, moe se koristiti ema bazena poslova (pool of tasks) za reavanje problema

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 106/142

  • Obrada 2D niza (9)

    Depo poslova (task pool) Postoje dve vrste procesa: master i proces-radnik

    Master proces

    Sadri i odrava depo poslova koje radnici treba da obave

    alje radniku posao kada to ovaj zahteva

    Sakuplja rezultate od procesa-radnika

    Po potrebi, i master moe da se ukljui u obavljanje posla

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 107/142

  • Obrada 2D niza (10)

    Proces-radnik

    Dobija poslove od master procesa

    Izvrava raunanje

    alje rezultate master procesu

    Proces-radnik ne zna pre vremena izvravanja koji deo posla e obaviti i koliko poslova

    Dinamiko balansiranje optereenja se deava u vreme izvravanja

    Bri procesi-radnici dobijaju vie posla da obave

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 108/142

  • Obrada 2D niza (11)

    find out if I am MASTER or WORKER if I am MASTER do until no more jobs send to WORKER next job receive results from WORKER end do tell WORKER no more jobs

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 109/142

  • Obrada 2D niza (12)

    else if I am WORKER do until no more jobs receive from MASTER next job calculate array element: a(i,j) = fcn(i,j) send results to MASTER end do endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 110/142

  • Obrada 2D niza (13)

    Depo poslova

    U datom primeru, svaki zadatak je smatrao jedan element niza za poseban posao (job)

    Primer fine-grain implementacije

    Fine-grain implementacije podrazumevaju vie reijskog vremena za komunikaciju, kako bi se smanjilo rasipanje procesorskog vremena

    Optimalnije reenje bi bilo da svaki posao koji se alje sadri veu koliinu raunskog posla

    Koliina posla zavisi od konkretnog problema

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 111/142

  • Simple heat equation problem (1)

    Veina paralelnih problema zahteva komunikaciju meu zadacima

    Postoji itava klasa problema koji zahtevaju komunikaciju sa susednim zadacima

    Simple heat equation problem opisuje promenu temperature na nekom prostoru kroz vreme, kada su poznati poetna temperatura i granini uslovi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 112/142

  • Simple heat equation problem (2)

    Postoji konana ema za reavanje ovog problema numeriki na kvadratnoj povrini

    Poetna temperatura na granicama je nula, a u sredini je visoka

    Granina temperatura se uvek dri na nuli

    Kvadratna povrina se deli na mreu manjih kvadrata

    Predstavljaju se matricom iji elementi predstavljaju temperaturu odgovarajueg polja u kvadratu

    Koristi se time stepping algoritam izraunaju se temperature svih polja u datom vremenskom trenutku, pa se prelazi na sledei vremenski trenutak

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 113/142

  • Simple heat equation problem (3)

    Izraunavanje vrednosti jednog elementa zavisi od vrednosti susednih elemenata

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 114/142

  • Simple heat equation problem (4)

    Sekvencijalno reenje

    do iy = 2, ny 1 do ix = 2, nx 1 u2(ix, iy) = u1(ix, iy) + cx * (u1(ix+1,iy) + u1(ix-1,iy) - 2.*u1(ix,iy)) + cy * (u1(ix,iy+1) + u1(ix,iy-1) - 2.*u1(ix,iy)) end do end do

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 115/142

  • Simple heat equation problem (5)

    Jedno paralelno reenje

    Implementirati SPMD model

    Cela matrica se deli na i svaki zadatak dobija deo posla

    Master proces alje podatke procesima-radnicima, proverava konvergenciju reenja i sakuplja rezultate

    Procesi-radnici raunaju podatke, komuniciraju po potrebi sa susednim procesima i alju rezultate masteru

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 116/142

  • Simple heat equation problem (6)

    Postoje zavisnosti po podacima

    Unutranji elementi koji pripadaju zadatku ne zavise od drugih zadataka

    Granini elementi zahtevaju komunikaciju, jer su im potrebni podaci iz susednih zadataka

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 117/142

  • Simple heat equation problem (7)

    find out if I am MASTER or WORKER if I am MASTER initialize array send each WORKER starting info and subarray do until all WORKERS converge gather from all WORKERS convergence data broadcast to all WORKERS convergence signal end do receive results from each WORKER

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 118/142

  • Simple heat equation problem (8)

    else if I am WORKER receive from MASTER starting info and subarray do until solution converged update time send neighbors my border info receive from neighbors their border info update my portion of solution array determine if my solution has converged send MASTER convergence data receive from MASTER convergence signal end do send MASTER results endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 119/142

  • Simple heat equation problem (9)

    U prethodnom reenju je pretpostavljeno da je komunikacija izmeu zadataka blokirajua Blokirajua komunikacija podrazumeva da zadatak ne nastavlja

    dalje sa izvravanjem dok god primalac ne preuzme podatke

    U prethodnom reenju susedni zadaci razmene podatke, a zatim svaki od njih izrauna svoj deo matrice

    Vreme raunanja se moe esto smanjiti korienjem neblokirajue komunikacije Neblokirajua komunikacija dozvoljava

    da se nastavi sa radom dok komunikacija jo traje

    Svaki zadatak moe da izrauna svoje unutranje elemente dok se vri razmena podataka o graninim elementima, a zatim da izrauna vrednost svojih graninih elemenata

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 120/142

  • Simple heat equation problem (10)

    find out if I am MASTER or WORKER if I am MASTER initialize array send each WORKER starting info and subarray do until all WORKERS converge gather from all WORKERS convergence data broadcast to all WORKERS convergence signal end do receive results from each WORKER

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 121/142

  • Simple heat equation problem (11)

    else if I am WORKER receive from MASTER starting info and subarray do until solution converged update time non-blocking send neighbors my border info non-blocking receive neighbors border info update interior of my portion of solution array wait for non-blocking communication complete update border of my portion of solution array

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 122/142

  • Simple heat equation problem (12)

    determine if my solution has converged send MASTER convergence data receive from MASTER convergence signal end do send MASTER results endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 123/142

  • 1-D Wave Equation problem (1)

    Treba izraunati amplitudu talasa du uniformne, vibrirajue ice nakon odgovarajueg vremenskog trenutka

    Raunanje ukljuuje

    Vrednost amplitude talasa na y osi

    Poziciju take koja se prati du x ose

    Presene take talasa du ice

    Promenu amplitude talasa u diskretnim vremenskim intervalima

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 124/142

  • 1-D Wave Equation problem (2)

    Amplituda talasa u jednoj taki se izraunava po formuli

    A(i,t+1) = (2.0 * A(i,t)) - A(i,t-1)+ (c * (A(i-1,t) - (2.0 * A(i,t)) + A(i+1,t)))

    Amplituda talasa u nekoj taki zavisi i od susednih taaka i od amplitude take u prethodnim vremenskim trenucima

    Paralelno reenje e zahtevati komunikaciju

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 125/142

  • 1-D Wave Equation problem (3)

    Mogue reenje

    Implementirati SPMD model

    Talas predstaviti pomou niza amplituda u izabranim takama

    Niz amplituda podjednako podeliti i poslati podnizove svim zadacima koji rade

    Obrada svake take zahteva podjednako vreme, tako da svi zadaci treba da dobiju jednak broj taaka

    Obratiti panju da zadaci dobiju to vei kontinualni deo niza, kako bi se izbegla nepotrebna komunikacija

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 126/142

  • 1-D Wave Equation problem (4)

    Komunikacija potrebna na granicama podnizova

    susedni zadaci e morati da razmenjuju podatke

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 127/142

  • 1-D Wave Equation problem (5)

    find out number of tasks and task identities #Identify left and right neighbors left_neighbor = mytaskid 1 right_neighbor = mytaskid +1 if mytaskid = first then left_neigbor = last if mytaskid = last then right_neighbor = first find out if I am MASTER or WORKER if I am MASTER initialize array send each WORKER starting info and subarray else if I am WORKER receive starting info and subarray from MASTER endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 128/142

  • 1-D Wave Equation problem (6)

    #Update values for each point along string #In this example the master participates in calculations do t = 1, nsteps send left endpoint to left neighbor receive left endpoint from right neighbor send right endpoint to right neighbor receive right endpoint from left neighbor #Update points along line do i = 1, npoints newval(i) = (2.0 * values(i)) - oldval(i) + (sqtau * (values(i-1) - (2.0 * values(i)) + values(i+1))) end do end do

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 129/142

  • 1-D Wave Equation problem (7)

    #Collect results and write to file if I am MASTER receive results from each WORKER write results to file else if I am WORKER send results to MASTER endif

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 130/142

  • Opta terminologija

  • Opta terminologija (1)

    Zadatak (task) Logiki diskretan deo posla, tipino program ili

    skup instrukcija koje izvrava procesor

    Paralelni zadatak (parallel task) Zadatak koji se bezbedno moe izvriti na

    multiprocesorskom sistemu (daje korektne rezultate)

    Sekvencijalno izvravanje (serial execution) Izvravanje programa sekvencijalno,

    jedna instrukcija u jednom trenutku

    U svim paralelnim programima postoje sekcije koje se moraju izvriti sekvencijalno

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 132/142

  • Opta terminologija (2)

    Paralelno izvravanje (parallel execution) Izvravanje programa u vidu vie zadataka koji mogu

    da izvravaju razliite instrukcije u istom trenutku

    Deljena memorija (shared memory) U hardverskom smislu, to je raunarska arhitektura

    kod koje svi procesori imaju direktan pristup zajednikoj, deljenoj fizikoj memoriji

    U programskom smislu, to je model kod koga svi paralelni zadaci imaju istu sliku memorije i mogu direktno da pristupe istim logikim memorijskim lokacijama gde god se fizika memorija stvarno nalazi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 133/142

  • Opta terminologija (3)

    Distribuirana memorija (distributed memory) Hardverski, model zasnovan na

    pristupu fizikoj memoriji putem mree

    Programski, zadaci logiki vide samo podatke iz svog adresnog prostora i za razmenu podataka sa drugim zadacima koriste komunikacione primitive

    Komunikacija (communication) Paralelni zadaci imaju potrebu da razmenjuju podatke

    Vie naina da se to ostvari

    Ovaj termin se upotrebljava da oznai razmenu podataka bez obzira na nain na koji se to radi

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 134/142

  • Opta terminologija (4)

    Sinhronizacija (synchronization) Koordinacija paralelnih zadataka

    u vremenu izvravanja, po pravilu u vezi sa komunikacijom

    esto se implementira kao taka u programu koju zadatak ne sme da pree pre nego to drugi zadaci dostignu logiki ekvivalentnu taku (barijera)

    Sinhronizacija obino ukljuuje stanje ekanja bar jednog zadatka, i stoga produava vreme izvravanja paralelne aplikacije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 135/142

  • Opta terminologija (5)

    Granularnost (granularity) U paralelnom raunarstvu, to je kvalitativna mera

    odnosa korisnog rada (raunskog posla) i komunikacije

    Gruba (coarse grain) granularnost

    Relativno velika koliina raunskog posla se obavi izmeu dve komunikacije

    Fina (fine grain) granularnost

    Relativno mala koliina raunskog posla se obavi izmeu dve komunikacije

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 136/142

  • Opta terminologija (6)

    Primeeno ubrzanje (observed speedup) Odnosi se na ubrzanje dobijeno paralelizacijom

    nekog sekvencijalnog koda

    Definie se kao odnos vremena sekvencijalne i paralelizovane aplikacije

    Jedan od najjednostavnijih i najkorienijih indikatora performansi paralelnog programa

    Masovno paralelan (massively parallel) Odnosi se na hardver koji obuhvata mnogo procesora

    Znaenje rei mnogo raste, a trenutno se moe opisati sa 5 ili 6 cifara

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 137/142

  • Opta terminologija (7)

    Reijsko vreme paralelizacije (parallel overhead) Koliina vremena

    potrebna da se koordiniu paralelni zadaci

    Ukljuuje faktore kao to su vreme pokretanja i zavretka, sinhronizacija, komunikacija, utroak vremena zbog paralelnih prevodilaca, biblioteka, alata, operativnih sistema

    Klaster raunarstvo (cluster computing) Upotreba uobiajenih komponenti (procesora, mrenih

    komponenti i slino) za izgradnju paralelnog sistema

    Raunarstvo visokih performansi (supercomputing / high performance computing) Upotreba najmonijih raunara za reavanje velikih problema

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 138/142

  • Opta terminologija (8)

    Viejezgarni procesori (multi-core processors) Procesori sa vie jezgara na istom ipu

    Skalabilnost (scalability) Odnosi se na mogunost paralelnog sistema

    da proporcionalno ubrza svoj rad sa dodavanjem novih procesora (resursa) u sistem

    Faktori koji utiu na skalabilnost Hardver, naroito propusni opseg procesora i memorije i

    mrena komunikacija

    Algoritam i karakteristike same paralelne aplikacije

    Reijsko vreme paralelizacije (parallel overhead)

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 139/142

  • Opta terminologija (9)

    Kanjenje (latency) Vreme potrebno da se prazna poruka prenese

    iz take A u taku B i najee se izraava u mikrosekundama

    Propusni opseg (bandwidth) Predstavlja koliinu podataka koja moe da se prenese

    u jedinici vremena i izraava se u MB/s

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 140/142

  • Izvori o paralelnom programiranju

  • Literatura i izvori

    Blaise Barney, Introduction to Parallel Computing, https://computing.llnl.gov/tutorials/parallel_comp/, 2016.

    Ian Foster, Designing and Building Parallel Programs

    Grama, Gupta, Karypis, Kumar, Introduction to Parallel Computing

    Culler, Singh, Gupta, Parallel Computer Architecture (A Hardware/Software Approach), 1998.

    ETF Beograd::Multiprocesorski sistemi::Uvod u paralelno raunarstvo 142/142

    https://computing.llnl.gov/tutorials/parallel_comp/