kauno technologijos universitetas...
Post on 18-Mar-2018
225 Views
Preview:
TRANSCRIPT
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
top related