41
0 KAUNO TECHNOLOGIJOS UNIVERSITETAS PROGRAMŲ INŽINERIJOS KATEDRA LYGIAGRETŪS SKAIČIAVIMAI Referatas Parengė: dokt. Dovilė Karalienė Priėmė: prof. habil. dr. Rimantas Šeinauskas Kaunas 2010

KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

Embed Size (px)

Citation preview

Page 1: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

0

KAUNO TECHNOLOGIJOS UNIVERSITETAS PROGRAMŲ INŽINERIJOS KATEDRA

LYGIAGRETŪS SKAIČIAVIMAI

Referatas

Parengė dokt Dovilė Karalienė

Priėmė prof habil dr Rimantas Šeinauskas

Kaunas 2010

1

TURINYS

ĮVADAS 2

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE3

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys 3

12 Lygiagrečių kompiuterių istorija4

13 Uždaviniai lygiagretiems skaičiavimams ir problemos 8

14 Lygiagrečių procesų sinchronizacija10

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS 11

21 Lygiagrečiųjų kompiuterių architektūra 11

22 Lygiagrečiųjų kompiuterių atminties tipai 15

23 Virtualusis lygiagretusis kompiuteris 17

24 Vektoriniai procesoriai 23

3 LYGIAGRETŪS ALGORITMAI 25

31 Lygiagrečiųjų algoritmų ypatumai 25

311 Lygiagrečiųjų algoritmų sudėtingumo teorija 25

312 Spartinimo ir efektyvumo koeficientai 27

313 Mažiausios vykdymo trukmės algoritmai 30

314 Amdahlo dėsnis 31

315 Heterogeninių kompiuterių efektyvumo analizė 32

32 Lygiagrečiojo algoritmo išplečiamumas 33

33 Lygiagrečiųjų algoritmų sudarymo etapai 36

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS 38

IŠVADOS 40

LITERATŪRA 40

2

ĮVADAS

Spręsdami daugelį svarbių technikos informatikos gamtos mokslų uždavinių turime atlikti tiek

daug skaičiavimų kad net ir naudodami pačius geriausius šiuolaikinius kompiuterius negalime laiku rasti

atsakymo Didelių uždavinių ribojamuoju veiksniu gali tapti vieno kompiuterio atminties resursai

Skaičiavimo laiko svarbą galime pabrėžti pavyzdžiu ty Taifūno judėjimo trajektorijos prognozė prieš

42 valandas (naudojant skaitmeninį modeliavimą)

1 pav Taifūno judėjimo trajektorijos prognozė

Lygiagretūs skaičiavimai yra tokia skaičiavimo forma kurioje visos direktyvos (instrukcijos)

atliekamos tuo pačiu metu Lygiagretieji skaičiavimai veikia tokiu principu kad dideli uždaviniai gali

beveik visada būt išskaidyti į mažesnius kurie gali būt išspręsti vienu metu ( lygiagrečiai) Lygiagretieji

skaičiavimai tapo dominuojančia paradigma kompiuterių architektūroje pagrinde daugiafunkcinių

procesorių formoje

Pirmoje šio referato dalyje apžvelgsime lygiagečių skaičiavimų poreikį ir taikymo sritis

susipažinsime su lygiagrečiųjų kompiuterių istorija iškelsime pagrindinius uždavinius lygiagretiems

skaičiavimams ir panagrinėsime jų sprendimo problemas

Antroje dalyje apžvelgsime lygiagrečiųjų kompiuterių architektūrą šių kompiuterių atminties tipus

bei susipažinsime su dabar plačiai naudojamais virtualiais lygiagrečiaisias kompiuterias

Trečioje dalyje susipažinsime su svarbiausiomis lygiagrečių algoritmų ypatybėmis išplėčiamumu

bei sudarymo etapais o ketvirtoje ndash lygegretaus programavimo bibliotekomis naudojamas lygiagrečių

algoritmų sudarymui

3

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys

Didėjant kompiuterių spartai ir jų atminties galimybėms matome spartų naujos technologijos ndash

skaičiavimo eksperimento plitimą Lygiagrečių skaičiavimų taikymo sritys

bull Orų prognozė ir klimato pokyčiai

bull Branduolinės ir cheminės reakcijos

bull Kosmologija geologija seismologija

bull Žmogaus genomas genų inžinerija

bull Raketų lėktuvų automobilių projektavimas

bull Vaizdų generavimas grafika

bull Finansinis ekonominis modeliavimas

Kita taikymo sritis kurioje tenka atlikti labai daug aritmetinių skaičiavimų ndash diskrečiojo

optimizavimo uždaviniai Tai tvarkarščių sudarymas oro bendrovėse mokyklose universitetuose ir pan

krovinių vežimo paršruto optimizavimas skirtingos formos detalių taupus išdėstymas dideliuose

ruošiniuose mikrochemų projektavimas Norėdami rasti tokių uždavinių sprendinius turime patikrinti

labai daug leistinų variantų o tikrinant kiekvieną variantą irgi reikia atlikti nemažai aritmetinių veiksmų

Todėl dažnai tenkinamasi apytikliu sprendiniu kuris randamas patikrinus tik dalį leistinų variantų

Gautasis sprendinio artinys bus tuo tikslesnis kuo daugiau variantų sugebėsime patikrinti

Daugelyje taikymo sričių fiziniai eksperimentai yra keičiami virtualiuoju kompiuteriniu

modeliavimu (2 pav) Tokiais eksperimentais atliekamų skaičiavimų apimtys yra labai didelės be to

dažnai dar reikia tenkinti papildomą sąlygą kad atsakymą turime gauti ne vėliau už nustatytą laiko

momentą

2 pav Didžiųjų uždavinių kitimo tendencijos

4

Pavyzdžiui tokia sąlyga yra esminė kai sprendžiame oro prognozės uždavinį Net ir labai tiksli

rytdienos oro prognozė yra niekam neįdomi jei ją sužinome po dviejų parų

Matematinį oro prognozės modelį sudaro netiesinių diferencialinių lygčių sistema aprašanti

temperatūros slėgio ir vėjo greičio funkcijas Šią sistemą sprendžiame baigtinių skirtumų metodu Tada

visą skaičiavimų sritį dengiame diskrečiuoju tinklu ir kiekviename jo taške ieškome sprendinio reikšmių

Norėdami apskaičiuoti dviejų parų oro prognozę turime nagrinėti sritį kurios ilgis ir plotis yra 5000

kilometrų o aukštis ndash 20 kilometrų Gana tikslų sprendinio artinį gausime naudodami diskretųjį tinklą

kurio vieno elemento dydis yra 01times01times01 kubinių kilometrų Taigi iš viso gauname 11105times tokių

elementų

Uždavinys priklauso ir nuo laiko koordinatės Laiko integravimo žingsnį imkime 05 valandos

Skaičiuodami atliekame 96 žingsnius kiekvienu žingsniu visuose diskrečiojo tinklo taškuose

modifikuojame parametrų reikšmes Tam naudojame pradines pačių parametrų reikšmes ir informaciją

apie parametrus keliuose gretimuose taškuose Tarkime kad viename taške darome 100 aritmetinių

veiksmų tada vienu žingsniu darome 13105times aritmetinių veiksmų o dviejų parų oro prognozės uždavinio

sąnaudos yra 15105times veiksmų Jeigu šį uždavinį bandysime spręsti asmeniniu kompiuteriu ar darbo

stotimi atliekančiais 25 Gflop operacijų per sekundę tai atsakymą gausime tik per 556 valandas

Norėdami apskaičiuoti dviejų parų oro prognozę per 14 valandų turime padidinti kompiuterio spartą bent

40 kartų Jeigu lygiagretusis kompiuteris turi 40 procesorių tai visus diskrečiojo tinklo mazgus dalijame į

40 dalių tada kiekvienas procesorius atliks skaičiavimus tik jam skirtoje srityje Čia padarėme prielaidą

kad spręsdami uždavinį sugebėsime naudoti visų procesorių skaičiavimo pajėgumus

12 Lygiagrečių kompiuterių istorija

Pirmieji šiuolaikinių kompiuterių analogai pradėti naudoti apie 1950 metus Tokie kompiuteriai

buvo skirti tam tikriems uždaviniams spręsti o jų galingumas nedidelis 1958 metais sukurta pirmoji

integralinė schema o 1971 m pradėti naudoti mikroprocesoriai Nuo to laiko procesorių galingumas kas

18 mėnesių padidėja maždaug du kartus (Mūro dėsnis)

1976 m sukurtas pirmasis komercinis vektorinis superkompiuteris CRAY-1 Superkompiuteriais

pradėti vadinti kompiuteriai kurių sprata bent viena eile viršija tam tikro laikotarpio vidutinio

kompiuterio spartą Šiuo metu asmeniniai kompiuteriai yra spartesni už pirmuosius superkompiuterius

(šiuolaikinių mikroprocesorių našumas prilygsta ankstesnių superkompiuterių našumui 3 pav)

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 2: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

1

TURINYS

ĮVADAS 2

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE3

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys 3

12 Lygiagrečių kompiuterių istorija4

13 Uždaviniai lygiagretiems skaičiavimams ir problemos 8

14 Lygiagrečių procesų sinchronizacija10

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS 11

21 Lygiagrečiųjų kompiuterių architektūra 11

22 Lygiagrečiųjų kompiuterių atminties tipai 15

23 Virtualusis lygiagretusis kompiuteris 17

24 Vektoriniai procesoriai 23

3 LYGIAGRETŪS ALGORITMAI 25

31 Lygiagrečiųjų algoritmų ypatumai 25

311 Lygiagrečiųjų algoritmų sudėtingumo teorija 25

312 Spartinimo ir efektyvumo koeficientai 27

313 Mažiausios vykdymo trukmės algoritmai 30

314 Amdahlo dėsnis 31

315 Heterogeninių kompiuterių efektyvumo analizė 32

32 Lygiagrečiojo algoritmo išplečiamumas 33

33 Lygiagrečiųjų algoritmų sudarymo etapai 36

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS 38

IŠVADOS 40

LITERATŪRA 40

2

ĮVADAS

Spręsdami daugelį svarbių technikos informatikos gamtos mokslų uždavinių turime atlikti tiek

daug skaičiavimų kad net ir naudodami pačius geriausius šiuolaikinius kompiuterius negalime laiku rasti

atsakymo Didelių uždavinių ribojamuoju veiksniu gali tapti vieno kompiuterio atminties resursai

Skaičiavimo laiko svarbą galime pabrėžti pavyzdžiu ty Taifūno judėjimo trajektorijos prognozė prieš

42 valandas (naudojant skaitmeninį modeliavimą)

1 pav Taifūno judėjimo trajektorijos prognozė

Lygiagretūs skaičiavimai yra tokia skaičiavimo forma kurioje visos direktyvos (instrukcijos)

atliekamos tuo pačiu metu Lygiagretieji skaičiavimai veikia tokiu principu kad dideli uždaviniai gali

beveik visada būt išskaidyti į mažesnius kurie gali būt išspręsti vienu metu ( lygiagrečiai) Lygiagretieji

skaičiavimai tapo dominuojančia paradigma kompiuterių architektūroje pagrinde daugiafunkcinių

procesorių formoje

Pirmoje šio referato dalyje apžvelgsime lygiagečių skaičiavimų poreikį ir taikymo sritis

susipažinsime su lygiagrečiųjų kompiuterių istorija iškelsime pagrindinius uždavinius lygiagretiems

skaičiavimams ir panagrinėsime jų sprendimo problemas

Antroje dalyje apžvelgsime lygiagrečiųjų kompiuterių architektūrą šių kompiuterių atminties tipus

bei susipažinsime su dabar plačiai naudojamais virtualiais lygiagrečiaisias kompiuterias

Trečioje dalyje susipažinsime su svarbiausiomis lygiagrečių algoritmų ypatybėmis išplėčiamumu

bei sudarymo etapais o ketvirtoje ndash lygegretaus programavimo bibliotekomis naudojamas lygiagrečių

algoritmų sudarymui

3

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys

Didėjant kompiuterių spartai ir jų atminties galimybėms matome spartų naujos technologijos ndash

skaičiavimo eksperimento plitimą Lygiagrečių skaičiavimų taikymo sritys

bull Orų prognozė ir klimato pokyčiai

bull Branduolinės ir cheminės reakcijos

bull Kosmologija geologija seismologija

bull Žmogaus genomas genų inžinerija

bull Raketų lėktuvų automobilių projektavimas

bull Vaizdų generavimas grafika

bull Finansinis ekonominis modeliavimas

Kita taikymo sritis kurioje tenka atlikti labai daug aritmetinių skaičiavimų ndash diskrečiojo

optimizavimo uždaviniai Tai tvarkarščių sudarymas oro bendrovėse mokyklose universitetuose ir pan

krovinių vežimo paršruto optimizavimas skirtingos formos detalių taupus išdėstymas dideliuose

ruošiniuose mikrochemų projektavimas Norėdami rasti tokių uždavinių sprendinius turime patikrinti

labai daug leistinų variantų o tikrinant kiekvieną variantą irgi reikia atlikti nemažai aritmetinių veiksmų

Todėl dažnai tenkinamasi apytikliu sprendiniu kuris randamas patikrinus tik dalį leistinų variantų

Gautasis sprendinio artinys bus tuo tikslesnis kuo daugiau variantų sugebėsime patikrinti

Daugelyje taikymo sričių fiziniai eksperimentai yra keičiami virtualiuoju kompiuteriniu

modeliavimu (2 pav) Tokiais eksperimentais atliekamų skaičiavimų apimtys yra labai didelės be to

dažnai dar reikia tenkinti papildomą sąlygą kad atsakymą turime gauti ne vėliau už nustatytą laiko

momentą

2 pav Didžiųjų uždavinių kitimo tendencijos

4

Pavyzdžiui tokia sąlyga yra esminė kai sprendžiame oro prognozės uždavinį Net ir labai tiksli

rytdienos oro prognozė yra niekam neįdomi jei ją sužinome po dviejų parų

Matematinį oro prognozės modelį sudaro netiesinių diferencialinių lygčių sistema aprašanti

temperatūros slėgio ir vėjo greičio funkcijas Šią sistemą sprendžiame baigtinių skirtumų metodu Tada

visą skaičiavimų sritį dengiame diskrečiuoju tinklu ir kiekviename jo taške ieškome sprendinio reikšmių

Norėdami apskaičiuoti dviejų parų oro prognozę turime nagrinėti sritį kurios ilgis ir plotis yra 5000

kilometrų o aukštis ndash 20 kilometrų Gana tikslų sprendinio artinį gausime naudodami diskretųjį tinklą

kurio vieno elemento dydis yra 01times01times01 kubinių kilometrų Taigi iš viso gauname 11105times tokių

elementų

Uždavinys priklauso ir nuo laiko koordinatės Laiko integravimo žingsnį imkime 05 valandos

Skaičiuodami atliekame 96 žingsnius kiekvienu žingsniu visuose diskrečiojo tinklo taškuose

modifikuojame parametrų reikšmes Tam naudojame pradines pačių parametrų reikšmes ir informaciją

apie parametrus keliuose gretimuose taškuose Tarkime kad viename taške darome 100 aritmetinių

veiksmų tada vienu žingsniu darome 13105times aritmetinių veiksmų o dviejų parų oro prognozės uždavinio

sąnaudos yra 15105times veiksmų Jeigu šį uždavinį bandysime spręsti asmeniniu kompiuteriu ar darbo

