Transcript
Page 1: Paralelne Računarske Arhitekture

UNIVERZITET ZA POSLOVNI INŽENJERING I MENADŽMENT

BANJA LUKA

S E M I N A R S K I R A D

Predmet: Napredna računarska arhitektura

Tema: Paralelne računarske arhitekture

Banja Luka 10.02.2014. Stefan Mišanović

Page 2: Paralelne Računarske Arhitekture

Sadržaj

1. Uvod............................................................................................3

2. Pozadina......................................................................................4

3. Amdalov zakon i Gustafsonov zakon...........................................6

4. Zavisnosti.....................................................................................8

5. Race uslovi, zajedničko isključenje, sinhronizacija i paralelno

usporavanje.....................................................................................9

6. Fini, grubi i sramni paralelizam...................................................11

7. Modeli doslednosti.....................................................................11

8. Flinova taksonomija....................................................................12

9. Tipovi paralelizma.......................................................................12

10. Paralelizam na nivou bita..........................................................12

11. Paralelizam na nivou instrukcije...............................................13

12. Paralelizam na nivou zadatka...................................................13

13. Hardver.....................................................................................14

14. Klase paralelnih računara.........................................................15

15. Softver......................................................................................16

16. Literatura..................................................................................18

2

Page 3: Paralelne Računarske Arhitekture

1. Uvod

Paralelna obrada je oblik računanja u kojem su mnogi proračuni sprovedeni

istovremeno, a radi na principu da se veliki problemi često mogu podeliti na

manje, koji se zatim rešavaju istovremeno ("paralelno"). Postoji nekoliko

različitih oblika paralelnog računarstva: bit-nivo, nivo instrukcija, podataka, i task

paralelizam. Paralelizam1 se koristi već mnogo godina, uglavnom u računarstvu

visokih performansi, ali interesovanje za njega je u poslednje vreme poraslo zbog

fizičkih ograničenja koje sprečavaju skaliranje frekvencije. Kako je potrošnja

energije (a samim tim i roizvodnja toplote) računara postala problem u

poslednjih nekoliko godina, paralelno računarstvo je postalo dominantna

paradigma u računarskoj arhitekturi, uglavnom u obliku višejezgranih procesora.

Paralelni računari se mogu grubo klasifikovati prema nivou na kojem hardver

podržava paralelizam: gde višejezgrani i višeprocesorski računari imaju više

elemenata obrade unutar jedne mašine, a klasteri, MPPS i rešetke koristite više

računara da rade na istom zadatku. Specijalizovane paralelne računarske

arhitekture se ponekad koriste zajedno sa tradicionalnim procesorima, za

ubrzavanje specifičnih zadataka.

Teže je pisati paralelne računarske programe nego sekvencijalne, jer

konkurentnost uvodi nekoliko novih klasa potencijalnih softverskih grešaka.

Komunikacija i sinhronizacija između različitih podzadataka su obično neke od

najvećih prepreka za dobijanje dobrih performansi paralelnog programa.

1 Maksimalna moguća brzina nekog programa kao rezultat paralelizacije je poznat kao Amdalov zakon. Džin Majron Amdal (rođen 16. novembar 1922) je američki ručanarski arhitekta i preduzetnik visoke tehnologije, uglavnom poznat po svom radu na mejnfrejm računarima u IBM-u i kasnije svojim kompanijama, posebno Amdal korporaciom. On je formulisao Amdalov zakon, koji služi kao osnovno ograničenje paralelnog računarstva.

3

Page 4: Paralelne Računarske Arhitekture

IBM-ov Blu Džin (eng. Blue Gene)2

2. Pozadina

Tradicionalno, računarski softver je napisan za serijsko izračunavanja. Za

rešavanje problema, algoritam je konstruisan i realizovan kao serijski tok

instrukcija. Ove instrukcije se izvršavaju na procesoru na jednom računaru. Samo

jedna instrukcija može izvršiti u vreme nakon što se završi prethodna instrukcija.

Paralelno računarstvo, s druge strane, koristi više elemenata za obradu

istovremeno da reši problem. Ovo se postiže podelom problema na nezavisne

delove, tako da svaki element obrade može da izvrši svoj deo algoritma

istovremeno sa ostalima. Elementi obrada mogu biti raznovrsni i obuhvataju

