You are on page 1of 31

Zato paralelno programiranje?

Zato ba sada?
Pitanja na koja emo odgovoriti

to je paralelno programiranje i zato ga koristiti?


Objasniti zato paralelno raunarstvo postaje mainstream
Objasniti zato je potrebno eksplicitno paralelno
programiranje
Kako se paralelno programiranje razlikuje od
konkurentnog?

Pablo Halpern, 2014 (CC BY 4.0) 2


to moemo raditi sa brim raunalima?

Rjeavati probleme bre


Reducirati vrijeme potrebno za velike poslove
Poveati odziv u interaktivnim aplikacijama
Dobiti bolja rjeenja za istu koliinu vremena
Uveati rezoluciju modela
Uiniti modele sofisticiranijim

Pablo Halpern, 2014 (CC BY 4.0) 3


to je paralelizam?

Paralelne linije u geometriji: Paralelni zadaci u


programiranju

linije se ne dodiruju zadaci nisu u interakciji

4
to je paralelno raunanje?

Pokuati ubrzati rjeenje odreenog zadatka na nain da:


1. Podijelimo zadatak u pod-zadatke
2. Izvravanje pod-zadataka simultano na viestrukim procesorima

Uspjeni pokuaji primjene zahtijevaju


1. Razumijevanje gdje paralelizam moe biti efektivan
2. Znanje o dizajniranju i implementaciji dobrih rjeenja

Pablo Halpern, 2014 (CC BY 4.0) 5


Zato uiti paral.program.?

Paralelno programiranje je nuno da efikasno iskoristimo


dananji viejezgreni hardver:
Uveati propusnost
Reducirati latenciju
Reducirati konzumaciju energije

Besplatan ruak je gotov Herb Sutter


elimo aplikacije koje se izvravaju bre
Frekvencije se vie ne poveavaju eksponencijalno
6
Moore-ov zakon
Broj tranzistora je
Intel CPU poveava,
Introductions

Ali brzina radnog


takta je na
vrhuncu~5GHz.

Source: Herb Sutter, The free lunch is over: a fundamental turn toward
concurrency in software, Dr. Dobb's Journal, 30(3), March 2005.

7
Toplinski zid jedno-jezgrenih procesora
(energija/toplina)

10,000 Source: Patrick Gelsinger,


Intel Developers Forum,
Intel Corp., 2004
1,000

100
Power
Density
10
(W/cm2) 8086 Pentium
4004 line
1 486
8085
386

1970 1980 1990 2000


Year

8
Brzine takta su dosegle limit

Problemi uzrokovani velikim brzinama


Iznimna potronja energije
Disipacija topline
Curenje struje

Konzumiranje energije kritino za mobilne ureaje


Poveavanje udjela platforme za mobilno raunarstvo
postaje veoma vano

9
Vie-jezgrene arhitekture

Potencijalne performanse = brzina jezgre broj jezgri


Strategija:
4 Limitiramo brzinu jezgre i sofisticiranost
Stavljamo vie jezgri na jedan ip
jezgre

2 4
Potencijalne performanse
1 2 4
iste

brzina

10
Rjeenje proizvoaa: Vie jezgri

Intel Core i7
processor

2 jezgre rade na 2.5 GH, koriste manje energije i generiraju manje


topline nego 1 jezgra od 5 GHz za istu koliinu operaciju GFLOPS
4 jezgre su jo bolje.
11
Stara dinamika razmiljanja o paraleln. progr.
Paralelna raunala
su skupa

Paralelno raunarstvo
nije mainstream Nema mnogo paral.
raunala

Veina ljudi ne naui


paral.prog.

Razvojna okruena paral. Paral. Progr. je


Progr. su neadekvatna teko

12
Pristup sekvencijalnog jezika

Problem sadri inherentni paralelizam


Programski jezici ne mogu izraziti paralelizam
Programer skriva paralelizam u sekvencijalnim konstruktima
Prevodilac i/ili hardver moraju pronai paralelizam

Naalost, ne funkcionira

13
Alternativni pristup

Programer i Kompajler rade zajedno


Problem sadri inherentni paralelizam
Programer ima naina da izrazi paralelizam
Kompajler prevodi program za vie jezgri

14
Programer/Kompajler tim

Programeri modernih CPU moraju uzeti u obzir arhitekturu i


kompajler kako bi dobili vrne performanse

... Podaci i algoritmi se mogu aktivno reorganizirati tako da


iskoriste prednosti arhitekture ...

Introduction to Microarchitectural Optimization for Itanium 2


Processors, p. 3

15
Nova dinamika razmiljanja o paralelnom
raunarstvu
PC su paralelna raunala

Parall. Program. Se
smatra mainstream Svatko ima
paralelno raunalo

Sve vie ljudi ui


paralelno programiranje

Poboljavaju se okruenja Paralelno programiranje


Za paral. progr. postaje lake

16
Konkurentnost i paralelizam: Nisu iste
stvari!
KONKURENTNOST PARALELIZAM
Zato: interakcije Zato: izraavanje hardware
komponenti za uinkovitu efikasno kako bi skalirali
programsku strukturu performanse
Kako: interakcija niti koje Kako: nezavisni
ekaju na dogaaje zadaci(tasks) koji se izvode
simultano