stotimi atliekančiais 25 Gflop operacijų per sekundę tai atsakymą gausime tik per 556 valandas

Norėdami apskaičiuoti dviejų parų oro prognozę per 14 valandų turime padidinti kompiuterio spartą bent

40 kartų Jeigu lygiagretusis kompiuteris turi 40 procesorių tai visus diskrečiojo tinklo mazgus dalijame į

40 dalių tada kiekvienas procesorius atliks skaičiavimus tik jam skirtoje srityje Čia padarėme prielaidą

kad spręsdami uždavinį sugebėsime naudoti visų procesorių skaičiavimo pajėgumus

12 Lygiagrečių kompiuterių istorija

Pirmieji šiuolaikinių kompiuterių analogai pradėti naudoti apie 1950 metus Tokie kompiuteriai

buvo skirti tam tikriems uždaviniams spręsti o jų galingumas nedidelis 1958 metais sukurta pirmoji

integralinė schema o 1971 m pradėti naudoti mikroprocesoriai Nuo to laiko procesorių galingumas kas

18 mėnesių padidėja maždaug du kartus (Mūro dėsnis)

1976 m sukurtas pirmasis komercinis vektorinis superkompiuteris CRAY-1 Superkompiuteriais

pradėti vadinti kompiuteriai kurių sprata bent viena eile viršija tam tikro laikotarpio vidutinio

kompiuterio spartą Šiuo metu asmeniniai kompiuteriai yra spartesni už pirmuosius superkompiuterius

(šiuolaikinių mikroprocesorių našumas prilygsta ankstesnių superkompiuterių našumui 3 pav)

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 3: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

2

ĮVADAS

Spręsdami daugelį svarbių technikos informatikos gamtos mokslų uždavinių turime atlikti tiek

daug skaičiavimų kad net ir naudodami pačius geriausius šiuolaikinius kompiuterius negalime laiku rasti

atsakymo Didelių uždavinių ribojamuoju veiksniu gali tapti vieno kompiuterio atminties resursai

Skaičiavimo laiko svarbą galime pabrėžti pavyzdžiu ty Taifūno judėjimo trajektorijos prognozė prieš

42 valandas (naudojant skaitmeninį modeliavimą)

1 pav Taifūno judėjimo trajektorijos prognozė

Lygiagretūs skaičiavimai yra tokia skaičiavimo forma kurioje visos direktyvos (instrukcijos)

atliekamos tuo pačiu metu Lygiagretieji skaičiavimai veikia tokiu principu kad dideli uždaviniai gali

beveik visada būt išskaidyti į mažesnius kurie gali būt išspręsti vienu metu ( lygiagrečiai) Lygiagretieji

skaičiavimai tapo dominuojančia paradigma kompiuterių architektūroje pagrinde daugiafunkcinių

procesorių formoje

Pirmoje šio referato dalyje apžvelgsime lygiagečių skaičiavimų poreikį ir taikymo sritis

susipažinsime su lygiagrečiųjų kompiuterių istorija iškelsime pagrindinius uždavinius lygiagretiems

skaičiavimams ir panagrinėsime jų sprendimo problemas

Antroje dalyje apžvelgsime lygiagrečiųjų kompiuterių architektūrą šių kompiuterių atminties tipus

bei susipažinsime su dabar plačiai naudojamais virtualiais lygiagrečiaisias kompiuterias

Trečioje dalyje susipažinsime su svarbiausiomis lygiagrečių algoritmų ypatybėmis išplėčiamumu

bei sudarymo etapais o ketvirtoje ndash lygegretaus programavimo bibliotekomis naudojamas lygiagrečių

algoritmų sudarymui

3

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys

Didėjant kompiuterių spartai ir jų atminties galimybėms matome spartų naujos technologijos ndash

skaičiavimo eksperimento plitimą Lygiagrečių skaičiavimų taikymo sritys

bull Orų prognozė ir klimato pokyčiai

bull Branduolinės ir cheminės reakcijos

bull Kosmologija geologija seismologija

bull Žmogaus genomas genų inžinerija

bull Raketų lėktuvų automobilių projektavimas

bull Vaizdų generavimas grafika

bull Finansinis ekonominis modeliavimas

Kita taikymo sritis kurioje tenka atlikti labai daug aritmetinių skaičiavimų ndash diskrečiojo

optimizavimo uždaviniai Tai tvarkarščių sudarymas oro bendrovėse mokyklose universitetuose ir pan

krovinių vežimo paršruto optimizavimas skirtingos formos detalių taupus išdėstymas dideliuose

ruošiniuose mikrochemų projektavimas Norėdami rasti tokių uždavinių sprendinius turime patikrinti

labai daug leistinų variantų o tikrinant kiekvieną variantą irgi reikia atlikti nemažai aritmetinių veiksmų

Todėl dažnai tenkinamasi apytikliu sprendiniu kuris randamas patikrinus tik dalį leistinų variantų

Gautasis sprendinio artinys bus tuo tikslesnis kuo daugiau variantų sugebėsime patikrinti

Daugelyje taikymo sričių fiziniai eksperimentai yra keičiami virtualiuoju kompiuteriniu

modeliavimu (2 pav) Tokiais eksperimentais atliekamų skaičiavimų apimtys yra labai didelės be to

dažnai dar reikia tenkinti papildomą sąlygą kad atsakymą turime gauti ne vėliau už nustatytą laiko

momentą

2 pav Didžiųjų uždavinių kitimo tendencijos

4

Pavyzdžiui tokia sąlyga yra esminė kai sprendžiame oro prognozės uždavinį Net ir labai tiksli

rytdienos oro prognozė yra niekam neįdomi jei ją sužinome po dviejų parų

Matematinį oro prognozės modelį sudaro netiesinių diferencialinių lygčių sistema aprašanti

temperatūros slėgio ir vėjo greičio funkcijas Šią sistemą sprendžiame baigtinių skirtumų metodu Tada

visą skaičiavimų sritį dengiame diskrečiuoju tinklu ir kiekviename jo taške ieškome sprendinio reikšmių

Norėdami apskaičiuoti dviejų parų oro prognozę turime nagrinėti sritį kurios ilgis ir plotis yra 5000

kilometrų o aukštis ndash 20 kilometrų Gana tikslų sprendinio artinį gausime naudodami diskretųjį tinklą

kurio vieno elemento dydis yra 01times01times01 kubinių kilometrų Taigi iš viso gauname 11105times tokių

elementų

Uždavinys priklauso ir nuo laiko koordinatės Laiko integravimo žingsnį imkime 05 valandos

Skaičiuodami atliekame 96 žingsnius kiekvienu žingsniu visuose diskrečiojo tinklo taškuose

modifikuojame parametrų reikšmes Tam naudojame pradines pačių parametrų reikšmes ir informaciją

apie parametrus keliuose gretimuose taškuose Tarkime kad viename taške darome 100 aritmetinių

veiksmų tada vienu žingsniu darome 13105times aritmetinių veiksmų o dviejų parų oro prognozės uždavinio

sąnaudos yra 15105times veiksmų Jeigu šį uždavinį bandysime spręsti asmeniniu kompiuteriu ar darbo

stotimi atliekančiais 25 Gflop operacijų per sekundę tai atsakymą gausime tik per 556 valandas

Norėdami apskaičiuoti dviejų parų oro prognozę per 14 valandų turime padidinti kompiuterio spartą bent

40 kartų Jeigu lygiagretusis kompiuteris turi 40 procesorių tai visus diskrečiojo tinklo mazgus dalijame į

40 dalių tada kiekvienas procesorius atliks skaičiavimus tik jam skirtoje srityje Čia padarėme prielaidą

kad spręsdami uždavinį sugebėsime naudoti visų procesorių skaičiavimo pajėgumus

12 Lygiagrečių kompiuterių istorija

Pirmieji šiuolaikinių kompiuterių analogai pradėti naudoti apie 1950 metus Tokie kompiuteriai

buvo skirti tam tikriems uždaviniams spręsti o jų galingumas nedidelis 1958 metais sukurta pirmoji

integralinė schema o 1971 m pradėti naudoti mikroprocesoriai Nuo to laiko procesorių galingumas kas

18 mėnesių padidėja maždaug du kartus (Mūro dėsnis)

1976 m sukurtas pirmasis komercinis vektorinis superkompiuteris CRAY-1 Superkompiuteriais

pradėti vadinti kompiuteriai kurių sprata bent viena eile viršija tam tikro laikotarpio vidutinio

kompiuterio spartą Šiuo metu asmeniniai kompiuteriai yra spartesni už pirmuosius superkompiuterius

(šiuolaikinių mikroprocesorių našumas prilygsta ankstesnių superkompiuterių našumui 3 pav)

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 4: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

3

1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE

11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys

Didėjant kompiuterių spartai ir jų atminties galimybėms matome spartų naujos technologijos ndash

skaičiavimo eksperimento plitimą Lygiagrečių skaičiavimų taikymo sritys

bull Orų prognozė ir klimato pokyčiai

bull Branduolinės ir cheminės reakcijos

bull Kosmologija geologija seismologija

bull Žmogaus genomas genų inžinerija

bull Raketų lėktuvų automobilių projektavimas

bull Vaizdų generavimas grafika

bull Finansinis ekonominis modeliavimas

Kita taikymo sritis kurioje tenka atlikti labai daug aritmetinių skaičiavimų ndash diskrečiojo

optimizavimo uždaviniai Tai tvarkarščių sudarymas oro bendrovėse mokyklose universitetuose ir pan

krovinių vežimo paršruto optimizavimas skirtingos formos detalių taupus išdėstymas dideliuose

ruošiniuose mikrochemų projektavimas Norėdami rasti tokių uždavinių sprendinius turime patikrinti

labai daug leistinų variantų o tikrinant kiekvieną variantą irgi reikia atlikti nemažai aritmetinių veiksmų

Todėl dažnai tenkinamasi apytikliu sprendiniu kuris randamas patikrinus tik dalį leistinų variantų

Gautasis sprendinio artinys bus tuo tikslesnis kuo daugiau variantų sugebėsime patikrinti

Daugelyje taikymo sričių fiziniai eksperimentai yra keičiami virtualiuoju kompiuteriniu

modeliavimu (2 pav) Tokiais eksperimentais atliekamų skaičiavimų apimtys yra labai didelės be to

dažnai dar reikia tenkinti papildomą sąlygą kad atsakymą turime gauti ne vėliau už nustatytą laiko

momentą

2 pav Didžiųjų uždavinių kitimo tendencijos

4

Pavyzdžiui tokia sąlyga yra esminė kai sprendžiame oro prognozės uždavinį Net ir labai tiksli

rytdienos oro prognozė yra niekam neįdomi jei ją sužinome po dviejų parų

Matematinį oro prognozės modelį sudaro netiesinių diferencialinių lygčių sistema aprašanti

temperatūros slėgio ir vėjo greičio funkcijas Šią sistemą sprendžiame baigtinių skirtumų metodu Tada

visą skaičiavimų sritį dengiame diskrečiuoju tinklu ir kiekviename jo taške ieškome sprendinio reikšmių

Norėdami apskaičiuoti dviejų parų oro prognozę turime nagrinėti sritį kurios ilgis ir plotis yra 5000

kilometrų o aukštis ndash 20 kilometrų Gana tikslų sprendinio artinį gausime naudodami diskretųjį tinklą

kurio vieno elemento dydis yra 01times01times01 kubinių kilometrų Taigi iš viso gauname 11105times tokių

elementų

Uždavinys priklauso ir nuo laiko koordinatės Laiko integravimo žingsnį imkime 05 valandos

Skaičiuodami atliekame 96 žingsnius kiekvienu žingsniu visuose diskrečiojo tinklo taškuose

modifikuojame parametrų reikšmes Tam naudojame pradines pačių parametrų reikšmes ir informaciją

apie parametrus keliuose gretimuose taškuose Tarkime kad viename taške darome 100 aritmetinių

veiksmų tada vienu žingsniu darome 13105times aritmetinių veiksmų o dviejų parų oro prognozės uždavinio

sąnaudos yra 15105times veiksmų Jeigu šį uždavinį bandysime spręsti asmeniniu kompiuteriu ar darbo

stotimi atliekančiais 25 Gflop operacijų per sekundę tai atsakymą gausime tik per 556 valandas

Norėdami apskaičiuoti dviejų parų oro prognozę per 14 valandų turime padidinti kompiuterio spartą bent

40 kartų Jeigu lygiagretusis kompiuteris turi 40 procesorių tai visus diskrečiojo tinklo mazgus dalijame į

40 dalių tada kiekvienas procesorius atliks skaičiavimus tik jam skirtoje srityje Čia padarėme prielaidą

kad spręsdami uždavinį sugebėsime naudoti visų procesorių skaičiavimo pajėgumus

12 Lygiagrečių kompiuterių istorija

Pirmieji šiuolaikinių kompiuterių analogai pradėti naudoti apie 1950 metus Tokie kompiuteriai

buvo skirti tam tikriems uždaviniams spręsti o jų galingumas nedidelis 1958 metais sukurta pirmoji

integralinė schema o 1971 m pradėti naudoti mikroprocesoriai Nuo to laiko procesorių galingumas kas

18 mėnesių padidėja maždaug du kartus (Mūro dėsnis)

1976 m sukurtas pirmasis komercinis vektorinis superkompiuteris CRAY-1 Superkompiuteriais

pradėti vadinti kompiuteriai kurių sprata bent viena eile viršija tam tikro laikotarpio vidutinio

kompiuterio spartą Šiuo metu asmeniniai kompiuteriai yra spartesni už pirmuosius superkompiuterius

(šiuolaikinių mikroprocesorių našumas prilygsta ankstesnių superkompiuterių našumui 3 pav)

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 5: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

4

Pavyzdžiui tokia sąlyga yra esminė kai sprendžiame oro prognozės uždavinį Net ir labai tiksli

rytdienos oro prognozė yra niekam neįdomi jei ją sužinome po dviejų parų

Matematinį oro prognozės modelį sudaro netiesinių diferencialinių lygčių sistema aprašanti

temperatūros slėgio ir vėjo greičio funkcijas Šią sistemą sprendžiame baigtinių skirtumų metodu Tada

visą skaičiavimų sritį dengiame diskrečiuoju tinklu ir kiekviename jo taške ieškome sprendinio reikšmių

Norėdami apskaičiuoti dviejų parų oro prognozę turime nagrinėti sritį kurios ilgis ir plotis yra 5000

kilometrų o aukštis ndash 20 kilometrų Gana tikslų sprendinio artinį gausime naudodami diskretųjį tinklą

kurio vieno elemento dydis yra 01times01times01 kubinių kilometrų Taigi iš viso gauname 11105times tokių

elementų

Uždavinys priklauso ir nuo laiko koordinatės Laiko integravimo žingsnį imkime 05 valandos

Skaičiuodami atliekame 96 žingsnius kiekvienu žingsniu visuose diskrečiojo tinklo taškuose

modifikuojame parametrų reikšmes Tam naudojame pradines pačių parametrų reikšmes ir informaciją

apie parametrus keliuose gretimuose taškuose Tarkime kad viename taške darome 100 aritmetinių

veiksmų tada vienu žingsniu darome 13105times aritmetinių veiksmų o dviejų parų oro prognozės uždavinio

sąnaudos yra 15105times veiksmų Jeigu šį uždavinį bandysime spręsti asmeniniu kompiuteriu ar darbo

stotimi atliekančiais 25 Gflop operacijų per sekundę tai atsakymą gausime tik per 556 valandas