resurse kao što su računar sa više procesora, nekoliko umreženih računara,

specijalizovani hardver, ili bilo koju njihovu kombinaciju.

2 Blue Gene je IBM-projekat usmeren na projektovanje superračunara koji može dostići brzinu rade u PFLOPS (petaflopsa) opsegu, sa niskom potrošnjom.

4

Page 5: Paralelne Računarske Arhitekture

Frekvencijsko skaliranje je bio dominantan razlog za poboljšanje performansi

računara od sredine 1980-ih do 2004. Izvršavanja programa je jednako broju

instrukcija pomnožen prosečnim vremenom po instrukciji. Održavanje svega

ostalog konstantnim i povećavajući frekvenciju takta smanjuje se prosečno

vreme koje je potrebno da se izvrši instrukcija. Povećanje takta na taj način

smanjuje vreme rada za sve programe sa računanjem.

Međutim, potrošnja energije po čipu je dat jednačinom P = C × V2 × F, gde je P

snaga, C je kapacitivnost kada se uključi po ciklusu (srazmerno broju tranzistora

čiji ulaza se menja), V je napon, i F je takt. Povećanje takta povećava količinu

energije koja se troši. Povećanje potrošnje energije je konačno dovelo do toga da

Intel maja 2004 otkaže njenih Tehas i Džejhak procesore, što se obično navodi

kao kraj frekvencijskog skaliranja kao dominantne paradigme arhitekture

računara.

Murov zakon3 je empirijsko zapažanje da se gustina tranzistora u mikroprocesoru

udvostručuje svakih 18 do 24 meseci. Uprkos problemima potrošnje energije, i

ponovljenih predviđanja njegovog kraja, Murov zakon i dalje na snazi. Sa

završetkom frekvencijskog skaliranja, ovi dodatni tranzistori (koji se više ne

koriste za frekvencijsko skaliranje) može da se koristi za dodavanje dodatni

hardver za paralelno računarstvo.

3. Amdalov zakon i Gustafsonov zakon3 Murov zakon glasi da se snaga računara udvostručuje približno svakih 18-24 meseca. Dobio je ime po Gordonu Muru (Gordon Moore) jednom od osnivača „Intela“, na čijim se predviđanjima i zasniva.

5

Page 6: Paralelne Računarske Arhitekture

Optimalno, ubrzanje od paralelizacija bi bilo linearno. Udvostručavanje broja

procesnih elemenata bi trebalo da prepolovi vreme putovanja, i to udvostručenje

drugi put bi trebalo da ponovo prepolovi vreme rada. Međutim, veoma mali broj

paralelnih algoritama postigne optimalno ubrzanje. Većina njih ima skoro

linearno ubrzanje za mali broj procesnih elemenata, koji se poravnava u

konstantnoj vrednosti za veliki broj procesnih elemenata.

Potencijalno ubrzanje algoritma na paralelnoj platformi je po Amdalovom

zakonu, koga je prvobitno formulisao Džin Amdal 1960. On navodi da će mali deo

programa koji se ne može paralelizirati ograničiti ukupno ubrzanje pri

paralelizaciji. Program koji rešava veliki matematički ili inženjerski problem se

obično sastoji od nekoliko delova koje je moguće paralelizirati i nekoliko delova

koje nije moguće paralelizirati (uzastopni delovi). Ako je deo vremena rada

koje program troši na delove koji se ne mogu paralelizirati, onda:

je maksimalno ubrzanje paralelizacijom programa. Ako sekvencijalni deo

programa čini 10% od radnog vremena ( ), ne može se dobiti više od 10

× ubrzanja, bez obzira na to koliko je procesora dodato. Ovo stavlja gornju

granicu na korisnost dodavanja više uporednih izvršnih jedinica. "Kada zadatak

ne može biti raspodeljen zbog uzastopnih ograničenja, primena višeg napora

nema uticaja na raspored. Nošenje deteta traje devet meseci, bez obzira na to

koliko žena nosi decu."

6

Page 7: Paralelne Računarske Arhitekture

slika 2 – grafička ilustracija Amdalovog zakona

Gustafsonov zakon je još jedan zakon u računarstvu, blisko povezan sa

Amdalovim zakonom. On navodi da je ubrzanje sa procesora:

I Amdalov i Gustafsonov zakon4 pretpostavljaju da je radno vreme sekvencijalnog