Program moe sadravati oba


konstrukta
Pablo Halpern, 2014 (CC BY 4.0) 17
Sportska analogija

Photo credit Andr Zehetbauer (CC) BY-SA 2.0

Photo credit JJ Harrison (CC) BY-SA 3.0

Konkurentnost Paralelizam

Pablo Halpern, 2014 (CC BY 4.0) 18


Procesi

Svakodnevno imamo priliku i izbor da pokrenemo nekoliko


nezavisnih aplikacija u isto vrijeme kako bi iksoristili nekoliko
jezgri (web preglednik, email, program za glazbu...)

Veoma je jednostavno, jer operacijski sustav se brine o


dodijeljivanju u realnom vremenu softvera prema jezgrama i
memoriji
Svakodnevno koristimo procese!
Windows

Tab Procesi

Performanse
Linux

Procesi pogled Pogled aktivnosti i perfomansi


activity view
Procesi

Dobra strana:
Svaki proces je totalno neovisan: siguran je!.
Loa strana :
Svaki proces ima dodijeljeni memorijski prostor stoga ne moe
lako dijeliti varijable u memoriji ili kod izmeu procesa.
Procesi mogu komunicirati sa drugim procesima na istom stroju ili
na drugim strojevima preko mree, ali je taj mehanizam sporiji i
generira mnogo CPU overhead-a.
Memorijski model procesa

Varijable procesa Varijable procesa

Proces Proces

Operacijski sustav
Primjer : Apache Web Server

Apache web server tipino koristi procese.


Stotine/tisue procesa se pokreu automatski kako bi odgovorili
na zahtjeve klijenata koji dolaze mreom
Dobra strana: Jednostavno je, sigurno i lako za kodiranje
Loa strana: Komunikacija izmeu procesa je kompleksna, a web
stranice koje se alju razliitim klijentima
Instrukcijske niti /dretve

Unutar procesa imamo niti/dretve


Kada zapone main(), to je poetak prve instrukcijke niti u
softveru
Ako stvaramo vie niti, operacijski sustav e ih alocirati
transparentno na jezgre i u memoriji ba kao to radi sa
procesima
Opasnost : Za razliku od procesa, instrukcijske niti u istom
procesu dijele memoriju (podatke i kod).
Mogu jednostavno komunicirati, ali dolazimo do rizika
preklapanja i netonosti podataka uslijed uvjeta utrkivanja.
Primjer : MySQL Baza

MySQL Database server pokree instrukcijske niti da uslui


zahtjeve klijenata
Obino klijenti zahtjevaju informacije iz istog podatkovnog seta
(Sql tablica) : potrebna je komunikacija izmeu instrukcijskih niti.
Zato MySql ne moe lako koristi procese!
MySQL razvijatelji baza moraju brinuti o rizicima koji su slini
rizicima paralelnog programiranja kako bi zatitili dijeljene
informacije (Sinkronizacija).
Procesi + dretve
Primjer : LAMP (linux-Apache-MySQL-PHP)
Web Client A
Thr
Apache Process #1 :
Thread #1 : Web Client B
Serving client A
Serving client A
Web Client C
Thread #2 : Thr
Serving client B Apache Process #2 :
Serving client B
Thread #3 :
Serving client C
Thr
Apache Process #3 :
Shared dataset Serving client C
(SQL Table)

Apache Process #0 :
MySQL Process :
Managing the
Synchronization between
Thr process pool Thr
threads

Linux Server OS : real time association


of processes and threads
with cores and memory
Example : LAMP
Linux-Apache-MySQL-PHP

Svaka PHP generirana stranica se obrauje kroz razliite


procese: razvojni programeri koji rade PHP kod se ne brinu oko
sinkronizacija. Nita se ne dijeli

MySQL koristi niti da obradi razliite SQL zahtjeve. MySQL


razvojni programeri se moraju sluiti sinkfornizacijskim
mehanizmima da zatite tablicu od konkuretnih pristupa. SQL
korisnici takoer mogu zakljuati tablice koristei SQL
transakcije.
Fork/Join Model

Kada main() funkcija zapone, to je poetak prve instrukcijske


niti softvera
Nalazimo se u serijskom reimu rada. Kada uemo u paralelni
dio viedretvene aplikacije, pokreu se instrukcijske niti/dretve

Master dretva klonira (forks) radne dretve. Nakon to sve


radne dretve moraju se ponovo spojiti (join). Opet se nalazimo
u serijskom reimu. Kraj main()-a, kraj procesa.
Fork/Join Model

Sequential Parallel Sequential

Fork Join
Master dretva
Radna dretva #1
Radna dretva #2

Radna dretva #3

Radna dretva #4
Memorijski Model dretvi/ niti

Thread : Private Variables Thread : Private Variables

Thread : Private Variables Thread : Private Variables

Thread : Private Variables Thread : Private Variables

Shared Variables Shared Variables

Process Process

Operating System

You might also like