Norėdami apskaičiuoti dviejų parų oro prognozę per 14 valandų turime padidinti kompiuterio spartą bent

40 kartų Jeigu lygiagretusis kompiuteris turi 40 procesorių tai visus diskrečiojo tinklo mazgus dalijame į

40 dalių tada kiekvienas procesorius atliks skaičiavimus tik jam skirtoje srityje Čia padarėme prielaidą

kad spręsdami uždavinį sugebėsime naudoti visų procesorių skaičiavimo pajėgumus

12 Lygiagrečių kompiuterių istorija

Pirmieji šiuolaikinių kompiuterių analogai pradėti naudoti apie 1950 metus Tokie kompiuteriai

buvo skirti tam tikriems uždaviniams spręsti o jų galingumas nedidelis 1958 metais sukurta pirmoji

integralinė schema o 1971 m pradėti naudoti mikroprocesoriai Nuo to laiko procesorių galingumas kas

18 mėnesių padidėja maždaug du kartus (Mūro dėsnis)

1976 m sukurtas pirmasis komercinis vektorinis superkompiuteris CRAY-1 Superkompiuteriais

pradėti vadinti kompiuteriai kurių sprata bent viena eile viršija tam tikro laikotarpio vidutinio

kompiuterio spartą Šiuo metu asmeniniai kompiuteriai yra spartesni už pirmuosius superkompiuterius

(šiuolaikinių mikroprocesorių našumas prilygsta ankstesnių superkompiuterių našumui 3 pav)

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 6: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

5

3 pav Mikroporocesorių našumo tendencijos

Vektoriniai kompiuteriai ypač gerai atlieka skaičiavimus su vektoriais Tačiau šia ypatybe galime

pasinaudoti spręsdami tik tam tikros klasės uždavinius Palyginti su įprastinės architektūros

kompiuteriais vektoriniai procesoriai leidžia skaičiavimus pagreitinti nuo 4 iki 20 kartų Įvairių

technikos sričių pramonės mokslo šakų poreikis kompiuterių spartai didėjo daug greičiau nei procesorių

(net ir vektorinių) sparta Todėl buvo ieškoma naujų principinių susidariusios problemos sprendimo būdų

Lygiagrečiųjų kompiuterių idėja remiasi nuo senovės žinomu principu kad sunkų darbą lengviau

įveikti kai vienu metu dirba daug darbininkų ty kai viename kompiuteryje skaičiavimus atlieka keli

procesoriai

Pirmasis lygiagretusis kompiuteris Illiac IV buvo sukurtas 1974 m Jis vienu metu tokią pačią

operaciją galėjo atlikti skirtinguose procesoriuose su skirtingais duomenimis Dabar jau naudojami įvairių

tipų lygiagretieji kompiuteriai Juose realizuoti skirtingi konstrukciniai sprendimaiVienuose

kompiuteriuose yra tik keli tačiau labai galingi procesoriai pvz Cray Y-MP kompiuterį sudaro nuo 4

iki 16 vektorinių procesorių kiekvieno jų sparta yra 5-20 Gfops (1 Gplof = 109 slankiojo kablelio

operacijų per sekundę) Kituose kompiuteriuose sujungiami keli šimtai ar net tūkstančiai vidutinio

galingumo procesorių

Nuo 1990 m labai paplito virtualieji lygiagretieji kompiuteriai kurie sukuriami sujungus lokaliuoju

tinklu vienos organizacijos darbo stotis ir asmeninius kompiuterius Tokie kompiuteriai ypač patrauklūs

nereikia papildomai jokių finansinių investicijų o panaudoto galime visus resursus didelių skaičiavimų

reikalaujamiems uždaviniams spręsti

Dar viena skaičiavimo technologijų kryptis susijusi su globaliųjų kompiuterių tinklų ir interneto

atsiradimu bei sparčiu vystymusi Daugelio universitetų mokslinių tyrimų centrų ir komercinių įstaigų

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 7: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

6

kompiuteriai yra sujungti labai sparčiais ryšių kanalais Todėl atsiranda galimybė uždavinius parengti

spręsti savo asmeniniame kompiuteryje o juos spręsti daugoti didelį duomenų kiekį informacijos kituose

kompiuteriuose kurie geriau pritaikyti tokiems tikslams Tokia strategija leidžia veksmingai naudoto

galingiausius kompiuterius atsižvelgiant į laiko juostų skirtumus nepastovų skirtingų institucijų

skaičiavimų poreikį programinės įrangos specializaciją

Pradėjus naudoti labai daug ir įvairių superkompiuterių tapo svarbu palyginti jų galimybes

(superkompiuterių našumo tendencijos pateiktos 4 pav)

4 pav Superkompiuterių našumo tendencijos

Nuo 1993 m superkompiuterius pradėta sėkmingai lyginti pagal kelis testus Juose pasirinktos

užduotys yra labai panašios į tas kurias dažniausiai ir sprendžia superkompiuteriai Vienas iš

populiariausių yra Linpack testas jame sprendžiamos tiesinių lygčių sistemos su labai didelėmis

matricomis Kai matricos dimensija yra n ntimes tada atliekame 3

22( )

3n

O n+ aritmetinių veiksmų su

slnakiojo kablelio skaičiais

Linpack testas rodo kad šiuolaikinių superkompiuterių teorinė didžiausia sparta yra realiai

pasiekiama kai sprendžiamas šis svarbus įvairių taikymų uždavinys Šiame algoritme aritmetinių

veiksmų skaičius 3

22( )

3n

O n+ yra viena eile didesnis už persiunčiamų duomenų skaičių 2( )O n be to

duomenys efektyviai naudojami sparčioje kompiuterio atmintyje Todėl svarbiausiu veiksniu tampa

procesoriaus skaičiavimo sparta ir mažiau reikšmingos yra lygiagrečiojo kompiuterio charakteristikos

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 8: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

7

Linpack testas yra palankus kompiuterių klasteriams ypač kai sprendžiame labai didelies tiesinių lygčių

sistemas

Nagrinėdami daug skaičiavimo algoritmų matome kad santykis tarp aritmetinių operacijų ir

persiunčiamų duomenų skaičiaus bei duomenų judėjimo lokalumas gali labai smarkiai keistis Taip pat

labai svarbus ir santykis tarp kompiuterio atminties ir procesorių skaičiavimo spartos (rezultatus reikia

saugoti) Todėl pasiūlyti keli uždavinių rinkiniai kurie ir naudojami superkompiuteriams vertinti Vienas

populiariausias testų grupių rinkinių ndash NPB (angl NAS Perfect Benchmarks) HPCC (angl High

Productivity Computing Chalenge)

1 lentelėje pateikti duomenys apie 2009 m lapkričio mėn sparčiausius pasaulio superkompiuterius

(httpwwwtop500org)

1 lentelė 2009 m lapkričio mėn sparčiausi pasaulio superkompiuteriai

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 9: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

8

13 Uždaviniai lygiagretiems skaičiavimams ir problemos

Lygiagretieji skaičiavimai yra sudėtinga šiuolaikinio mokslo sritis Jie plėtojami keliomis

matematikos informatikos kompiuterių inžinerijos kryptimis tačiau visos jos yra glaudžiai tarpusavyje

susijusios Prieš suformuluojant lygiagrečių skaičiavimų uždavinius panagrinėkime paanalizuokime

nuosekliųjų ir lygiagrečių skaičiavimų skirtumus (2 lentelė)

2 lentelė Nuosekliųjų ir lygiagrečiųjų skaičiavimų lyginamoji analizė

Nuoseklieji skaičiavimai (angl serial computing)

Lygiagretieji skaičiavimai (angl parallel computing)

Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu

Vykdomi naudojant keletą procesorių vienu metu

Problema yra išskaidoma į diskrečią instrukcijų seką

Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai

Instrukcijos yra vykdomos viena po kitos (nuosekliai)

Kiekviena atskira dalis yra skaičiuojama nuosekliai

Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija

Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendžia vieną problemą

Šiuolaikinė lygiagrečioji sistema privalo būti integruota sistema kurią sudaro procesorių aibė (jos

aparatūra) atminties sistema (bendra paskirstyta kešai) ryšių (komutacijos) sistema sisteminė

programinė įranga (OS kompiliatoriai) bei taikomosios programos

Uždaviniai lygiagretiesiems skaičiavimams

bull Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai

galima naudoti vis daugiau procesorių bei didesnius atminties resursus)

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 10: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

9

bull Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali

būti sėkmingai realizuoti lygiagrečiaisiais kompiuteriais Todėl sudaromi svarbiausių uždavinių

klasių lygiagretieji algoritmai geriausiai pritaikyti įvairių tipų lygiagretiesiems kompiuteriams

Ypač aktualus yra užduočių paskirstymo tarp procesorių uždavinys kurį tenka spręsti kuriant bet

kokį lygiagretųjį algoritmą Algoritmus testuoti sudėtinga net ir nuosekliems kompiuteriams todėl

svarbu mokėti sudaryti teorinius lygiagrečiųjų algoritmų sudėtingumo modelius leidžiančius

įvertinti algoritmų efektyvumą prognozuoti uždavinio sprendimo trukmę bei iš anksto nustatyti

optimalų procesorių skaičių)

bull Sukurti ldquolygiagrečiąsiasrdquo kalbas

bull Sukurti lygiagretaus programavimo įrankius

bull Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti

bull Užtikrinti lygiagrečių programų pernešamumą

Yra sukurta daug programavimo kalbų ir įrankių skirtų nuosekliesiems kompiuteriams Ši patirtis

yra svarbi ir naudojant lygiagrečiuosius algoritmus Bet lygiagretieji skaičiavimai suformuluoja daug

naujų reikalavimų Labai svarbu kurti programinius įrankius leidžiančius efektyviai ir taupiai realizuoti

sudarytus lygiagrečiuosius algoritmus Siekiama kad programas galima būtų nesunkai perkelti iš vieno

lygiagrečiojo kompiuterio į kitą Plėtojantis patiems lygiagretiesiems kompiuteriams keičiasi ir tobulėja

programavimo kalbos Šiuo metu jau sukurti keli lygiagrečiojo programavimo standartai skirti

populiariesiems lygiagrečiųjų kompiuterių architektūros tipams

Kita svarbi veiklos kryptis yra įrankių padedančių automatizuoti tam tikros uždavinių kasės

lygiagrečiųjų sprendimo algoritmų sudarymą kūrimas Šie įrankiai ir programų bibliotekos smarkiai

didina lygiagrečiųjų skaičiavimų vartotojų aibę bei trumpina algoritmų programavimo bei derinimo laiką

Lygiagrečių skaičiavimų problemos

bull Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis

išlygiagretinimui

bull Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius

pagrindinių uždavinių trūksta patyrusių specialistų

bull Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos

modelius ar kodą intelektinės nuosavybės problema

bull Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai

imlus darbui uždavinys

bull Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti

bull Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 11: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

10

14 Lygiagrečių procesų sinchronizacija

Identifikuotos smulkesnės užduotys (angl subtasks) lygiagrečiai vykdomoje programoje yra dažnai

vadinamos gijomis (angl threads) Smulkenės gijos angliškai vadinamos fibers o didenės gijų versijos

pačios tampa procesais Kai kompiuteryje veikia vienas procesorius jis nuolat perjungia savo režimą

vykdydamas tai vieną tai kitą užduotį vadinamąjį threadlsquoą Tai vyksta taip greitai kad vartotojas to nė

nepastebi ir jam gali atrodyti kad dvi skirtingos užduotys vykdomos vienu metu

5 pav Nuoseklusis procesas su dviejomis vykdymo gijomis

Pavyzdys reikia skaičiuoti kiek sąskaitose yra pinigų bei perrrašyti iš sąskaitos A kurioje yra 100 litų į

sąskaitą B kurioje taip pat yra 100 litų 10 litų

Procesas vykdomas nuosekliai Procesas vykdomas lygiagrečiai

200

1010

200

A B

A AB B

A B

+ =

= minus= +

+ =

20010 90

190

10 110

200

A BA A

A B

B B

A B

+ == minus =

+ =

= + =

+ =

ty vienas procesorius skaičiuos sąskaitose esančią pinigų

sumą o kitas perrašinės pinigus iš sąskaitos į sąskaitą galime

gauti klaidingus rezultatus nes galima tokia situacijakad

pinigų suma esanti sąskaitose bus apskaičiuota tada kai kitas

procesorius bus nuo vienos sąskaitos nurašęs 10 Lt bet dar

nepridėjęs priesąskaitos B

Vykdymo gijoms neretai reikia naudotis išoriniais kintamaisiais kuriuos jos įtakoja Tokia situacija

yra bendrosios atminties lygiagretaus programavimo modelyje pritaikytame bendrosios atminties

lygiagretiesiems kompiuteriams (22 poskyris) Žinoma gijos gali turėti ir lokalius kintamuosius jos

privačioje atmintyje kurie yra ldquomatomirdquo tik jai

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 12: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

11

Daug lygiagrečiai realizuojamų programų reiklauja sinchroniško užduočių gijų vykdymo O tam

reikalingi barjerai (angl barriers) Barjeras grupei procesų ar gijų programuotojo kode reiškia kad jie

privalo sustoti šioje vietoje ir palaukti kol visi procesaigijos pasieks barjerą

Įvertinus visus šiuo dalykus akivaizdu kad ne visas išlygiagretinimas duoda pagreitėjimą Kai

užduotis yra išskaidoma į vis daugiau gijų tos gijos vis daugiau laiko skiria komunikacijai viena su kita

Galiausiai komunikavimas užima daugiau laiko nei duoda naudos lygiagretinimas Tai yra vadinama

lygiagrečiuoju sulėtinimu (angl parallel slowdown)

Paskirstytos atminties lygiagrečiojo programavimo modelyje (22 poskyris) kiekvienas procesas turi

tik lokaliuosius kintamuosius (iš savo lokaliosios atminties) Kadangi kiekvienas procesas dirba tik su

savo atmintimi tai jo atliekami atminties pakeitimai (pvz kintamojo reikšmės) niekaip neįtakoja kitų

procesorių atmintis (pvz jei jie turi lygiai taip pat pavadintus kintamuosius tai yra kiti kintamieji) Nėra

jokių bendrų kintamųjų todėl nėra ir ldquorace conditionrdquo problemos) Tačiau lygriagrečių procesų

sinchronizacija yra programuotojo rūpestis Kai vienam iš procesų prireikia duomenų iš kito proceso tai

yra programuotojo uždavinys nurodyti kada ir kaip tie duomenys bus siunčiami

2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS

21 Lygiagrečiųjų kompiuterių architektūra

Šiame skyrelyje susipažinsime su svarbiausiais lygiagrečiųjų kompiuterių tipais Tokia informacija

yra labai svarbi kai norime sudaryti efektyvius lygiagrečiuosius algoritmus Algoritmų teorijoje

stengiamasi abstrahuotis nuo konkrečių kompiuterių ypatybių tačiau neatsižvelgus į kai kuriuos esminius

lygiagrečiųjų kompiuterių bruožus nepavyktų sukurti universalių ir efektyvių algoritmų Todėl būtina

susipažinti su kaip lygiagretieji kompiuteriai sudaryti ir kaip jie veikia

Dauguma šiuolaikinių personalinių procesorių ir darbo stočių yra sukurti remiantis Neumano (John

von Neumann) modeliu Svarbiausios tokio kompiuterio dalys yra procesorius kurį sudaro valdymo

įrenginys (CU angl control unit) skaičiavimo įrenginys (PE angl processing element) ir atminties