dela programa nezavisno od broja procesora. Amdahlov zakon pretpostavlja da

je ceo problem fiksne veličine, tako da je ukupan iznos posla koji treba da se

uradi paralelno takođe nezavisan od broja procesora, dok Gustafson zakon

4 John L. Gustafson (rođen 19. januara 1955) je američki naučnik i računarski biznismen, uglavnom poznat po svom radu u High Performance Computing (HPC), jer je prikazao svijetu svoj, Gustafsonov zakonu, predstavlja prvi komercijalni računar klaster, merenje sa QUIPS-om, uvodi i rekonstrukciju u Atanasov-Beri računar, a dobio je i nekoliko nagrada za ubrzanja kompjuterskih preformansi.

7

Page 8: Paralelne Računarske Arhitekture

pretpostavlja da ukupan iznos posla koji treba da se uradi paralelno varira

linearno sa brojem procesora.

Pretpostavimo da zadatak ima dva nezavisna dela, A i B. B traje otprilike 25% vremena celog računanja. Uz napor, programer može biti u stanju da napravi ovaj deo pet puta brže, ali to samo smanjuje vreme za celo računanje po malo. Nasuprot tome, jedan može da obavlja manje posla da napravi da se deo A duplo brže izvrši. To će učiniti računanje mnogo brže nego što optimizuje deo B, iako B dobio veću ubrzanje/brzinu (5x protiv 2x).

4. Zavisnosti

Razumevanje zavisnosti podataka je fundamentalno u sprovođenju paralelnih algoritama. Nijedan program ne može da radi brže od najdužeg lanca zavisnih proračuna (poznat kao kritičan put), jer se kalkulacije koje zavise od prethodnih kalkulacija u lancu moraju izvršiti u redu. Međutim, većina algoritama se ne sastoji samo od dugog lanca zavisnih proračuna, već obično postoje mogućnosti da se izvrši nezavisno računanje paralelno.

Neka su Pi i Pj dva segmenta programa. Bernstajnovi uslovi opisuju kada su one nezavisne i kada se mogu izvršiti paralelno. Za Pi, neka Ii budu sve ulazne promenljive a Oi, a isto tako za Pj.

Povreda prvog uslova uvodi zavisnost protoka, što odgovara prvom segmentu koji proizvodi rezultat korišćen od drugog segmenta. Drugi uslov predstavlja anti-zavisnost, kada drugi segment (Pj) proizvodi promenljivu koja je potrebna prvom segmentu (Pi). Treći i poslednji uslov predstavlja izlaznu zavisnost: kada dva segmenta pišu na istoj lokaciji, rezultat dolazi iz poslednjeg logički izvršenog

8

Page 9: Paralelne Računarske Arhitekture

segmenta.Razmotrite sledeće funkcije koje pokazuju nekoliko vrsta zavisnosti:

1: function Dep(a, b)2: c := a•b3: d := 3•c4: end function

Operacija 3 u Dep(a, b) ne može da se izvrši pre (ili čak paralelno sa) operacijom 2, jer operacija 3 koristi rezultat iz operacije 2. To krši uslov 1, i na taj način uvodi zavisnost u algoritam.

1: function NoDep(a, b)2: c := a•b3: d := 3•b4: e := a+b5: end function

U ovom primeru, ne postoje zavisnosti između instrukcija, tako da svi oni mogu biti izvršeni paralelno. Bernstajnovi uslovi ne dozvoljavaju da se memorija deli između različitih procesa. Za to, neke sredstvo za sprovođenje reda između adresa je potrebno, kao što su semafori, barijere ili neka druga metoda sinhronizacije.

5. Race uslovi, zajedničko isključenje, sinhronizacija i paralelno usporavanje

Podzadaci u paralelnom programu se često nazivaju niti. Neke paralelne računarske arhitekture koriste manje, lagane verzije niti poznatih kao vlakna, dok drugi koriste veće verzije poznate kao procesi. Međutim, "niti" su opšte prihvaćene kao generički izraz za podzadatke. Niti često treba da ažuriraju neke promenljive koji se deli između njih. Uputstva između dva programa mogu biti prošarane u bilo kom redosledu. Na primer, razmotrite sledeći program:

Nit A Nit B1A: Čitaj promenjivu V 1B: Čitaj promenjivu V2A: Dodaj 1 na promenjivu V 2B: Dodaj 1 na promenjivu V3A: Piši nazad na promenjivu V 3B: Piši nazad na promenjivu VAko se instrukcija 1B obrađuje od 1A i 3A, ili ako je instrukcija 1A obrađivana između 1B i 3B, program će izbaciti pogrešne podatke. Ovo je poznato kao race slučaj. Programer mora da koristi zaključavanje za pružanje međusobne

9

Page 10: Paralelne Računarske Arhitekture

isključivosti. Brava je programski jezik napravljena za omogućavanje jednoj niti da preuzmu kontrolu nad promenljivom i spreči druge niti da čita ili piše po njemu, dok promenljiva nije otključana. Nit koja drži zaključavanje je slobodana da izvrši svoju kritičnu sekciju (odeljak programa koji zahteva isključivi pristup nekoj promenljivoj), i za otključavanje podataka kada se završi. Dakle, da garantuje ispravno izvršavanje programa, gornji program se može napisato ponovo da koristi zaključavanje:

Nit A Nit B1A: Zaključaj promenjivu V 1B: Zaključaj promenjivu V2A: Čitaj promenjivu V 2B: Čitaj promenjivu V3A: Dodaj 1 na promenjivu V 3B: Dodaj 1 na promenjivu V4A: Piši nazad na promenjivu V 4B: Piši nazad na promenjivu V5A: Otključaj promenjivu V 5B: Otključaj promenjivu V

Jedna nit će uspešno zaključati promenljivu V, dok druga nit biti zaključana bez mogućnosti da se nastavi sve dok se ponovo V ne otključa. Ovo garantuje ispravno izvršenje programa. Iako je potrebno da obezbedi ispravno izvršavanje programa, zakljulavanje može u velikoj meri da uspori program.Zaključavanje više promenljivih koristeći ne-atomsko zaključavanje uvodi mogućnost zastoja programa. Atomski zaključavanje zaključava više promenljivih odjednom. Ako ih ne može zaključati, ne zaključava nijednu. Ako od dve niti svaka treba da se zaključa iste dve promenjive koristeći neatomsko zaključivanje, moguće je da će jedna nit blokirati jednu a druga drugu promenjivu. U tom slučaju, nijedna nit ne može da se završi.

Mnogi paralelni programi zahtevaju da njihovi podzadaci rade sinhronizovano. Ovo zahteva korišćenje barijere. Barijere su uglavnom implementirane korsiteći softversko zaključavanje. Jedna klasa algoritama, poznata kao lock-free i wait-free algoritmi, potpuno zaobilazi potrebu za barijerama i zaključavanjem. Ipak ovaj pristup je težak za implementaciju.

Ne ubrzaju svi paralelizmi. Generalno, kad se zadatak podeli na više niti, te niti troše sve veći procenat svog vremena komunicirajući međusobno. Eventualno, vreme komuniciranja će preteći vreme korišćeno za rešavanje problema, i dalja paralelizacija uvećava umesto da umanji obim posla. Ovo je poznato kao paralelno usporenje.5

6. Fini, grubi i sramni paralelizam

5 Paralelno usporavanje je fenomen u paralelnog računarstva gde Paralelizacija paralelnog algoritma iza određene tačke izaziva program pokrenuti sporije (potrebno više vremena da se pokrene na završetku).

10

Page 11: Paralelne Računarske Arhitekture

Aplikacije su obično klasificirane po tome koliko često njihovi podzadaci moraju da se sinhronizuju ili da komuniciraju. U slučaju da mnogo puta komuniciraju u sekundi, to je fini paralelizam, ako komuniciraju malo to je grubi paralelizam, a ako retko ili nikad ne komuniciraju to je sramni paralelizam. Najlakše je paralelizovati sramno paralelne aplikacije.

7. Modeli doslednosti

Paralelni programski jezici i paralelni računari moraju imati model doslednosti. Ovaj model definiše pravila kako se operacije na računarskoj memoriji dešavaju i kakvi će rezultati biti.

Jedan od prvih modela je bio Lesli Lemortov6 sekvencijalni model. Sekvencijalna doslednost je osobina paralelnog programa da paralelno izvršavanje ima isti rezultat kao i sekvencijalni program. Program je sekvencijalno dosledan ako su rezultati jednog izvršenja isti kao da su operacije svih procesora izvršene u nekom redosledu, i operacije svakog pojedinačnog procesora pojavljuju u ovom redosledu po redosledu određen svojim programom.

Transakciona softverska memorija je čest tip modela doslednosti. STM uzima koncept o atomskim transakcijama iz teorije baza podataka i primenjuje ih na pristupe memoriji.

Matematički, ovi modeli se mogu predstaviti na nekoliko načina. Petri nets, koji je uveden u doktorskoj tezi Karla Adama Petrija je bio rani pokušaj da se koduju ovi modeli. Dataflou je napravio Dataflou arhitekture po ovom principu sa ciljem da fizički implementira ideje od Dataflou teoriji. Počev od ranih 1970, procesni račun kao što je račun komunikacionih sistema i procesi sa sekvencijalnim komuniciranjem su razvijeni da omoguće algebarsko rezonovanje os sitemima sastavljenih od interagujućih komponenti. Skorašnji dodaci ovoj familiji računa kao što je Pi račun, su dodali mogućnost za rezonovanje dinamičkih topologija.

8. Flinova taksonomija

6 Lesli Lamport (rođen 7. februara 1941 u Njujorku) je američki računarski naučnik. Lamport je najpoznatiji po svom radu u vezi distribuiranih sistema i kao početni programer na dokument priprema sistema LaTeKs

11

Page 12: Paralelne Računarske Arhitekture

Majkl Flin je napravio jednu od najranijih klasifikacionih sistema za paralelne ili sekvencijalne računare i programe, koji se danas zove Flinova taksonomija. Flin je klasifikovao računare i programe po tome da li su operisali koristeći jedan skup ili više skupova instrukcija, i da li su ti skupovi koristili jedan ili više skupova podataka. Jedna-instrukcija-jedni-podaci (SISD) klasifikacije je ekvivalentna potpuno sekvencijalnom programu. Jedna-instrukcija-više-podataka (SIMD) klasifikacija je analogna ponavljanju jedne operacije preko velikog skupa podataka. Ovo se često radi u aplikacijama obrade signala. Više instrukcija jedni podaci (MISD) se retko koristi. Postoje arhitekture koje koriste ovo ali malo aplikacija je napravljeno. Više instrukcija više podataka (MIMD) programi su najčešći paralelni programi.

Prema Dejvidu Patersonu i Džonu Henesiju, "neke mašine su hibridi ovih kategorija, ali ovaj klasični model je preživeo zato što je jednostavan, lak za razumevanje, i daje dobre aproksimacije. Takođe je najčešće korišćena šema možda zbog lakog razumevanja.

9. Tipovi paralelizma

10. Paralelizam na nivou bita

Od dolaska VLSI proizvodne tehnologije '70, ubrzanje se postizalo tako što su se uvećavale širine komjuterske reči. Povećanje veličine reči smanjuje broj instrukcija koje procesor mora da obradi da bi odrradio operaciju na promenjivim čije su veličine veće od širine reči. Na primer, kada 8-bitni procesor treba da sabere 16-bitne cele brojeve, on mora prvo da sabere donjih 8 bitova, pa onda gornjih 8 bitova, tako da ovom procesoru trebaju dva ciklusa za sabiranje, a 16-bitnom jedan.

Istorijski, 4-bitne procesore su zamenili 8-bitni, njih 16-bitni, a njih 32-bitni. 32-bitni procesori su bili standard dve decenije. Tek su skoro 64-bitni procesori postali normalna stvar.

11. Paralelizam na nivou instrukcije

Računarski program je u osnovi potok instrukcija koje izvršava procesor. Ove

12

Page 13: Paralelne Računarske Arhitekture

instrukcije se mogu reorganizovati i kombinovati u grupe koje se onda paralelno izvršavaju bez menjanja ishoda programa. Ovo se zove paralelizam na nivou instrukcije. Napredak u ovom vidu paralelizma su dominirali računarskom arhitekturom od 1980ih do 1990ih.

Moderni procesori imaju višefazne instrukcijske cevovode. Svaka faza u cevovodu odgovara razlilitoj akciji koju procesor izvršava na toj instrukciji u toj fazi. Kanonski primer je RISC procesor, sa 5 faza: donesi, dekodiraj, izvrši, pristupi memoriji i piši nazad. Pentijum 4 je imao 35 faza.