blokas (MU angl storage unit arba memory) Ši schema pavaizduota 6 pav

6 pav Nuosekliojo kompiuterio schema

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 13: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

12

Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu

aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu 1972 m Flyno pasiūlytoje

kompiuterių klasifikacijoje nuoseklieji kompiuteriai sudaro SISD grupę

MFlynas (Michael Flynn) 1972 metais pasiūlė įvairias kompiuterių architektūras klasifikuoti

remiantis komandų (I) ir duomenų (D) srautų skaičiumi (34 lentelės)

3 lentelė MFlyno kompiuterių architektūros klasifikacija

SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data

CU ndash valdymo įrenginys PE ndash skaičiavimo (procesorinis)

įrenginys MU ndash atminties blokas

-Visos šio skaičiavimo modelio operacijos vykdomas nuosekliai viena po kitos vienu metu aritmetiniai ir loginiai veiksmai atliekami tik su vienu duomenų rinkiniu

-Tai paprasčiausi kompiuteriai turintys vieną procesorių kuris vykdo programos komandas vieną po kitos

-Jų procesoriai gali būti konvejerizuoti

-Jų procesoriai taip pat gali turėti keletą funkcinių įtaisų

- Čia daug identiškų procesorinių elementų (PE) dirba valdant vienam valdymo įtaisui (CU) Ta pati komanda perduodama visiems PE Kiekvienas iš jų duomenis gauna iš savos atminties (LM)

- Maksimalus našumas pasiekiamas tik tam tikrų uždavinių klasėje Skaičiavimų modelis panašus į vektorių apdorojimą

Kai kurios SIMD sistemos vadinamos matriciniais procesoriais Jos lankstesnės nei vektoriniai procesoriai nes gali vykdyti ir atskiras programas

4 lentelė MFlyno kompiuterių architektūros klasifikacija

MISD - Multiple Instruction Single Data MIMD - Multiple Instruction Multiple Data

- MISD sistemoje yra daug PE kurių kiekvienas vykdo savo programą

- Visi PE dirba su tuo pačiu duomenų srautu tačiau tai gali būti padaryta dviem būdais 1) kiekvienas

- Jose kiekvienas PE yra savarankiškas procesorius ir gali vykdyti savo programą

-MIMD sistemos dar vadinamos multiprocesoriais

-tokie procesoriai privalo turėti galimybę keistis

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 14: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

13

PE gauna tuos pačius duomenis 2) kiekvienas PE savo darbo rezultatus perduoda sekančiam PE (makrokonvejeris ndash žr paveikslą)

informacija per bendrą atmintį ar naudojant tarpprocesorinių ryšių sistemą

-MIMD sistemos skaičiavimų pagrindinis modelis ndash rinkinys nepriklausomų procesų kurie tam tikrais momentais kreipiasi į bendrus duomenis

-Jos turi keletą variantų - nuo paskirstytų skaičiavimų iki srautinių skaičiavimų

- MIMD sistemoms dabar skiriamas padidintas dėmesys nes

1) jos yra lanksčios ndash gali dirbti ir kaip vieno vartotojo sistema užtikrinanti labai aukštą taikomosios programos vykdymo spartą ir kaip daugiaprogramė sistema ir kaip tam tikra šių galimybių kombinacija

2) gali panaudoti šiuolaikinių mikroprocesorių technologijų pranašumus atsižvelgiant į geriausią kainosnašumo santykį

Dauguma šiuolaikinių superkompiuterių yra multiprocesorinės sistemos kurių procesoriai ndash

vektoriniai arba SIMD tipo procesoriai Čia derinami įvairūs išlygiagretinimo variantai ndash kompiliatorius

automatiškai vektorizuoja tinkamus ciklus o kitoms programoms dalims taiko kitas lygiagrečiųjų

skaičiavimų galimybes

Kaip dažnai būna klasifikacija nėra tobula yra tokios sistemos kurios nepakliūna į klasifikaciją

taip pat yra svarbūs požymiai kurie klasifikacijoje neįvertinami Flyno klasifikacijoje neatsižvelgiama į

lygiagrečiųjų skaičiavimų ldquogrūdėtumąrdquo į jų sinchronizacijos metodus

M Flyno klasifikacijos papildymai

SISD skiriamos dvi klasės

bull su vienu FĮ - ldquonuoseklūs skaliariniai kompiuteriairdquo

bull su keliais FĮ - vektoriniai kompiuteriai (CDC6600 Cray 1 )

SIMD skiriamos dvi klasės

bull ldquobit slicedrdquo - STARAN MPP DAP CM-1

bull ldquoword slicedrdquo - ILLIAC IV PEPE

Kompiuterio skaičiavimo greitis priklauso nuo dviejų svarbiausių veiksnių procesoriaus taktinio

greičio kuris matuojamas Hzs ir parodo kiek instrukcijų kompiuteris įvykdo per vieną sekundę bei nuo

greičio kuriuo renginys keičiasi duomenimis su atmintimi Nė vienas kompiuterio veiksmas negali būti

atliktas greičiau už vieno takto trukmę pavyzdžiui pagrindinės aritmetinės operacijos trunka nuo keturių

iki kelių dešimčių taktų Todėl kuo didesnis procesoriaus taktinis greitis tuo greičiau bus atliekami visi

veiksmai

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 15: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

14

Tačiau daugeliu atvejų kompiuterio spartą riboja duomenų pasikeitimo tarp skaičiavimo įrenginio ir

atminties greitis Todėl stengiamasi šį laiką sutrumpinti hierarchiškai organizuojant atmintį Skiriame

labai greitą bet labai brangią registrinę atmintį Joje saugomi tik kelių artimiausių operacijų operandai

Skaičiai į registrinę atmintį patenka iš gana greitos operatyvios buferinės atminties (angl cache memory)

Šiuolaikiniuose asmeniniuose kompiuteriuose jau galime naudoti 256-1024 Mbaitus tokios atminties kuri

yra realizuotai kaip laisvos krypties atmintis (angl RAM ndash random access memory)

Dauguma duomenų yra saugoma išorinėje standžiųjų diskų atmintyje Tačiau duomenų keitimasis

tarp išorinės ir operatyviosios atminčių sąlygiškai yra lėtas

Kurdami efektyvius algoritmus turime stengtis

bull minimizuoti duomenų judėjimą tarp skirtingų atminties lygių stengtis kuo greičiau skaityti

duomenis esančius išorinėje atmintyje

bull keistis kuo didesniais duomenų kiekiais

bull kuo ilgiau naudoti duomenis jau esančius atminties registre bei sparčiojoje atmintyje

Sudarydami algoritmus dažniausiai darome prielaidą kad naudojame virtualią atmintį kurios

resursai yra pakankami o kiekvieną atminties ląstelę pasiekiame nurodydami jos adresą bendrame adresų

sąraše Duomenų kopijavimo uždavinį paliekame spręsti operacinei kompiuterio sistemai Tačiau toks

paprastas sudėtingų ir didelės apimties uždavinių sprendimo būdas gali būti neveiksmingas Tada tenka

kurti specialius algoritmus įvertinančius išvardytus tris veiksmingų algoritmų sudarymų principus

Algoritmai kuriuose naudojama standžiųjų diskų atmintis vadinami išoriniais algoritmais Juose

daugiausia dėmesio skiriama ne aritmetiniams veiksmams minimizuoti o efektyviai pasikeisti

duomenimis

Nuoseklieji kompiuteriai turi tik vieną skaičiavimo ir valdymo įrenginį Konstruodami lygiagretųjį

kompiuterį galime naudoti daugiau procesorių arba didinti tik skaičiavimo įrenginių skaičių

Jeigu kompiuteryje yra tik vienas valdymo įrenginys ir keli skaičiavimo įrenginiai tai vykdant

programą visi šie skaičiuokliai arba atlieka tokią pačią operaciją su skirtingais duomenimis arba nevykdo

jokių veiksmų Toks skaičiavimo modelis yra vadinamas SIMD tipo (2 lentelė) Tokie lygiagretieji

kompiuteriai dar vadinami matriciniais kompiuteriais nes jie efektyvūs kai atliekami veiksmai su

matricomis SIMD architektūros kompiuteriams priklauso ir vektoriniai procesoriai juose ta pati

operacija atliekama daugeliu operandų

Jeigu kompiuteryje yra keli procesoriai galintys vykdyti skirtingas operacijas tai turime MIMD

tipo skaičiavimo modelį (3 lentelė) Tokiu kompiuteriu galime realizuoti daug bendresnių algoritmų

tačiau sunkiau sinchronizuoti procesorių darbą

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 16: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

15

22 Lygiagrečiųjų kompiuterių atminties tipai

Sudarydami lygiagrečiuosius algoritmus sprendžiame kelis pagrindinius uždavinius tarp jų

svarbiausias ndash uždavinio skaidymas į mažesnes užduotis jų paskirstymas procesoriams ir duomenų

persiuntimas tarp procesorių Būtent duomenų persiuntimo algoritmai esmingai priklauso nuo

kompiuterio atminties architektūros Skiriamos dvi didelės lygiagrečiųjų kompiuterių grupės

bull bendrosios atminties kompiuteriai

bull paskirstytosios atminties kompiuteriai

Šis padalijimas yra svarbus netik sudarant ir analizuojant lygiagrečiuosius algoritmus bet ir juos

realizuojant kompiuterio programa Vieni programavimo principai ir priemonės skirti bendrosios

atmnities kompiuteriams visai kiti ndash paskirstytosios atminties kompiuteriams

Bendrosios atminties lygiagretieji kompiuteriai Visi procesoriai atlieka veiksmus su tam tikrais

duomenimis kuriuos perskaito ir užrašo į jiems skirtas atminties ląsteles Bendrosios atminties

lygiagretieji kompiuteriai turi tik vieną atminties bloką ir visi procesoriai gali tiesiogiai pasiekti visas

atminties vietas (7 pav)

7 pav Bendrosios atminties lygiagretieji kompiuteriai

Jeigu visų procesorių bet kokių duomenų persiuntimo greitis yra vienodas tai sakome jog turime

kompiuterį su tolygiai pasiekiama bendrąja atmintimi (angl UMA ndash uniform memory access)

Tačiau daugelio procesorių grupė techniškai sunkiai realizuoja tokią sąlygą todėl dažnai atmintis

skirstoma į dalis kurios priklauso skirtingiems procesoriams Ir šiuo atveju išlieka bendras atminties

adresavimas bet procesoriai greičiau pasiekia duomenis esančius lokalioje atminties dalyje nei

duomenis esančius kituose procesoriuose Turime kompiuterius su netolygiai pasiekiama bendrąja

atmintimi (NUMA ndash nonuniform memory acces)

Kadangi kiekvienas procesorius gali tiesiogiai perskaityti ir užrašyti duomenis esančius kito

procesoriaus atmintyje tai UMA ir NUMA tipo kompiuteriai dar vadinami pasidalintosios atminties

lygiagrečiaisiais kompiuteriais

Kaip jau buvo minėta 14 poskyryje bendrosios atminties kompiuteriuose lygiagretusis algoritmas

vykdomas daugeliu procesų (angl threads) kai skaičiuojamos parengtos vykdyti užduotys Gali būti

CU 0 CU 1 CU N

PE 0 PE 1 PE N

Memory

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 17: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

16

naudojamas bet kuris laisvas procesorius todėl norint sumažinti duomenų kopijavimo sąnaudas

greitosios atminties (angl cash memory) turinys sinchronizuojamas visuose procesoriuose Dėl to

atsiranda papildomų algoritmo vykdymo sąnaudų Kai kuriuose NUMA tipo kompiuteriuose procesai

negali migruoti tarp procesorių jie visą laiką naudoja tą procesorių kuriame ir buvo sukurti Tačiau toks

apribojimas gali sukelti kitą nepageidaujamą poveikį ndash netolygų darbo pasidalijimą tarp procesorių

Tarp šiuolaikinių kompiuterių naudojančių bendrąją atmintį (NUMA tipo kompiuteris) galime

išskirti Hewlett-Packard firmos kompiuterį HP Superdome

Paskirstytosios atminties lygiagretieji kompiuteriai Tokio tipo kompiuteriai priklauso MIMD

tipui Tačiau dabar vienas procesorius gali tiesiogiai perskaityti ir įrašyti tik duomenis esančius jo

lokalioje atmintyje (8 pav)

8 pav Paskirstytos atminties lygiagretieji kompiuteriai

Jeigu vykdant algoritmą reikalingi duomenys saugomi kitame procesoriuje tai antrasis procesorius

turi nusiųsti pirmajam pranešimą su reikalinga informacija Pranešimo perdavimo mechanizmas toks

vienas procesorius siunčia pranešimą o kitas procesorius kuriam reikalingi duomenys laukia kol ateis

pranešimas Duomenų persiuntimu turi pasirūpinti pats programuotojas nurodydamas kas kam ir kada

turi siųsti ar gauti pranešimą Toks duomenų siuntimas tampa ir algoritmo vykdymo sinchronizavimo

tašku

Taigi duomenų mainai paskirstytosios atminties lygiagrečiuose kompiuteriuose yra sudėtingesni

nei bendrosios atminties kompiuteriuose Tačiau šiuo atveju nesusiduriame su svarbia problema kuri

egzistuoja bendrosios atminties kompiuteriuose kai keli procesoriai vienu metu bando skaityti irarba

rašyti tą pačią atminties vietą

Kito tipo lygiagrečiojo kompiuterio ypatybių emuliavimas Sudarydami programą orientuojamės

į vieną iš kompiuterių tipų Tačiau pageidautina kad tą pačią programą galėtų vykdyti abiejų tipų

lygiagretieji kompiuteriai Visai nesudėtinga bendrosios atminties kompiuteryje emuliuoti paskirstytosios

atminties lygiagretųjį kompiuterį Visą atmintį padalijame į tiek dalių kiek turime procesorių ir kiekvieną

iš jų priskiriame tam tikram procesoriui Tada siunčiamasis pranešimas tiesiogiai įrašomas į kitam

CU 0 CU 1 CU N

PE 0 PE 1 PE N

M 0 M 1 M N

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 18: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

17

procesoriui skirtos atminties bloką Panašiai yra realizuojamas ir duomenų gavimas ndash procesorius

tiesiogiai perskaito reikalingą informaciją

Daug sunkiau paskirstytosios atminties kompiuteryje emuliuoti bendrąjį atminties adresavimą

Kdangi bet koks duomenų judėjimas gali vykti tik pranešimų siuntimo ir gavimo būdu tai kiekviename

procesoriuje reikia generuoti papildomus procesus kurie atsakingi tik už pranešimų persiuntimą

23 Virtualusis lygiagretusis kompiuteris

Anksčiau aukščiausio našumo augimas buvo siejamas su superkompiuteriais tačiau patirtis parodė

kad

bull superkompiuterių kaina yra aukšta

bull jų plėtimo galimybės ribotos

bull elementų bazė greitai keičiasi ir superkompiuterių konstravimas nespėja su tuo

bull superkompiuteriai greitai ldquosenstardquo našumo požiūriu

Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti

kompiuteriai naudojama kaip vieningas unifikuotas kompiuterinis resursas Tipinis kompiuterių klasterio

pavyzdys pateiktas (9 pav)

9 pav Kompiuterių klasterio pavyzdys

Kiekviename klasterio mazge veikia sava OS kopija Mazgas gali būti paprastas kompiuteris arba

multiprocesorinis kompiuteris klasterį sudarantys kompiuteriai gali turėti skirtingas konfigūracijas