Kanonski petofazni cevovod, RISC mašina (IF = Uzimanje instrukcije, ID = Dekodiranje instrukcije, EX = Izvršavanje, MEM = pristup memoriji, WB = pisanje na registar)

12. Paralelizam na nivou zadatka

Paralelizam na nivou zadatka je karakteristika paralelnih programa gde se potpuno drugačije kalkulacije mogu izvršiti na ili istim ili različitim skupovima podataka. Paralelizam na nivou zadatka se obično ne skalira sa veličinom problema.

petofazni cevovodni superskalarni procesor, sposoban da izvrši dve instrukcije po ciklusu. Može da ima dve instrukcije u svakoj fazi cevovoda, za ukupno 10 instrukcija (pokazano zeleno) koje se simultano izvršavaju.

13

Page 14: Paralelne Računarske Arhitekture

13. Hardver

Memorija i komunikacija

Glavna memorija u paralelnom računaru je ili deljena memorija ili distribuirana memorija. Distribuirana memorija podrazumeva da je memorija logički distribuirana, ali često imlicira da je i fizički distribuirana. Distribuirana deljena memorija i memorija virtuelizacije kombinuju ova dva pristupa kde procesni element ima svoju lokalnu memoriju i pristup memoriji na nelokalnim procesorima. Pristup lokalnoj memoriji je obično brži od pristupa nelokalnoj memoriji.

Računarske arhitekture u kojima se svaki element glavne memorije može pristupiti sa jednakom latencijom i propusnim opsegom se zovu Pristupi Unifomnoj Memoriji (UMA)7. Tipično se ovo može postići samo u sistemu sa deljenom memorijom. Sistem koji nema ovu osobinu se zove Neuniformni Pristup Memoriji (NUMA)8. Distribuirani memorijski sistemi imaju neuniformni pristup memoriji.

Računarski sistemi koriste keš – male, brze memorije koje su blizu procesora i koji sadrže kopije memorijskih vrednosti. Paralelni sistemi imaju taj problem da će možda u keš memoriji stajati pogrešna kopija neke vrednosti. Ovi sistemi zahtevaju sistem koherencije keša. Bus snooping je jedna od čestih metoda kojom se vodi računa o vrednostima u kešu.

Procesor – procesor i procesor – memorija komunkacija se može implementirati hardverski na nekoliko načina uključujući preko deljene memorije, deljenog busa, ili crossbar prekidača.