(skirtingą procesorių skaičių skirtingos talpos atmintis ir diskus) Klasterio mazgai gali būti sujungiami

naudojant įprastas jungimo į tinklą priemones (Ethernet FDDI Fibre Channel) arba specialius

nestandartinius sujungimus (pvz Memory Channel) Tokie sujungimai įgalina mazgus bendrauti

tarpusavyje nepriklausomai nuo išorinio tinklo tipo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 19: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

18

10 pav Klasterio ryšio sparta priklausomai nuo mazgų sujungimo technologijos

Šiuo metu daugelio universitetų ir įstaigų kompiuteriai yra sujungti vietiniu tinklu Tokį

kompiuterių klasterį galime naudoti kaip MIMD tipo lygiagretųjį kompiuterį Tam tik reikia turėti

programinę įrangą leidžiančią valdyti visus kompiuterius bei siųsti ir gauti pranešimus

Virtualieji lygiagretieji kompiuteriai (klasteriai gridai) yra labai patrauklūs vartotojams kadangi

toks kompiuteris sukuriamas iš turimų darbo stočių arba asmeninių kompiuterių ir nebereikia didelių

papildomų investicijų

Greitasis tinklas Myrinet 2000 yra naudojamas duomenimis pasikeisti lygiagrečiųjų algoritmų

vykdymo metu o Fast Ethesnet tinklą sistema naudoja informacijai persiųsti į duomenų serverius ir

klasterio tarnybinėms funkcijoms vykdyti

Vilniaus Gedimino technikos universiteto klasteris Vilkas ndash tai galingiausias šiuo metu

Lietuvoje lygiagretusis kompiuteris pasiekiantis 1485 Gflops skaičiavimų greitį (LINPACK testas)

Klasterio VILKAS konfigūracija

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 20: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

19

Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio

skaičiavimo centruose

sect C3 - klasterio administravimo paketas

sect SIS - OS tinklinio instaliavimo paketas

sect MPICH - pranešimų siuntimo biblioteka

sect LAM-MPI - pranešimų siuntimo biblioteka

sect OpenSSH - saugumo paketas

sect OpenPBS - užduočių administravimo sistema

sect Maui PBS - užduočių planuotojas

sect PVM - lygiagreti virtuali mašina (programinis paketas)

sect Ganglia - klasterio monitoringo sistema

Kauno technologijos universiteto klasteris - KTU-BG-GLITE - paskirstytų skaičiavimų HPC

tipo klasteris šiuo metu palaikantis BalticGrid VO Klasteryje suinstaliuota gLite v30 middleware - Grid

programinė įranga

46 PC konfigūracija 4 PC konfigūracija

CPU

RAM

HDD

LAN

OS

PIII 700 MHz

128 MB

20 GB

100 Mbps

SL Linux 305

PIII 600 MHz

256 MB

3 GB

100 Mbps

SL Linux 305

Sudarydami lygiagrečiuosius algoritmus turime atsižvelgti į dvi svarbias kompiuterių klasterių

savybes Pirma lokaliojo tinklo (juo labiau ndash Ethernet tinklo) greitis yra daug mažesnis už duomenų

perdavimo greitį MIMD tipo paskirstytosios atminties kompiuteriuose Todėl algoritmų kuriuose tenka

dažnai keistis duomenimis gali būti nedidelis kai juos realizuojame vistualiuoju lygiagrečiuoju

kompiuteriu Antra kompiuterio klasterį gali sudaryti skirtingo tipo kompiuteriai Be to kai kurie iš

kompiuterių patys gali turėti kelis procesorius Todėl visuose algoritmuose turi būti numatyta galimybė

įvertinti procesorių heterogeniškumą Pažymėtina kad procesorių heterogeniškumas atsiranda ir todėl

kad kai kurie klasterio kompiuteriai tuo pačiu metu yra naudojami kelių vartotojų ir jų apkrova svyruoja

net ir tada kai visi kompiuteriai yra vienodi

Paskirstytųjų skaičiavimų superkompiuterių ir klasterių lyginamoji analizė pagal įvairius požymius

pateikta 5 lentelėje

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 21: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

20

5 lentelė Paskirstytų skaičiavimų superkompiuterių klasterių lyginamoji analizė

Rodiklis Paskirstyti skaičiavimai Superkompiuteriai Klasteriai

Kaina lt1 superkompiuterio kainos žymiai pigiau nei klasteris

Didelės pradinės išlaidos Nemažos pradinės išlaidos

Plečiamumas Neribotas Jokio RibotasTechn įrangos poreikiai

Minimalūs ndash galima panaudoti turimus resursus

Speciali įranga patalpos aušinimas maitinimas

Daug tam skirtų kompiuterių aušinimas maitinimas

Administravimoporeikiai

Vienas IT specialistas gali tvarkytis per centrinį valdymo serverį

Dideli poreikiai Dideli poreikiai

Mazgai Apribojimų nėra Specialūs SpecialūsKlaidos rizika Maža Aukšta AukštaAptarnavimas Paprastas ndash priklauso nuo

sugedusio mazgoBrangus Atsarginės dalys laiko nuostoliai sistemos administravimas

Brangus Atsarginės dalys laiko nuostoliai sistemos administravimas

ldquoSenėjimasrdquo Mažas ndash lengvai atnaujinama PĮ PC ndash taip pat

Spartus Spartus

Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje

paskatino metaskaičiavimų (metacomputing) idėjos atsiradimą Pradžioje buvo siūloma komunikacinėmis

priemonėmis apjungti galingų superkompiuterinių centrų resursus

Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo

kompiuterius naudoti kaip vieningus skaičiavimo resursus taip potencialiam vartotojui suteikiant

praktiškai neribotus skaičiavimo pajėgumus

Pirmosios metaskaičiavimus realizuojančios sistemos ndash Globus Legion ndash parodė kad programinis

paskirstytųjų skaičiavimų palaikymas reikalauja išspręsti nemaža problemų ndash ryšių saugos užduočių

valdymo prieigos prie duomenų informacinio aprūpinimo Jos analogiškos tradicinėse operacinėse

sistemose sprendžiamoms problemoms tačiau turi būti sprendžiamos atviros nelabai patikimos ir

paskirstytos globalios terpės sąlygomis Taip nuo metaskaičiavimų buvo pereita prie grido idėjos

Gridas ndash paskirstytų procesorių pajėgumų ir paskirstytų informacijos laikymo sistemų panaudojimo

metodas išpopuliarėjęs dėl schemų leidžiančių panaudoti neužimtus skaičiavimo resursus išdėstytus

visame pasaulyje Gridas ndash bet kurios globalios paskirstytų skaičiavimų sistemos infrastruktūra tinkama

plačiam taikomųjų uždavinių ratui ndash elektroninio verslo paskirstytosios gamybos duomenų analizės

aukšto našumo informacijos apdorojimo paskirstytųjų superskaičiavimų

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 22: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

21

Skirtingai nuo metaskaičiavimų daugeliui taikomųjų uždavinių nebūtinos dideliu našumu ir

pralaidumu pasižyminčios komunikacijos tam galima naudoti netgi tradicinį internetą

Gridas panašus į elektros tinklus tereikia prie jų prisijungti visiškai nesirūpinant kur gaminama

elektors energija

Grido programinės įrangos tarptautiniu standartu yra Globus Pagrindinis uždavinys gridlsquoe ndash

užtikrinti prieigą prie resursų Kadangi gride resursai paskirstyti šį uždavinį sprendžia speciali

programinė įranga vadinama tarnybomis Kiekviename resurse realizuojamas tam tikras tarnybų rinkinys

kuris turi tenkinti dvi struktūrines sąlygas

1 Kiekvienas tarnybų tipas privalo turėti standartinį prieigos protokolą pagal kurį realizuojama

kliento sąsaja

2Tarnybų rinkiniai skirtinguose resursuose turi būti suderinti Todėl atsižvelgiant į jų

semantiką rinkiniai tam tikru mastu unifikuojami jų konfigūravimas remiasi bendromis taisyklėmis

reglamentais ir organizaciniais sutarimais

11 pav Grid topologijos imitacija

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 23: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

22

LitGRID - Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (Lietuvos valstybinio mokslo ir

studijų fondo projektas)

12 pav Lietuvos lygiagrečiųjų ir paskirstytų skaičiavimų tinklas (LitGRID)

LitGrid pasiekti rodikliai

bull institucijų (partnerių) skaičius ndash 13 (VU KTU VGTU VDU KU ŠU - universitetai FI MII PRI

TFAI - institutai Alytaus Marijampolės Panevėžio - kolegijos) LitGrid infrastruktūra taip pat

naudojosi Lietuvos energetikos institutas Biochemijos institutas VU fizikos fakultetas kt

bull mokslininkų ir specialistų skaičius ndash 93

bull taikomųjų tyrimų krypčių skaičius ndash 23

bull taikomųjų uždavinių skaičius ndash 44

bull procesorių skaičius - 495

bull norm val skaičius ndash apie 900 000 val

bull mokslo projektų programų slėnių aptarnavimas suteikiant skaičiavimų resursus ir paslaugas

bull numatomi grid technologijų pristatymai verslui

bull įjungimas į European Grid Initiative

LitGRID tinkliniai ryšiai

bull LitGRID resursai apjungti panaudojant Lietuvos mokslo ir studijų institucijų kompiuterių tinklą LitNET

infrastruktūra kuri žiedu apjungia 5 didžiuosius Lietuvos miestus

bull Efektyviam ryšiui tarp skirtingų Lietuvos universitetų klasterių užtikrinti buvo numatyta didinti ryšio

linijų pralaidumą

bull Daugelio universitetų klasteriai tame tarpe ir KTU pajungti į LitNET tinklą 100 Mbps kanalu

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 24: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

23

bull Sujungimui naudojamas vienas tarpinis komutatorius iki centrinio KTU-Litnet maršrutizatoriaus

24 Vektoriniai procesoriai

Lygiagretieji kompiuteriai realizuoja kolektyvinio darbo privalumus Kitas labai efektyvus darbo

organizavimo būdas yra konvejeris Visos aritmetinės operacijos yra išskaidomos į kelis vienodos

trukmės etapus Pavyzdžiui skaičiuodami dviejų skaičių pma 2sdot= ir qnb 2sdot= sumą ba + atliekame

tokius veiksmus (13 pav)

1) palyginame dviejų skaičių eksponentes ty apskaičiuojame skirtumą qp minus

2) suvienodiname dviejų skaičių eksponentes ty įvykdome postūmio veiksmą

dvejetainėje aritmetikoje

3) sudedame skaičius

4) normuojame gautąjį rezultatą ir užrašome sumą standartine forma

13 pav Dviejų skaičių sumos skaičiavimo etapai

Standartiniame procesoriuje iš pradžių visas keturias operacijas atliekame su pirmąja skaičių pora

vėliau skaičiuojame kitų dviejų skaičių sumą ir taip toliau Kiekvienas naujas rezultatas gaunamas po

keturių darbo taktų

Konvejerinis skaičiavimų proceso organizavimas Skaičiuosime sumas

21 Nibac iii K=+=

Visus aritmetinius veiksmus galime atlikti ir konvejeriniu būdu Matėme kad sumavimo įrenginys

sudarytas iš keturių sekcijų kiekviena jų gali dirbti savarankiškai Skaičiavimu schema pavaizduota 14

pav

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 25: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

24

14 pav Konvejerinis dviejų skaičių sumos skaičiavimas

Pirmajame takte naudojame tik pirmąją sekciją kurioje lyginame skaičių 1a ir 1b eksponentes

Antrajame takte antrojoje konvejerio sekcijoje darome skaičių 1a ir 1b postūmio veiksmą o pirmojoje

sekcijoje lyginame skaičių 2a ir 2b eksponentes Tai tęsdami ketvirtajame takte normuojame skaičių 1a

ir 1b sumą ir gauname pirmąjį rezultatą Taigi sumos 11 ba + skaičiavimas vėl užtruko keturis taktus

Tačiau baigę ketvirtąjį taktą jau įvykdėme skaičių poros 2a ir 2b trečiąjį sumavimo etapą skaičių poros

3a ir 3b ndash antrąjį žingsnį ir skaičių poros 4a ir 4b pirmąjį žingsnį Todėl penktajame takte

apskaičiuojame 22 ba + sumą šeštajame ndash 33 ba + sumą ir tt Dviejų skičių sumavimo operacija

pagreitėja keturis kartus

Norėdami išnaudoti konvejerio ypatybes turime skaičiavimus organizuoti taip kad iš eilės reikėtų

atlikti daug sumavimo veiksmų Todėl tokie procesoriai yra labai efektyvūs kai turime sudėti X ir Y

vektorius Konvejeriniai procesoriai dažniausiai vadinami vektoriniais procesoriais Populiarius

komercinius vektorinius kompiuterius gamina Cray ir Fujitsu kompanijos Be to tokie procesoriai

naudojami konstruojant MIMD tipo lygiagrečiuosius kompiuterius

Vektorinio procesoriaus duomenys iš pagrindinės atminties persiunčiami į daug greitesnę registrinę

atmintį Procesoriuje yra keli registrinės atminties blokai Iš registrinės atminties duomenys yra siunčiami

į konvejerinį skaičiavimo įrenginį Kiekvienas skaičiavimo įrenginys atlieka vieną iš pagrindinių

aritmetinių operacijų ndash sudėties daugybos ar dalybos

Norėdami pagreitinti skaičiavimus naudojame kelis to paties tipo skaičiavimo įrenginius Be to

rezultatai iš vieno įrenginio aplenkiant registrinę atmintį gali būti iš karto siunčiami į kitą skaičiavimo

įrenginį Tada pailgėja konvejerio ilgis ir atitinkamai padidėja skaičiavimo greitis Šis būdas vadinamas

susiejimu

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 26: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

25

Vektorinių procesorių efektyvumas Vektorinio procesoriaus didžiausias skaičiavimo greitis

pasiekiamas tada kai konvejeris yra visiškai užpildytas Kadangi duomenys į skaičiavimo įrenginį

perduodami iš registrinės atminties reikia įskaičiuoti kopijavimo iš pagrindinės atminties į registrinę

atmintį sąnaudas Vektorinės operacijos vykdymo laiką vertiname formule

NK

tNT sβ