7 Uniforma memorija (UMA) je memoriska arhitektura koja se koristi u paralelnim računarskim sistemima. Svi procesori u UMA modelu dele ravnomerno fizičke memorije. U UMA arhitekture, vreme pristupa nekoj memorijskoj lokaciji je nezavisno od kojih procesor čini zahtev ili memorijski čip koji sadrži prenete podatke.8 Ne-uniforma pristupna memorija (NUMA) je dizajn memorija računara i koristi se u multiprocesorskim sistemima, gde vremenski pristup memoriji zavisi od memorijske lokacije u odnosu na procesor. Pod NUMA, procesor može da pristupi u svoju lokalnu memoriju brže nego u ne-lokalne memorije (lokalne memorije drugih procesora ili memorije koju dele procesori.

14

Page 15: Paralelne Računarske Arhitekture

Logički pogled na Non-Uniform Memory Access (NUMA) arhitekturu. Procesori u jednom direktorijumu mogu da pristupe memoriji tog direktorijuma sa manje latencije nego što mogu da pristupe memoriji drugog direktorijuma.

14. Klase paralelnih računara

Paralelni računari na bazi povezanih mreža moraju da imaju neku vrstu rutiranja da bi omogućile prolazak poruka kroz čvorove koji nisu direktno povezani. Oni nisu međusobno ekskluzivne. Na primer grupe simetričnih procesora su relativno česte.

Višejezgrano računanje

Višejezgrani procesor je procesor koji sadrži više jedinica obrade (jezgara) na istom čipu. Ovi procesori se razlikuju od superskalarnih procesora koji mogu da odrade više instrukcija po ciklusu iz jedne niti.

Svako jezgro može potencijalno biti i superskalar. Svakog ciklusa, svako jezgro može pustiti više instrukcija iz jednog potoka instrukcija. Simultano višenitno obrađivanje je prva forma ideje višejazgranih procesora.

Simetrično mikroprocesiranje

Simetrični mikroprocesor je računarski sistem sa više identičnih procesora koji dele memoriju i povezani su busom. Kontentcija busa sprečava arhitekturu busa od skaliranja. Kao rezultat SMPi generalno ne sadrže više od 32 procesora.

Distribuirano računarstvo

15

Page 16: Paralelne Računarske Arhitekture

Distribuiran računar (takođe poznat kao distributed memory multiprocessor) je računarski sistem sa distribuiranom memorijom u kome su elementi obrada povezan sa mrežom. Distribuirani računari su veoma skalabilni.

15. Softver

Paralelni programski jezici

Istovremeni programski jezici, biblioteke, API i paralelne modeli programiranja (kao što su algoritamski kosturi) stvoreni su za programiranje paralelnih računara. Oni se generalno mogu podeliti u klase na osnovu pretpostavki koje donose o osnovnoj memorijskoj arhitektura deljene memorije, distribuiranja memorije, ili deljene distribuirane memorije. Programski jezici zajedničke memorije komuniciraju manipulacijom deljene memorije promenljive. Distribuirana memorija koristi message passing. POSIX Threads i OpenMP su dva najšire korišćema APIja sa deljenom memorijom, dok je Message Passing Interface najkorišćeniji sistem za prosleđivanje poruka. Jedan koncept koji se koristi u programiranju paralelnih programa je koncept budućnosti, gde je jedan deo programa obećava da isporuči potrebne podatke drugom delu programa u nekom budućem vremenu.

Automatska paralelizacija

Automatska paralelizacija sekvencijalnog programa od kompajlera je sveti gral u paralelnom računarstvu. Uprkos decenijama rada na ovome, nije bilo mnogo uspeha.

Mejnstrim jezici paralelnog računanja ostaju eksplicitno paralelni ili parcijalno implicitni, gde programer daje direktive za paralelizaciju. Nekoliko potpuno implicitnih paralelnih programskih jezika postoje: SISAL, Parallel Haskell, System C (za FPGAe), Mitrion-C, VHDL, i Verilog.

Application checkpointing

Dok računarski sistem raste što se kompleksnosti tiče, prosečno vreme između grešaka se smanjuje. Application checkpointing je tehnika gde računarski sistem uzima snimak aplikacije, sve trenutne alokacije resusra i stanja promenjivih. Ovi podaci će se iskoristiti ako račuanrski sistem propadne. Application checkpointing znači da program može da se restartuje od poslednjeg checkpoint-

16

Page 17: Paralelne Računarske Arhitekture

a, umesto od početka.

Algoritamske metode

Kako paralelni računari postaju veći i brži, postaje moguće da reše probleme koji su se ranije predugo rešavali. Paralelno računarstvo se koristi u širokom spektru oblasti, od bioinformatike (savijanje proteina i analize sekvenca) do ekonomije (matematičke finansija). Uobičajene vrste problema koje se nalaze u paralelnim računarskim aplikacijama su:

Gusta linearna algebra Retka linearna algebra Spektralne metode Problem n-tela Sturkturni problemi mreže Nestrukturni problemi mreže Montekarlo simulacija Kombinaciona logika Dinamičko programiranje Traversal grafa Grafički modeli Simulacija mašine sa konačnim stanjem

16. Literatura

17

Page 18: Paralelne Računarske Arhitekture

[1] Rodriguez, C.; Villagra, M.; Baran, B. (29. 8. 2008.). „Asynchronous team algorithms for Boolean Satisfiability“. Bio-Inspired Models of Network, Information and Computing Systems, 2007. Bionetics 2007. 2nd: 66–69.

[2] Chao-Tung Yang, Chuan-Lin Lai, “Apply Cluster and Grid Computing on Parallel 3D Rendering”, IEEE International Conference on Multimedia and Expo (ICME), 2004.

[3] Joshua Harr, Greg Denault, “Issues Concerning Linux Clustering: Cluster Management and Application Porting”, In Proceedings of the International Parallel and Distributed Processing Symposium, (IPDPS.02), 2002.

[4] Blaise Barney, “Introduction to parallel computing”, Lawrence Livermore National Laboratory, last updated: February 13, 2008.

[5] Wikipedia: en.wikipedia.org/wiki/Parallel_computing

18