+=)(

- čia st - vektorinio konvejerio rengimo darbui laikas β yra laikas per kurį atliekama viena aritmetinė

operacija įprastiniu procesoriumi K ndash konvejerio ilgis N ndash vektoriaus ilgis

Vektorinio procesoriaus spartą visiškai išnaudojame tik tada kai vektoriai yra gana ilgi

Lygiagrečiųjų ir konvejerinių kompiuterių palyginimas Konvejeris leidžia smarkiai pagreitinti

skaičiavimus Lygiagretieji kompiuteriai irgi siekiai to paties tikslo Suformuluosime esminius šių

technologijų galimybių skirtumus

bull Vektorinio procesoriaus spartinimo koeficientas negali būti didesnis už konvejerio ilgį (ty iki 10-

20 kartų)

Spartinimo efektas būdingas tik algoritmams realizuojamiems naudojant didelės dimensijos

vektorius

Algoritmams realizuoti nereikia kurti naujų programavimo priemonių jų optimizavimą

dažniausiai automatiškai atlieka kompiliatorius

bull Lygiagrečiojo kompiuterio spartinimo koeficientas ribojamas tik procesorių skaičiumi

šiuolaikiniuose lygiagrečiuosiuose kompiuteriuose yra iki kelių dešimčių tūkstančių procesorių

bull Efektyvūs lygiagretieji algoritmai gali būti sudaryti labai įvairiems uždaviniams spręsti

bull Lygiagretiesiems algoritmams sudaryti reikia specialių žinių ir programavimo priemonių

Automatiškai nuosekliuosius algoritmus pertvarkyti į lygiagrečiuosius galima tik naudojant

nedidelę algoritmų klasę Ši kryptis veiksmingiau plėtojama su bendrosios atminties

lygiagrečiaisiais kompiuteriais

3 LYGIAGRETŪS ALGORITMAI

31 Lygiagrečiųjų algoritmų ypatumai

311 Lygiagrečiųjų algoritmų sudėtingumo teorija

Algoritmas yra tiksliai apibrėžta skaičiavimo procedūra kuria imdami pradinius duomenis ir atlikę

baigtinį skaičių operacijų gauname rezultatus Skaičiavimo procedūrą galime suprasti kaip kompiuterio

programą užrašytą viena iš programavimo kalbų

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 27: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

26

Kiekvieno uždavinio sąlygoje pateikiama ir tam tikrų duomenų Uždavinio duomenų dydžiu

vadiname pradinių duomenų skaičių Pavyzdžiui vektoriaus X dydis yra lygus jo elementų skaičiui n

matricos A turinčios m eilučių ir n stulpelių dydis yra mn

Uždavinį galime spręsti įvairiais algoritmais Algoritmo sudėtingumas yra lygus to algoritmo

bazinių operacijų skaičiui Taip apibrėžtas algoritmo sudėtingumas nepriklauso nuo konkretaus

kompiuterio ypatybių

Nagrinėdami bet kokį algoritmą įvertiname atliekamų aritmetinių veiksmų skaičių arba bent

svarbiausią jų dalį Tada remdamiesi šia informacija tiksliai prognozuojame algoritmo realizacijos laiką

Pavyzdžiui žinome kad Gauso algoritmu spręsdami N tiesinių lygčių sistemą atliekame )(32 23 NON +

aritmetinių veiksmų Remdamiesi šia formule įvertiname jog spręsdami dvigubai didesnę 2N tiesinių

lygčių sistemą sugaišime aštuonis kartus daugiau laiko ir šis teiginys yra teisingas kiekvienam

kompiuteriui Be to jei sudarysime kitą algoritmą kurio aritmetinių veiksmų įvertis yra )(21 23 NON + tai

galime numatyti jog gana didelę tiesinių lygčių sistemą šiuo algoritmu išspręsime 34 karto greičiau nei

Gauso algoritmu

Lygiagrečiųjų algoritmų analizė yra sudėtingesnė nes tenka įvertinti ir kompiuterio kuriuo

skaičiuojame ypatybes Tačiau lygiagrečiųjų algoritmų teorinė analizė yra netgi svarbesnė nes

eksperimentuoti su tokiais kompiuteriais daug brangiau

Pažymėkime pT laiką per kurį duotąjį uždavinį sprendžiame lygiagrečiuoju algoritmu naudodami

p procesorių Tegul 0T yra laikas per kurį tą patį uždavinį išsprendžiame greičiausiu nuosekliuoju

algoritmu Pažymėtina kad 1T gali būti ir didesnis už 0T nes geriausiąjį nuoseklųjį algoritmą ne visada

pavyksta realizuoti lygiagrečiuoju kompiuteriu

Čia klasikinis pavyzdys galėtų būti Perkelties metodo algoritmas kur reikia spręsti triįstrižainę n

tiesinių lygčių sistemą

1 1 1 2 1

1 1

1

23 1

j j j j j j j

n n n n n

c x b x f

a x c x b x f j n

a x c x fminus +

minus

+ = + + = = minus + =

K

Perkelties metodo formulės yra nesunkiai išvedamos iš Gauso metodo algoritmo įvertinant

specialią šios tiesinių lygčių sistemos struktūrą Nežinomąjį jx išreiškiame rekurentine formule

1 12 1j j j jx x j nα β+= + = minusK

1 11 1

1 1

b fc c

α β= minus = 1

1

23 1jj j j

bj n

c aα

α minus

= minus = minus+

K 1

1

j j jj

j j j

f a

c a

ββ

αminus

minus

minus=

+

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 28: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

27

Tada iš tiesinės lygčių sistemos paskutinės lygties randame

1

1

n n nn

n n n

f ax

c aβα

minus

minus

minus=

+

o vėliau žinodami nx kitus nežinomuosius nuosekliai apskaičiuojame iš minėtos grįžtamosios

formulės 1 12 1j j j jx x j nα β+= + = minusK

Realizuodami perkelties metodą atliekame 8n aritmetinius veiksmus Tačiau nesunku pastebėti

kad perkelties metodo realizavimas yra nuoseklus todėl net ir naudodami daugiau procesorių negalime

pagreitinti skaičiavimų

R Čiegio vadovėlyje ldquoLygiegretieji algoritmairdquo yra išnagrinėtos perkelties metodo modifikacijos

kuriomis tiesinių lygčių sistemą su triįstrižaine matrica išsprendžiame atlikę 17n aritmetinių veiksmų

tačiau naujuosius algoritmus galime efektyviai realizuoti lygiagrečiaisiais kompiuteriais Taigi

sprendžiant triįstrižaines tiesinių lygčių sistemas yra teisinga lygybė

0

1

8

17TT=

312 Spartinimo ir efektyvumo koeficientai

Dabar apibrėšime du svarbius dydžius naudojamus lygiagretiesiems algoritmams analizuoti

Lygiagrečiojo algoritmo spartinimo koeficientu vadinamas santykis

pp T

TS 0=

įvertinantis pagreitėjimą kurį pasiekiame spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami p procesorių Būtent ši charakteristika yra svarbi daugeliui lygiagrečiųjų kompiuterių

vartotojų Idealiu atveju tikimės kad didėjant procesorių skaičiui p spartinimo koeficientas pS didės

tiesiškai pS p =

Tačiau realiai eksperimentuojant dažniausiai matomas spartinimo koeficiento kitimas

pavaizduotas 15 paveiksle

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 29: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

28

15 pav Lygiagrečiojo algoritmo spartinimo koeficiento grafikas

Kol procesorių nėra daug funkcija pS nelabai skiriasi nuo tiesinės funkcijos tačiau didėjant p ji

auga lėčiau funkcijos grafikas pasieka asimptotinį režimą ndash tolesnis procesorių skaičius didinamas

nedaug sumažina uždavinio sprendimo laiką

Kitas svarbus lygiagrečiųjų algoritmų rodiklis yra algoritmo efektyvumo koeficientas parodantis

kokią dalį procesorių pajėgumo pasitelkėme spręsdami uždavinį duotuoju algoritmu

p

SE p

p =

Pavyzdys Skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas Apskaičiuojame dviejų

vektorių X ir Y skaliarinę sandaugą

summinus

=

=1

0

N

jjj yxS

Tarkime kad dviejų skaičių sandaugos ir sumos skaičiavimas trunka vieną laiko vienetą Tada

vienu procesoriumi dviejų vektorių skaliarinę sandaugą apskaičiuojame per 121 minus= NT laiko vienetų

Tarkime kad kN 2= ir turime Np = procesorių Pažymėkime dviejų komponenčių sandaugą

iii yxs = Tada vektorių skaliarinę sandaugą skaičiuojame lygiagrečiuoju algoritmu kurio realizavimas

yra pavaizduotas 16 paveiksle

16 pav Lygiagretusis skaliarinės sandaugos skaičiavimo algoritmas

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 30: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

29

Įvertiname lygiagrečiojo algoritmo vykdymo laiką Procesorius numeruokime kaip tai įprasta

lygiagrečiųjų algoritmų teorijoje ndash nuo 0 iki p-1 Pirmuoju žingsniu visi procesoriai vienu metu

apskaičiuoja jj yx sandaugas Tada nelyginiai procesoriai 12 +j nusiunčia savo turimą sandaugą greta

esantiems procesoriams 12

102 minus=p

jj K ir baigia darbą Procesoriai kurių numeriai yra lyginiai

sumuoja turimą tarpinę sumą su atsiųstu rezultatu Toliau šis procesas kartojamas procesoriai 24 +j

siunčia informaciją procesoriams j4 ir baigia darbą procesoriai j4 sumuoja gautą rezultatą su turima

tarpine suma Atlikus 1+k žingsnį nulinis procesorius apskaičiuoja reikiamą skaliarinės sandaugos

reikšmę Tarkime kad komunikacijos sąnaudos yra nereikšmingos tada

1log += NTN

Kadangi aritmetinės sumos reikšmė nepriklauso nuo veiksmų tvarkos tai lygiagrečiojo algoritmo

vykdymo sąnaudos sutampa su geriausio nuosekliojo algoritmo vykdymo sąnaudomis ty 10 TT = Taigi

lygiagrečiojo algoritmo spartinimo koeficientas yra

1log121

+minus

==N

NTT

SN

N o algoritmo efektyvumas yra 1log

12+

minus==

NN

NS

E NN

Didinant N gauname tokius asimptotinius lygiagrečiojo skaliarinės sandaugos algoritmo spartinimo

ir efektyvumo koeficientų įverčius

0limlim =infin=rarrinfinrarrinfin NNNN

ES

Šiuo algoritmu siekėme greičiausiai suskaičiuoti skaliarinę sandaugą tačiau pasitelktų procesorių

naudojimas buvo labai neveiksmingas ndash po pirmojo algoritmo žingsnio lygiai pusė procesorių baigė

darbą po antrojo žingsnio liko dirbti tik ketvirtadalis procesorių ir taip toliau

Sudarytasis algoritmas gali būti naudojamas ir daug veiksmingiau jei pasitelktume tik mN

p =

procesorių

Kaip pavyzdį imkime 1024 32N p= = tada pirmajame žingsnyje visi procesoriai apskaičiuoja

lokalias 32m = narių sumas o tai užtrunka 63 laiko vienetus Paskui vėl vykdomas anksčiau aprašytas

algoritmas Jis užtrunka 5 laiko vienetus Todėl gausime tokius algoritmo spartinimo ir efektyvumo

koeficientus

32

2047301

63 5S = =

+ ir 32 0941E =

O tokio algoritmo vykdymo laikas yra 2 log 1p

NT p

p= + minus

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 31: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

30

313 Mažiausios vykdymo trukmės algoritmai

Dviejų vektorių skaliarinės sandaugos skaičiavimo lygiagretusis algoritmas yra gana paprastas Jį

sudarydami naudojame užduočių skaidymo pusiau metodą Jį gerai iliustruoja algoritmo schema pateikta

18 pav Paskutiniu žingsniu sudedame du skaičius lygius pirmosios ir antrosios vektorių dalių

skaliarinėms sandaugoms Šios sandaugos vėl skaičiuojamos tuo pačiu vektoriaus dalijimo pusiau

algoritmu

Sudarydami algoritmą naudojome prielaidą kad lygiagretusis kompiuteris turi be galo daug

procesorių procesoriai gali tiesiogiai skaityti ir modifikuoti visus duomenis ir šių veiksmų sąnaudos yra

nykstamai mažos Tokios teorinės prielaidos leidžia išsiaiškinti lygiagrečiųjų algoritmų potencines

galimybes Realiai skaičiuojant tenka įvertinti lygiagrečiųjų kompiuterių procesorių skaičiaus ribojimus ir

komunikavimo sąnaudas

Taip pat nesunkiai galime sudaryti kai kurių kitų uždavinių sprendimo lygiagrečiuosius algoritmus

Tačiau taip yra ne visada

Raskime skaičių seką njx j 21 K= apibrėžtą tiesinėmis rekurenčiosiomis lygtimis

ikiikiiiii bxaxaxax ++++= minusminusminus K2211 (1)

Kai žinomi pradiniai sekos nariai 110 +minusminus kxxx K Iš formulės matome kad sekos narius reikia

skaičiuoti tik nuosekliai Imkime (k + 1) procesorių ir naudokime lygiagretųjį skaliarinės sandaugos

skaičiavimo algoritmą tada vieno sekos nario skaičiavimo trukmė ( 1)1log( ++k ) o visu n sekos narių ndash

)1)1(log(1 ++=+ knTk Taigi skaičiavimo trukmė yra proporcinga sekos narių skaičiui o veiksmingai

naudojamų procesorių skaičius proporcingas sekos rekursijos gyliui Kadangi uždavinio dydis W = 2n tai

lygiagrečiojo algoritmo spartinimo koeficientas yra mažas

Imdami )( 2kΘ procesorių galime iš anksto suskaičiuoti k naujų sekos narių tarpines sandaugas ir

sumas priklausančias nuo jau žinomų sekos narių Tada lygiagrečiojo algoritmo vykdymo trukmė yra

)2( nΘ tačiau ir šiuo atveju ji proporcinga sekos ilgiui

Užrašykime rekurenčiąją sąsają (1) matricine forma

=

minus

minus

minusminus

+minus

minus

110000

00100

00001

1

2

1121

1

1

ki

i

iiikkiii

ki

i

i

x

x

xbaaaa

x

x

x

K

K

K

KKKKKK

K

K

K

Pažymėkime matricą iA o kairėje lygybės pusėje esantį vektorių ndash iX Tada turime tokias lygybes

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 32: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

31

niXAAAXAX iiiii lele== minusminus 10111 L

Pirmiausia pastebime kad visus vektorius nX knX minus knX 2minus 1+kX galima skaičiuoti vienu metu

Ilgiausiai teks skaičiuoti vektorių nX

01011 XQXAAAX nnnn == minus L

Matricų sandaugas vėl skaičiuojame rekurenčiuoju dalijimo pusiau metodu

12121 nnnn QQQ +=

Jei abi matricos 1212 nnn QQ + jau žinomos tai 1nQ skaičiavimo trukmė yra )(log kΘ Kartodami šį

algoritmą )(log nΘ kartų apskaičiuojame matricą 1nQ Taigi lygiagrečiojo matricų dauginimo algoritmo

sudėtingumas )log(log knΘ

314 Amdahlo dėsnis

Visada svarbu žinoti kaip pagreitės algoritmo realizavimas kai uždavinį spręsime naudodami

daugiau procesorių Susipažinsime su tvirtinimu kuris pateikia tokio pagreitėjimo viršutinį rėžį

1 teorema (Amdahlo dėsnis 1964) Tarkime kad r yra ta algoritmo dalis kurią galima

apskaičiuoti lygiagrečiai o s = 1 mdash r yra likusioji algoritmo dalis kurią galime vykdyti tik nuosekliai

Tada algoritmo spartinimo koeficientas yra įvertinamas nelygybe

prs

S p 1

+le (2)

Formulė (2) paaiškina 17 brėžinyje pateiktą spartinimo koeficiento pS grafiką Iš pradžių daugėjant

procesorių skaičiui beveik tiesiškai proporcingai sutrumpėja uždavinio sprendimo laikas pT tačiau kai tik

lygiagrečioji algoritmo sąnaudų dalis r susilygina su nuosekliosios dalies sąnaudomis t y sprasymp toliau

daugėjant procesorių algoritmas jau mažai pagreitėja

Amdahlo dėsnio išvada yra gana pesimistiška kai uždavinį norime spręsti pasitelkdami daug

procesorių Tačiau šį dėsnį įrodome tarę jog uždavinio skaičiavimo apimtis yra fiksuota Daugeliui

uždavinių būdinga kad didėjant uždaviniui nuosekliosios algoritmo dalies skaičiavimų apimtis didėja

lėčiau už lygiagrečiosios dalies apimtį Pažymėkime n uždavinio dydį apibūdinantį parametrą

Nagrinėkime abstraktų algoritmą kurio nuoseklioji ir lygiagrečioji dalys yra atitinkamai lygios sQ ir rQ

aritmetinių veiksmų Tarkime kad didėjant uždavinio dydžiui yra teisingi tokie įverčiai

1 +== αα nqQnqQ rrss (3)

o koeficientai sq rq nepriklauso nuo uždavinio dydžio

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 33: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

32

2 teorema (Apibendrintasis Amdahlo dėsnis) Tarkime kad algoritmo lygiagrečioji ir nuoseklioji

dalys tenkina įverius (3) Tada pakankamai dideliems n lygiagrečiojo algoritmo spartinimo koeficientas

tenkina sąlygą

pS pn=

rarrinfinlim

Taigi didelio dydžio uždavinių spartinimo koeficientas yra artimas procesorių skaičiui p Todėl

gauname svarbią išvadą kad lygiagretieji algoritmai yra ypač efektyvūs kai imdami daugiau procesorių

sprendžiame vis didesnio dydžio uždavinius Lygiagretieji algoritmai gali būti ne tokie efektyvūs kai

norime tą patį uždavinį išspręsti greičiau

315 Heterogeninių kompiuterių efektyvumo analizė

Ankstesniuose skirsniuose nagrinėjome lygiagrečiuosius kompiuterius sudarytus iš vienodų

procesorių Tačiau šiuo metu labai populiarūs kompiuterių klasteriai kurie jungia įvairius asmeninius

kompiuterius ir darbo stotis Procesorių skaičiavimo sparta gali skirtis ir tada kai klasterį sudaro vienodi

kompiuteriai bet kai kurie iš jų vienu metu naudojami kelių vartotojų uždaviniams spręsti

Tarkime kad kompiuterį sudaro p procesorių kurių didžiausia skaičiavimo sparta yra

110 minuspvvv K Taigi pikinė (didžiausia teorinė) viso kompiuterio sparta yra

summinus

=

=1

0

p

iivV

Vykdydami lygiagretųjį algoritmą procesoriai išnaudoja tik dalį savo pajėgumų Pažymėkime

1110 minus=lele piei K

procesorių apkrovas Lygiagrečiojo kompiuterio realioji skaičiavimo sparta yra lygi svertinei visų

procesorių pajėgumų sumai summinus

=

=1

0

p

iiiveR

Apibrėžkime santykinį procesoriaus našumą 111

0

minus==

summinus

=

piv

vp

ii

ii Kα

Šie dydžiai yra normuoti nes galioja lygybė 011

1

ge=summinus

=i

p

ii αα

Tada viso kompiuterio apkrova

summinus

=

=1

1

p

iiieE α

Aišku kad galioja nelygybės 10 lele E ir viso kompiuterio apkrova lygi vienetui tik tada kai

kiekvieno procesoriaus apkrova lygi vienetui

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 34: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

33

Nesunku įsitikinti kad jei visi kompiuterio procesoriai ir jų apkrovos yra vienodi tai viso

kompiuterio apkrova sutampa su anksčiau apibrėžtu lygiagrečiojo algoritmo efektyvumu Pažymėkime W

uždavinio dydį Tada teisingos tokios lygybės

0

00 RW

TvW

TpvV p ===

todėl

ppp

EpTT

VTW

VR

E ==== 0

Lygiagrečiojo algoritmo realizacijos heterogeniniu kompiuteriu spartinimo koeficientą galima

apibrėžti labai įvairiai Mes naudosime tokį apibrėžimą

ipi

vR

Slele

=0max

Tada lygiagrečiojo algoritmo spartinimo koeficientas yra ne didesnis už procesorių skaičių p Jei

visi procesoriai yra vienodi tai naujasis apibrėžimas sutampa su anksčiau apibrėžtu lygiagrečiojo

algoritmo spartinimo koeficientu pS

32 Lygiagrečiojo algoritmo išplečiamumas

Kaip parodėme ankstesniame skirsnyje lygiagrečiųjų algoritmų efektyvumas mažėja kai didiname

procesorių skaičių Vienoje iš Amdahlo dėsnio išvadų tvirtinama kad algoritmo efektyvumas didėja kai

fiksavę procesorių skaičių sprendžiame vis sunkesnius uždavinius Todėl apibrėšime dar vieną dydį

kuris parodo kokiu greičiu turi didėti uždavinio dydis kad taip pat efektyviai naudotume vis daugiau

procesorių Ši algoritmo ypatybė vadinama algoritmo išplečiamumu (angl scalability) Algoritmas yra

lengviau išplečiamas tada kai lėčiau reikia didinti uždavinį daugėjant procesorių Parodysime kaip ši

ypatybė įvertinama kiekybiškai

Uždavinio dydis Pirmiausia patikslinsime uždavinio dydžio apibrėžimą Jį pažymėsime W ir jis

lygus bazinių operacijų atliekamų šiame algoritme skaičiui Skirtingų uždavinių bazinės operacijos gali

buti skirtingos Pavyzdžiui daugindami dvi ntimesn dydžio matricas atliekame n3 daugybos ir sumavimo

operacijų Rūšiavimo algoritmuose bazinė operacija yra dviejų skaičių lyginimas ir jų keitimas vietomis

Taip apibrėžus uždavinio dydį W padidinimas du kartus vadinasi ir dvigubai daugiau aritmetinių

veiksmų Jeigu dviejų matricų daugybos veiksmo sudėtingumą sietume su matricos dydžiu tai du kartus

didesnė matrica reikalautų aštuonis kartus daugiau aritmetinių veiksmų Nagrinėdami dviejų matricų

sumavimo algoritmą kurio sudėtingumas yra W = n2 gauname jog padvigubinus matricos dydį

algoritmo sudėtingumas padidėja keturis kartus

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 35: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

34

Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis

už vienetą Taip yra dėl to kad procesoriai turi persiųsti duomenis vienas kitam ir retai pavyksta taip

padalyti užduotis kad sprendžiant vis uždavinį visi procesoriai atliktų naudingus skaičiavimus

Dabar apibrėšime matą įvertinantį šias papildomas lygiagrečiojo algoritmo sąnaudas Tarsime kad

laiko matavimo vienetu yra vienos elementarios algoritmo operacijos atlikimo trukmė Tada greičiausio

nuosekliojo algoritmo skaičiavimo trukmė sutampa su algoritmo sudėtingumu

WT =0

Lygiagrečiojo algoritmo papildomomis sąnaudomis (angl total overhead) vadinsime visų

procesorių bendro skaičiavimo laiko ir greičiausio nuosekliojo algoritmo skaičiavimo laiko skirtumą

WpTK pp minus=

Kadangi lygiagrečiojo algoritmo papildomų sąnaudų dydis priklauso nuo procesorių skaičiaus p ir

uždavinio dydžio W todėl dažnai naudosime žymenį )( pWK p

Lygiagrečiojo algoritmo efektyvumo koeficientas pE gali būti išreiškiamas tokia formule

)(1

1WpWKpT

Wp

SE

pp

pp +

===

Daugėjant procesorių lygiagrečiojo algoritmo papildomos sąnaudos irgi didėja Iš pastarosios

funkcijos galima rasti uždavinio dydžio W priklausomybę nuo procesorių skaičiaus

)( pfW = (4)

garantuojančią norimą lygiagrečiojo algoritmo efektyvumą Tokią funkciją vadiname izoefektyvumo

funkcija Ji priklauso ir nuo sprendžiamo uždavinio ir nuo lygiagrečiojo kompiuterio charakteristikų Kuo

šios funkcijos augimo greitis yra mažesnis tuo lygiagretusis algoritmas yra lengviau išplečiamas ty

mažiau reikia sunkinti uždavinį kad efektyviai panaudotume daugiau procesorių

Tačiau ne visada pavyksta nesunkiai išspręsti lygtį iš kurios randame izoefektyvumo funkciją Tada

dažniausiai nagrinėjame atskirų papildomų sąnaudų narių įtaką ir išrenkame tą funkciją kuri apibrėžia

greičiausią izoefektyvumo funkcijos didėjimą Tokia metodika leidžia įvertinti tik asimptotinį

izoefektyvumo funkcijos didėjimo greitį Kai procesorių skaičius nėra didelis ši funkcija gali esmingai

priklausyti ir nuo žemesnės eilės narių

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 36: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

35

Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai

naudojamas dar vienas paprastas kriterijus Algoritmo sąnaudos yra optimalios jei bendras visų

procesorių skaičiavimo laikas yra proporcingas uždavinio dyžiui ty

)(WpTp Θ= (5)

Priminsime kad skaičiavimo laiko matavimo vienetu pasirinkome algoritmo bazinės operacijos

vykdymo trukmę Nesunku parodyti kad šis reikalavimas yra artimas lygiagrečiojo algoritmo

išplečiamumo savybei Iš lygybės (5) gauname tokius sąryšius

))(()()(

)()(

pWKWWOpWK

WpWKW

pp

p

Ω==

Θ=+ (6)

Paskutinės dvi lygybės reiškia kad papildomosios algoritmo sąnaudos auga lėčiau už uždavinio

dydį W padaugintą iš konstantos Pažymėtina kad lygtys (6) tik konstantos tikslumu skiriasi nuo

izoefektyvumo funkciją apibrėžiančios lygties

Nagrinedami Amdahlo dėsnį pabrėžėme kad lygiagretieji skaičiavimai yra naudojami dviem

tikslams duotąjį uždavinį išspręsti kuo greičiau ir išspręsti sunkesnius uždavinius nei tai galėtume

padaryti naudodami tik vieną procesorių Imdami maksimalų procesorių skaičių dažnai juos išnaudojame

neveiksmingai Izoefektyvumo funkcija ir parodo kokiu greičiu turi didėti uždavinio sudėtingumas kad

visi procesoriai būtų panaudoti efektyviai

Dabar galime patikslinti uždavinio sprendimo lygiagrečiuoju algoritmu trumpiausio laiko radimo

užduoti Ieškosime tokio procesorių skaičiaus kai lygiagrečiojo algoritmo sąnaudos dar yra optimalios ir

sprendimo laikas yra trumpiausias

Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu

greičiu turi didėti uždavinio skaičiavimo apimtis kad efektyviai panaudotume vis daugiau procesorių

Aišku kad šios funkcijos apatinis režis priklauso nuo to kiek daugiausia užduočių galime vykdyti vienu

metu Pavyzdžiui nagrinėkime ntimesn dydžio matricą Jei procesoriams paskirstome tik jos eilutes arba

stulpelius tai veiksmingai galime naudoti iki p = n procesorių Kai duomenis skirstome dvimačiu

blokiniu arba cikliniu būdu tai didžiausias procesorių skaičius yra p = n2

Didžiausią skaičių procesorių kuriuos galime naudoti realizuodami duotąjį lygiagretųjį algoritmą

vadinsime algoritmo lygiagretumo (arba konkurencingumo) laipsniu (angl degree of concurrency ir

žymėsime C(W) čia W yra uždavinio dydis

Tarkime kad Gauso metodu sprendžiame tiesinių lygčių sistemą Tada nuosekliojo algoritmo dydis

yra )( 3nW Θ= Jei sistemos matrica yra paskirstyta tarp procesorių vienmačiu blokiniu būdu tai

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 37: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

36

algoritmo lygiagretumo laipsnis yra )( 31Wp Θ= kai naudojame dvimatį blokinį paskirstymą ndash

konkurencingumo laipsnis padidėja iki )( 32Wp Θ=

Lygiagrečiojo algoritmo lygiagretumo laipsnis turi būti naudojamas apibrėžiant izoefektyvumo

funkciją Jei uždavinio dydis yra W tai veiksmingai galime naudoti iki )(WCp = procesorių Kita vertus

jei duotas procesorių skaičius p tai didžiausias uždavinys kurį galime efektyviai spręsti šiuo algoritmu

yra )(1 pC minus Toks yra papildomas izoefektyvumo funkcijos apribojimas atsirandantis įvertinant algoritmo

lygiagretumo laipsnį Jei gautosios funkcijos augimo greitis yra didesnis už papildomų algoritmo sąnaudų

poveikį tai ji ir apibrėžia viso algoritmo izoefektyvumo funkciją

33 Lygiagrečiųjų algoritmų sudarymo etapai

Suformuluokime esminius klausimus į kuriuos reikia atsakyti kuriant lygiagretųjį algoritmą

1 Kaip išskaidyti uždavinį į nepriklausomas užduotis

2 Kokio dydžio užduotis pasirinkti

3 Kiek reikia procesorių kad uždavinį išspręstume greičiausiai

4 Kaip paskirstyti užduotis tarp procesorių

Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime

išskirti nepriklausomas užduotis kurias skirtingi procesoriai gali spręsti tuo pačiu metu Kuo daugiau yra

tokių užduočių tuo daugiau procesorių galime naudoti uždaviniui spręsti ir tolygiau paskirstyti tarp visų

procesorių darbą Kiekvienos užduoties atlikimas priklauso nuo tam tikrų duomenų todėl siekiame kad

šiuos duomenis jau turėtų tas procesorius kuriam skirta užduotis Priešingu atveju papildomą informaciją

reikia persiųsti iš kito procesoriaus o tai gana ilgai trunkantis veiksmas Taigi užduotis grupuojame taip

kad procesoriams kuo rečiau reikėtų keistis didesniais informacijos kiekiais Bet toks užduočių

sujungimas reiškia mažesnį jų kiekį Kompromisinio sprendinio radimas ir daro užduočių sąrašo

sudarymą sudėtingu uždaviniu

Pažymėkime NiVF i 21 K== užduočių aibė

Kiekvieną užduotį iV apibūdinsime dviem dydžiais )( ii Dt čia it yra užduoties vykdymo laikas

etaloniniu procesoriumi o iD yra duomenų reikalingų vykdyti šiai užduočiai aibė

Pažymėtina kad nebūtinai visos užduotys net ir tikslus jų skaičius yra žinomos pradedant spręsti

uždavinį Kai kurios užduotys gali buti generuojamos vykdant algoritmą

Ne visos aibes F užduotys gali būti vykdomos nepriklausomai viena nuo kitos Pažymėkime

ji VV p sąlygą kad užduotis jV gali buti pradėta skaičiuoti tik tada kai pasibaigė užduotis iV Tada iV

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 38: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

37

yra vadinama užduoties jV pirmtake (angl predecessor) Taigi sudarę užduočių sąrašą turime jį

topologiškai surušiuoti Visų eiliškumo sąlygų aibę pažymėkime

jiij VVlP p=

Tada lygiagretųjį algoritmą vaizduojame orientuotu acikliniu grafu )( PFG = Šis grafas būtinai

yra aciklinis nes priešingu atveju negalėtume atlikti kai kurių užduočių 17 pav pavaizduotas

lygiagrečiojo algoritmo užduočių grafikas iš kurio pavyzdžiui matome kad užduotis 7V gali būti

pradėta vykdyti tik tada kai jau suskaičiuotos 543 VVV užduotys Grafo viršūnių svoriai rodo šių

užduočių vykdymo laiką

17 pav Lygiagrečiojo algoritmo užduočių grafas

Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių )( 110 minus= psssS K

kurio elementas jniiij VVVs

21K= yra j-ajam procesoriui tekusių nj užduočių aibė Kiekvienai

užduočiai ji sVlisin indeksas l reiškia jos vykdymo eilę j-ajame procesoriuje

Tvarkaraštis yra korektiškas jei įvykdytos šios dvi sąlygos

1 Kiekviena užduotis priklauso tik vienai aibei js

2 Kiekvienos užduoties vykdymo eilė yra didesnė už visų jos pirmtakių užduočių

priklausančių tai pačiai aibei vykdymo eilę

Ieškome tokio korektiško užduočių sprendimo tvarkaraščio kurį vykdydami uždavinį

išsprendžiame greičiausiai Jeigu optimaliame tvarkaraštyje kai kurios aibės js yra tuščios tai

realizuodami algoritmą naudojame mažiau procesorių nei galėtume

Sudaryti optimalų tvarkaraštį yra labai sunkus uždavinys Tik kai kuriais atvejais yra žinomi

polinominio sudėtingumo algoritmai leidžiantys rasti optimalius tvarkaraščius Dažniausiai tokie

algoritmai yra nežinomi arba jie yra daug sudėtingesni už uždavinį kurį norime išspręsti

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 39: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

38

Tvarkaraščio sudarymas yra sunkus uždavinys ir tada kai atsižvelgiame tik į užduočių vykdymo

laiką it tačiau jis itin sunkus kai tenka įvertinti ir duomenų iD judėjimo tarp procesorių sąnaudas

Yra deterministiniai ir dinaminiai tvarkaraščio sudarymo metodai

4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS

Jau susipažinome su lygiagrečiųjų kompiuterių tipais ir sudarėme kelis lygiagrečiuosius algoritmus

Kitas žingsnis ndash užrašyti šiuos žingsnius formalia programavimo klaba ir atlikti skaičiavimus Yra daug

populiarių programavimo kalbų kuriomis užršome nuosekliuosius algoritmus paminėsime tik C C++

Fortran Pascal kalbas Pirmiausia reikia nuspręsti ar realizuodami lygiagrečiuosius algoritmus kursime

naujas programavimo kalbas ar užteks papildyti jau egzistojančias Į šį klausimą galėsime atsakyti tik

tada kai nustatysime kokių papildomų priemonių mums reikia jei norime užrašyti bet kokį lygiagretųjį

algoritmą Taigi buvo suburta specialistų grupė kuri sudarė paskirstytųjų skaičiavimų standartą ir

rekomendavo jį naudoti paskirstytosios atminties lygiagrečiuosiuose kompiuteriuose Ši duomenų

persiuntimo sąsaja buvo pavadinta MPI (angl Message Parsing Interface) Ją sudarant buvo pasitelkta

kitų programavimo bibliotekų (PVM Chameleon PARMACS) ypatybės bei įvertinti naujausi teoriniai

siūlymai

Svarbiausios MPI ypatybės

bull MPI yra biblioteka o ne nauja programavimo kalba Ji tik apibėžia paprogramių vardus

parametrus ir jų funkcinę paskirtį Šias paprogrames galima naudoti Fortran 77 ir C

kalbomis parašytose programose parengtos paprogramių Fortran 95 ir C++ versijos

Vartotojas programą rašo standartine programavimo kalba tik kompiliuodamas prijungia

MPI biblioteką

bull MPI realizuotas išreikštinis duomenų siuntimo modelis Apibrėžtos ne tik būtinosios

priemonės be kurių negalime užrašyti lygiagrečiojo algoritmo realizuojamo

paskirstytosios atminties lygiagrečiuoju kompiuteriu bet ir daug papildomų paprogramių

lengvinančių algoritmo realizaciją arba padidinančių algoritmo efektyvumą MPI leidžia

atlikti skaičiavimus su heterogeniškais kompiuteriais

bull MPI standartas apibrėžia tik funkcinę paprogramės paskirtį be nereglamentuoja jos

realizacijos Todėl skirtingų tipų kompiuterių gamintojai gali šias paprogrames realizuoti

efektyviausiu šiam kompiuteriui būdu

bull MPI standartu parašyta programa be paeitimų gali būti perkelta iš vieno tipo kompiuterio į

kito tipo kompiuterį Tai ypač svarbu kuriant matematinių algoritmų bibliotekas

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 40: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

39

bull Išsamų MPI standartą sudaro 125 pagrindinės paprogramės ir funkcijos Be to jau

parengtas ir MPI-2 praplėtimas

HPF (angl High Performance Fortran) ndash yra dar vienas standartas praplečiantis Fortrano 90

galimybes ir leidžiantis efektyviai realizuoti daugelį lygiagrečiųjų algoritmų Ši Fortrano versija ypač

patogi kai sprendžiame uždaviniius kuriems būdingas duomenų lygiagretumas Tada lygiagretusis

algoritmas gaunamas iš nuosekliosiios Fortrano 90 programos naudojant tik kelias papildomas

direktyvas HPF direktyvos yra įtrauktos į naujausią Fortrano 95 standartą

HPF yra naudojamas tada kai algoritmui būdingas duomenų lygiagretumas Jis leidžia išskirti

lygiagrčiąsias algoritmo dalis (duomenų lygiagretumo naudojimas) ir paskirstyti duomenis procesoriams

Programuotojui nereikia pačiam rūpintis duomenų perdavimo procesoriams procedūromis šį darbą

automatiška atlieka HPF

Tačiau gautojo lygiagrečiojo algoritmo efektyvumas iš esmės priklauso nuo pasirinkto duomenų

paskirstymo būdo be nuo nuosekliajame algoritme egzistuojančio duomenų lygiagretumo

OpenMP yra vienas iš bandymų suformuluoti programavimo standartą skirtą lygiagretiesiems

algoritmams realizuoti bendrosios atminties kompiuteriuose Siekiama sudaryti nedidelį rinkinį

programavimo konstrukcijų leidžiančių efektyviai realizuoti lygiagretųjį algoritmą Kadangi OpenMP yra

skirtas kompiuteriams naudojantiems bendrąją atmintį tai programuotojui nereikia pačiam rūpintis

duomenų pasikeitimu tarp skirtingų procesorių Pagrindinis jų tikslas ndash išskirti tas algoritmo(ar juos

realizuojančios programos) dalis kurios gali būti vykdomos vienu metu

OpenMP programavimo modelyje pagrindinis programavimo įrankis yra baigtinio skaičiaus

procesų (angl threads) naudojimas Čia naudojamas terminas threads kuris reiškia giją dažnai vadinamą

srautu)

Pagrindiniai OpenMP programavimo modelio etapai

1 Algoritmą pradeda vykdyti vienas procesas kurį vadiname šeimininku Ši algoritmo dalis yra

nuoseklioji

2 Nuoseklioji algoritmo dalis nutraukiama kai naudojama direktyva lygiagrečioji sritis Tada

sukuriama vienu metu dirbačių procesų grupė Ši algoritmo dalis pažymėta Fork direktyva

3 Kai visi procesai baigia vykdyti lygiagrečiuosios algoritmo srities užduotis jie sustabdomi ir

toliau skaičiuoja tik šeimininkas ndash procesas (Join direktyva)

Panašiai kaip or HPF programavimo įrankyje visos OpenMP direktyvos yra informatyvios tik šios

programavimo priemonės transliatoriams o standartiniai C ir Fortrano kalbų transliatoriai jas vertina kaip

komentarus Todėl OpenMP programos be pakeitimų gali būti vykdomos ir nuosekliaisiais kompiuteriais

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA
Page 41: KAUNO TECHNOLOGIJOS UNIVERSITETAS …kopustas.elen.ktu.lt/...media=lygiagreciu_skaiciavimu_referatas.pdfSiekiama, kad programas galima būtų nesunkai perkelti iš vieno lygiagrečiojo

40

IŠVADOS

Susipažinome su lygiagrečiuoju skaičiavimu su jam skirtais specialios paskirties kompiteriais

algoritmais bei programavimo įrankiais Atlikta analizė parodė kad Lygiagrečiųjų kompiuterių

programas yra sunkiau parašyti nei nuosekliųjų nes komunikavimas ir sinchronizacija tarp skirtingų

dalinių uždavinių tipiškai yra vienas didžiausių barjerų norint gauti gerą lygiagrečiosios programos

našumą o tradiciškai kompiuterių programinė įranga kuriama nuosekliam skaičiavimui

Norint išspręsti uždavinį reikia sukonstruoti algoritmą kuris išveda instrukcijų nuoseklųjį srautą

Lygiagretieji skaičiavimai naudoja sudėtinį elementų vykdymą vienu metu spręsti uždaviniui Uždavinys

išskaidomas į dalis kurios yra nepriklausomos todėl kiekvienas apdorojamas elementas gali atlikti savo

algoritmo dalį tuo pačiu metu kaip ir kiti elementai Perdirbami elementai gali būti skirtingi ir naudoti

resursus tokius kaip atskiras kompiuteris su daugialypiais procesoriais skaičius tinklo kompiuterių

specializuotas techninė įranga ar bet kuri kita kombinacija

Reikia nepamiršti ir to kad naujos virtualiosios lygiagrečiojo skaičiavimo technologijos

nereikalaujančios išskirtinės kompiuterių architektūros vis labiau tobulėja ir klasteriai bei gridai labai

palengvina sudėtingų bei daug resursų reiklaujančių problemų sprendimą Tačiau aktuali išlieka

komunikavimo spartos problema

LITERATŪRA

1 R Čiegis Lygiagretieji algoritmai ir tinklinės technologijos Vilnius 2005 334 p

2 doc SMaciulevičiaus ir doc RMarcinkevičius paskaitų medžiaga

httpwwwifkoktult~stamaLyg_ArchLyg_Archhtm

3 httpenwikipediaorgwikiParallel_computing

4 httpwwwtop500org

5 prof Algimantas Juozapavičius Grid skaičiavimai ir superkompiuteriai Lietuvoje

httpwwwlvultcmsfilesliedmresources3053_5_A_Juozapavicius_Grid_skaiciavimai_ir_super

kompiuteriai_Lietuvojepdf

  • KAUNO TECHNOLOGIJOS UNIVERSITETAS
  • ĮVADAS
  • 1 LYGIAGRETIEJI SKAIČIAVIMAI ŠIUOLAIKINĖSE TECHNOLOGIJOSE
    • 11 Lygiagrečių skaičiavimų poreikis ir taikymo sritys
    • Orų prognozė ir klimato pokyčiai
    • Branduolinės ir cheminės reakcijos
    • Kosmologija geologija seismologija
    • Žmogaus genomas genų inžinerija
    • Raketų lėktuvų automobilių projektavimas
    • Vaizdų generavimas grafika
    • Finansinis ekonominis modeliavimas
    • 12 Lygiagrečių kompiuterių istorija
    • 13 Uždaviniai lygiagretiems skaičiavimams ir problemos
    • Nuoseklieji skaičiavimai
    • (angl serial computing)
      • Lygiagretieji skaičiavimai
      • (angl parallel computing)
        • Vykdomi viename kompiuteryje su vienu procesoriumivykdomuoju įrenginiu
        • Vykdomi naudojant keletą procesorių vienu metu
        • Problema yra išskaidoma į diskrečią instrukcijų seką
        • Problema yra išskaidoma į atskiras dalis kuriuos gali būti sprendžiamos lygiagrečiai
        • Instrukcijos yra vykdomos viena po kitos (nuosekliai)
        • Kiekviena atskira dalis yra skaičiuojama nuosekliai
        • Bet kuriuo laiko momentu gali būti vykdoma tik viena instrukcija
        • Skirtingų dalių instrukcijos yra vykdomos skirtinguose CPU tuo pačiu metu ty keletas procesorių kartu tuo pačiu metu sprendž
        • Sukurti lygiagrečiuosius kompiuterius (kuriamos tokios kompiuterių sistemos kuriose efektyviai galima naudoti vis daugiau pro
        • Sukurti efektyvius lygiagrečiuosius algoritmus (labai dažnai geriausi nuoseklieji algoritmai negali būti sėkmingai realizuoti
        • Sukurti ldquolygiagrečiąsiasrdquo kalbas
        • Sukurti lygiagretaus programavimo įrankius
        • Sukurti metodus ir priemones lygiagrečių skaičiavimų efektyvumui įvertinti
        • Užtikrinti lygiagrečių programų pernešamumą
          • Lygiagrečių skaičiavimų problemos
            • Sunku naudoti reikalinga patirtis ir aukšta kvalifikacija norint paruošti užduotis išlygiagretinimui
            • Ribotas išlygiagretinamų uždavinių skaičius lygiagretinimui ldquopasiduodardquo tik nedidelis skaičius pagrindinių uždavinių trūksta
            • Labai imli darbui išlygiagretinimo procedūra reikia išnagrinėti esamą programinę įrangą jos modelius ar kodą intelektinės n
            • Sunku įvesti pakeitimus į lygiagretų kodą išlygiagretinus ką nors modifikuoti ar keisti ndash vėl labai imlus darbui uždavinys
            • Trūksta priemonių ir įrankių išlygiagretinimo efektyvumui įvertinti
            • Kartais sudėtinga sinchronizuoti procesus dėl ko gali sulėlėti lygiagrečiai vykdomi skaičiavimai
            • 14 Lygiagrečių procesų sinchronizacija
              • 2 LYGIAGREČIŲJŲ KOMPIUTERIŲ KONSTRAVIMAS
                • 21 Lygiagrečiųjų kompiuterių architektūra
                • 22 Lygiagrečiųjų kompiuterių atminties tipai
                • 23 Virtualusis lygiagretusis kompiuteris
                • Klasteris ndash lygiagrečioji arba paskirstytoji sistema kurią sudaro keli tarpusavyje susieti kompiuteriai naudojama kaip vieni
                • Programinė įranga instaliuota klasteryje bdquoVilkasldquo yra analogiška kaip ir kituose pasaulio skaičiavimo centruose
                • Skaičiavimo technologijų sujungimo su komunikacijų technologijomis idėja 9 dešimtmetyje paskatino metaskaičiavimų (metacomputi
                • Metaskaičiavimų paradigma numatė kad maskuojant komunikacijas prijungtus prie tinklo kompiuterius naudoti kaip vieningus sk
                • 24 Vektoriniai procesoriai
                  • 3 LYGIAGRETŪS ALGORITMAI
                    • 31 Lygiagrečiųjų algoritmų ypatumai
                      • 311 Lygiagrečiųjų algoritmų sudėtingumo teorija
                      • 312 Spartinimo ir efektyvumo koeficientai
                      • 313 Mažiausios vykdymo trukmės algoritmai
                      • 314 Amdahlo dėsnis
                      • 315 Heterogeninių kompiuterių efektyvumo analizė
                        • 32 Lygiagrečiojo algoritmo išplečiamumas
                          • Izoefektyvumo funkcija Paprasčiausių lygiagrečiųjų algoritmų efektyvumas visada yra mažesnis už vienetą Taip yra dėl to kad
                          • Optimalių sąnaudų lygiagretusis algoritmas Vertinant lygiagrečiojo algoritmo ypatybes dažnai naudojamas dar vienas paprastas
                          • Algoritmo lygiagretumo laipsnis Lygiagrečiojo algoritmo izoefektyvumo funkcija parodo kokiu greičiu turi didėti uždavinio sk
                            • 33 Lygiagrečiųjų algoritmų sudarymo etapai
                              • Nepriklausomų užduočių sąrašas Sudarydami bet kokį lygiagretųjį algoritmą pirmiausia turime išskirti nepriklausomas užduotis
                              • Užduočių sprendimo tvarkaraštis Tvarkaraščiu vadinsime vektorių
                                  • 4 LYGIAGRETAUS PROGRAMAVIMO BIBLIOTEKOS
                                  • IŠVADOS
                                  • LITERATŪRA