KAUNO TECHNOLOGIJOS UNIVERSITETAS...
Transcript of KAUNO TECHNOLOGIJOS UNIVERSITETAS...
KAUNO TECHNOLOGIJOS UNIVERSITETAS
INFORMATIKOS FAKULTETAS
INFORMACIJOS SISTEMŲ KATEDRA
Specializuoti mažai energijos eikvojantys skaičiavimai
Referatas
Atliko: doktorantė Rima Linaburgytė
Priėmė: Prof. Habil. Dr. Rimantas Šeinauskas
Kaunas, 2015
Turinys
1. Įžanga............................................................................................................................................. 3
2. Energijos suvartojimo problema .................................................................................................... 4
3. Kompiuteriniai skaičiavimai ir jų rūšys......................................................................................... 4
4. Amdahl’o dėsnis ............................................................................................................................ 7
5. Lygiagrečių kompiuterių architektūra ........................................................................................... 8
6. Lygiagrečių kompiuterių atmintis ................................................................................................. 9
7. Lygiagretieji kompiuteriai ........................................................................................................... 11
8. Lygiagretieji algoritmai ir jų vertinimo kriterijai ........................................................................ 14
9. Literatūra ..................................................................................................................................... 16
3
Įžanga
Energija yra pagrindinis faktorius ribojantis specializuotų kompiuterinių sistemų plėtrą.
Tobulėjant technologijoms, energijos sąnaudos vis didėja, tačiau esminė problema yra ne tik per
trumpas kompiuterių ar išmanių prietaisų gyvavimo laikas ar augantys energijos sunaudojimo kaštai,
bet ir didėjantis tiek atsinaujinačių, tiek neatsinaujinačių žemės resursų poreikis, todėl pradėta ieškoti
būdų, kaip sukurti pažangesnes, mažiau energijos eikvojančias technologijas arba patobulinti esamas.
Vienas iš mažiau energiją eikvojančių būdų yra lygiagretieji bei paskirstytieji skaičiavimai.
Dažnai kompiuteriniams skaičiavimams paspartinti yra įdiegiami į kompiuterio konstrukciją daugiau
nei vienas procesorius. Tokie daugiaprocesoriniai kompiuteriai šiais laikais yra neatsiejami nuo
daugiabranduolinių procesorių, kurie gali efektyviau vykdyti užduotis, nes keli procesai gali būti
atliekami tuo pačiu metu. Lygiagrečiųjų skaičiavimų metu padalintos užduoties žingsniai yra
vykdomi kelių procesorių vienu metu, o ne iš eilės, kaip tai daroma nuosekliųjų skaičiavimų metu.
Be to, daugiaprocesoriniai kompiuteriai gali naudoti vieną ar kelis komandų srautus ir tos komandos
gali naudoti vieną ar kelis duomenų srautus bei turėti tam tikrą lygiagrečiųjų kompiuterių tipui skirtą
atmintį.
Šiais laikais egzistuoja daugelis lygiagrečių kompiuterinių sistemų tokių, kaip
superkompiuteriai, klasteriai, gridai, debesų kompiuterija ir pan. Tokios kompiuterinės sistemos yra
sukurtos atlikti ypač sudėtingiems daug resursų reikalaujantiems skaičiavimams, kurie atliekami taip
greitai, kaip tai leidžia šiuo metu esančios pažangiausios technologijos. Didžioji dalis galingiausių
pasaulyje kompiuterių yra klasteriai, kuriuos gamina žymiausios kompanijos: HP, IBM, Cray
korporacija ir t.t.
4
1. Energijos suvartojimo problema
Energija yra pagrindinis faktorius ribojantis specializuotų kompiuterinių sistemų plėtrą.
Tobulėjant technologijoms, energijos sąnaudos vis didėja, tačiau esminė problema yra ne tik per
trumpas kompiuterių ar išmanių prietaisų gyvavimo laikas ar augantys energijos sunaudojimo kaštai,
bet ir didėjantis tiek atsinaujinačių, tiek neatsinaujinačių žemės resursų poreikis. Be to, dauguma
energijos išgavimo būdų eikvoja ne tik neatsistatančius žemės išteklius, bet ir yra žalingi aplinkai ir
tuo pačiu žmonėms, todėl pradėta ieškoti būdų, kaip sukurti pažangesnes, mažiau energijos
eikvojančias technologijas arba patobulinti esamas.
Šiame darbe nagrinėjami kompiuteriniai skaičiavimai, nuo kurių greičio priklauso ir
kompiuterio sunaudojama energija.
2. Kompiuteriniai skaičiavimai ir jų rūšys
Norint nagrinėti kompiuterinius skaičiavimus, pirmiausia, reikia suprasti pačią kompiuterio
architektūrą. Pats svarbiausias kompiuterio įtaisas yra procesorius, apdorojantis duomenų srautus ir
atliekantis įvairius veiksmus. Procesorius dar vadinamas aritmetiniu arba loginiu įtaisu. Valdymo
įtaisas išrenka iš atmintinės komandų seką, sukuria valdymo signalus, koordinuoja kitų kompiuterio
įrenginių darbą ir pan. Operacijų įtaisas atlieka aritmetinius ir loginius veiksmus su duomenimis. Iš
kitos pusės, procesoriaus sąvoka yra bendrinė, reiškianti gana abstrakčią informacinių sistemų rūšį,
atliekančią manipuliacijas su duomenimis, tačiau dažniau naudojama kalbant apie skaičiavimams
skirtus procesorius, realizuotus, kaip aparatiniai įrenginiai (dažniausiai – mikroprocesoriai). Dažnai
kompiuteriniams skaičiavimams paspartinti yra įdiegiami į kompiuterio konstrukciją daugiau nei
vienas procesorius. Tokie kompiuteriai, kuriuose įmontuoti bent du procesoriai yra vadinami
daugiaprocesoriniais. Daugiaprocesoriniai kompiuteriai šiais laikais yra neatsiejami nuo
daugiabranduolinių (angl. multi-core) procesorių. Daugiabranduoliniame procesoriuje vienoje silicio
pagrindo plokštėje yra integruoti du ar daugiau mikroprocesorių, atliekančių tas pačias arba skirtingas
funkcijas [3]. Tokie daugiaprocesoriniai kompiuteriai, kurių kiekvienas procesorius yra
daugiabranduolinis, gali efektyviau vykdyti užduotis, nes keli procesai gali būti atliekami tuo pačiu
metu. Procesas yra programos vykdomų veiksmų seka, kuriems skirstomi kompiuterio ištekliai.
Procesai gali vienas su kitu keistis duomenimis, vienas procesas gali inicijuoti kitą ir pan.
5
Energijos suvartojimas luste yra apskaičiuojamas pagal formulę:
𝑃 = 𝐶𝑉2𝐹,
kur 𝐶 yra elektrinė talpa, 𝑉 - įtampa, o 𝐹 - procesoriaus dažnis [3]. Akivaizdu, kad didėjant
procesoriaus dažniui, didėja ir suvartojamos energijos kiekis procesoriuje. Jei Moore’o dėsnis, pagal
kurį procesorių sparta kas 18 mėnesių padidėja 2 kartus, galios ir toliau, tai 2020 m. kompiuterio galia
prilygs žmogaus smegenų galiai, o 2060 m. kompiuterio galia prilygs visų Žemėje gyvenančių
žmonių smegenų galiai. Kuo daugiau tranzistorių viename ploto vienete, tuo didesnė gali būti
mikroschemos sparta, tačiau Moore'o galiojimo pabaiga nuolat neramina puslaidininkių industriją:
tranzistoriai mažėja, kartu atsiranda fundamentalios problemos, tokios kaip energetinis efektyvumas
ir srovės nuotėkių augimas. Visa tai labai apsunkina naujų technologinių procesų kūrimą. Per pastarąjį
dešimtmetį duomenų kiekiai augo eksponentiškai, kas verčia ieškoti naujų būdų, kaip tuos duomenis
apdoroti kompiuterinėse sistemose realiu laiku. Lyginant informacijos augimą su Moore'o dėsniu
2012 - 2020 metais (žr. pav. 1), akivaizdu, kad duomenys auga sparčiau nei skaičiavimo pajėgumas,
vadinasi, laikui bėgant informacijos bus diaugiau nei bus įmanoma ją apdoroti [1].
1 pav. Duomenų augimas ir Moore'o dėsnis
Vienas iš būdų didinančių skaičiavimo efektyvumą ir yra papildomos įrangos panaudojimas,
įmontuojant daugiau procesorių ar juose esančių branduolių. Tokiu būdu skaičiavimai gali būti
atliekami lygiagrečiai keliuose įrenginiuose.
6
Nuoseklieji skaičiavimai (angl. serial computing) yra toks skaičiavimo būdas, kai
kompiuteriniai skaičiavimai vykdomi viename skaičiavimo įrenginyje CPU (angl. central processing
unit), o visa užduotis yra padalijama į žingsnius (instrukcijas) 𝑡1, 𝑡2, ⋯ , 𝑡𝑁, kurie atliekami vienas po
kito, t.y. nuosekliai. Nuoseklaus skaičiavimo metu tam tikru laiko momentu yra vykdoma tik viena
instrukcija. Nuoseklaus skaičiavimo schema pateikta 2 paveiksle. Toks skaičiavimo būdas vyravo,
kol nebuvo sukurti superkompiuteriai, kompiuterių klasteriai ir daugiabranduoliniai procesoriai [3].
2 pav. Nuosekliųjų skaičiavimų schema
Lygiagretieji skaičiavimai (angl. parallel computing) - tai daug kompiuterinių skaičiavimų,
kurie atliekami vienu metu. Lygiagrečių skaičiavimų principas yra sudėtingesnis už nuosekliuosius
skaičiavimus, nes padalintos užduoties žingsniai yra atliekami vienu metu kelių procesorių, o ne iš
eilės [3]. Lygiagretaus skaičiavimo schema pateikta 3 paveiksle.
3 pav. Lygiagrečiųjų skaičiavimų schema
7
3. Amdahl’o dėsnis
Amdahl’o dėsnis teigia, kad spartinimo koeficientas 𝑆 yra apibrėžiamas tokia formule:
𝑆 =1
1 − 𝑃,
čia 𝑃 yra ta algoritmo dalis, kuri vykdoma lygiagrečiai [3].
Iš šio teiginio galima daryti tokias akivaizdžias išvadas:
Jei 𝑃 = 0 (algoritmas vykdomas tik nuosekliai), tai 𝑆 = 1.
Jei 𝑃 = 1 (algoritmas vykdomas tik lygiagrečiai), tai teoriškai 𝑆 = ∞.
Jei 𝑃 = 0,5 (pusė algoritmo yra vykdoma lygiagrečiai), tai maksimali spartinimo
koeficiento reikšmė 𝑆 = 2, vadinasi tokiu atveju algoritmas yra vykdomas dvigubai greičiau
negu tada, jei jis būtų vykdomas tik nuosekliai. Spartinimo koeficiento priklausomybės nuo
lygiagrečiai vykdomos algoritmo dalies grafikas pateiktas 4 paveiksle. Matome, kad didėjant
procesorių skaičiui, spartinimo koeficiento reikšmė 𝑆 didėja eksponentiškai.
4 pav. Spartinimo koeficiento priklausomybė nuo lygiagrečiai vykdomos algoritmo dalies
Svarbu žinoti, kaip pagreitės algoritmo realizavimas, jei uždavinį spręsime naudodami daugiau
procesorių. Spartinimo koeficientas yra apskaičiuojams pagal tokią formulę:
0
1
2
3
4
5
6
7
8
9
10
0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
Spar
tin
imo
ko
efic
ien
tas,
S
Lygiagrečiai vykdoma algoritmo dalis
8
𝑆 =1
𝑃𝑁 + (1 − 𝑃)
,
čia 𝑁 yra procesorių skaičius, o 𝑃 yra ta algoritmo dalis, kuri vykdoma lygiagrečiai. Dažnai ši
formulė naudojama norint apskaičiuoti teoriškai maksimalią spartinimo koeficiento reikšmę, kai
naudojama daugiau nei vienas procesorius. 5 paveiksle pateiktas spartinimo koeficiento 𝑆
priklausomybės nuo procesorių skaičiaus 𝑁 grafikas.
5 pav. Spartinimo koeficiento priklausomybė nuo procesorių skaičiaus, kai lygiagrečiai
vykdoma algoritmo dalis yra atitinkamai lygi 0,5; 0,75; 0,9; 0,95
4. Lygiagrečių kompiuterių architektūra
Egzituoja skirtingos lygiagrečių kompiuterių klasifikacijų variacijos. Viena populiariausių
klasifikacijų yra Flyno taksonomija (angl. Flynn‘s taxonomy). Flynas klasifikavo daugiaprocesorinių
kompiuterių architektūras pagal tai, ar jie naudojo vieną ar kelis komandų srautus (angl. instruction
stream) ir pagal tai, ar tos komandos naudojo vieną ar kelis duomenų srautus (angl. data stream)
[3,4]. Kiekviena dimensija, t.y. komandų srautas ir duomenų srautas, gali įgyti vieną iš dviejų būsenų:
vienas (angl. single state) arba daug (angl. multiple state). Flyno taksonomija pateikta 6 paveiksle.
0
2
4
6
8
10
12
14
16
18
20
1 2 4 8
16
32
64
12
8
25
6
51
2
10
24
20
48
40
96
81
92
16
38
4
32
76
8
65
53
6
Spar
tin
imo
ko
efic
ien
tas,
S
Procesorių skaičius, N
0,5
0,75
0,9
0,95
9
6 pav. Flyno taksonomija
VKVD (angl. SISD) - vienas komandų srautas ir vienas duomenų srautas. Tokia struktūra yra
paremtas nuoseklus kompiuteris. Tai seniausias kompiuterio tipas, kurio skaičiavimai atliekami
deterministiškai, vykdant tik vieną komandų ir duomenų srautą.
VKDD (angl. SIMD) - vienas komandų srautas ir daug duomenų srautų. Tai lygiagretaus
kompiuterio tipas, kai visi procesoriai vykdo tą patį komandų srautą, tačiau gali dirbti su skirtingais
duomenų srautais. Tai kompiuterio tipas, kurio skaičiavimai vykdomi sinchroniškai ir
deterministiškai. Dauguma modernių kompiuterių ypač tų, kurie turi grafinius proesorius (angl.
GPU), paremti VKDD veikimu.
DKVD (angl. MISD) - daug komandų srautų ir vienas duomenų srautas. Tai taip pat
lygiagretaus kompiuterio tipas, tačiau šiuo atveju kiekvienas procesorius apdoroja tą patį duomenų
srautą, tačiau tokia skaičiavimo struktūra nėra itin paplitusi.
DKDD (angl. MIMD) - daug komandų srautų ir daug duomenų srautų. Tai lygiagrečių
kompiuterių tipas, kai kiekvienas procesorius gali vykdyti skirtingą komandų ir skirtingą duomenų
srautą. Pats vykdymas gali būti tiek sinchroniškas, tiek nesinchroniškas, tiek deterministinis, tiek
nedeterministinis. Į šią kategoriją patektų daugiaprocesoriniai kompiuteriai, superkompiuteriai ir pan.
5. Lygiagrečių kompiuterių atmintis
Išskiriamos trys pagrindinės lygiagrečių kompiuterių atminties rūšys: bendroji, paskirstytoji ir
mišri atmintis.
10
Bendrosios atminties pagrindinė savybė yra ta, kad procesoriai gali veikti nepriklausomai,
tačiau jie naudojasi tuo pačiu atminties šaltiniu, o tam tikros dalies atminties pasikeitimai, atsiradę
dėl vieno procesoriaus įtakos, yra prieinami visiems kitiems likusiems procesoriams. Bendroji
atmintis yra skirstoma į dar dvi rūšis pagal atminties prieigą - nekintančiąją (angl. uniform memory
access (UMA)) ir kintančiąją atminties prieigą (angl. non-uniform memory access (NUMA)). Bendrąja
atmintimi su nekintančia prieiga naudoja identiški procesoriai, kurių prieiga ir prieigos laikai prie
atminties yra visiškai vienodi, o bendrosios atminties su kintančia prieiga atveju tiek prieiga, tiek
prieigos laikai atskirų procesorių gali skirtis [3]. Bendrosios atminties tiek su nekintančia, tiek su
kintančia prieiga schemos pateiktos 7 paveiksle.
7 pav. Benroji atmintis su nekintančia ir su kintančia prieiga
Paskirstytosios atminties lygiagrečiajame kompiuteryje kiekvienas procesorius gali tiesiogiai
perskaityti ir įrašyti tik jo lokaliojoje atmintyje esančius duomenis, todėl jie veikia nepriklausomai
vienas nuo kito. Jei procesorius atlieka pakeitimus savo lokaliojoje atmintyje, tai tie pasikeitimai
nedaro įtakos kitų procesorių lokalios atminties pasikeitimams. Procesoriai bendrauja tarpusavyje
siųsdami vienas kitam pranešimus. Paskirstytosios atminties schema pateikta 8 paveiksle.
8 pav. Paskirstytoji atmintis
11
Didžiausi ir greičiausi kompiuteriai pasaulyje turi tiek bendrosios, tiek paskirstytosios atminties
savybių. Mišrios atminties struktūra pateikta 9 paveiksle.
9 pav. Mišrioji atmintis
6. Lygiagretieji kompiuteriai
Egzistuoja daugelis lygiagrečių kompiuterinių sistemų tipų, pavyzdžiui: superkompiuteriai,
klasteriai, gridai, debesų kompiuterija ir t.t.
Superkompiuteriai - tai kompiuteriai, sukurti atlikti skaičiavimus taip greitai, kaip tai leidžia
tuo metu esančios pažangiausios technologijos. Šie kompiuteriai naudojami atlikti ypač sudėtingiems
daug resursų reikalaujantiems skaičiavimams, todėl šiuolaikiniuose superkompiuteriuose paprastai
naudojami lygiagretūs skaičiavimo algoritmai, kuomet tą patį uždavinį vienu metu sprendžia daugelis
procesorių, kurių skaičius gali svyruoti nuo kelių šimtų iki tūkstančių.
Superkompiuterių eros pradžia galima laikyti 1976 metus. Tais metais buvo sukurta pirma
vektorinė sistema Cray 1 (vektorinė sistema savo pavadinimą gavo už duomenų struktūros saugojimą
sistemos atmintyje, vektoriaus pavidalu). Rezultatai, gauti su programų rinkiniu sukurtu tai sistemai,
buvo žymiai geresni už bet kokio kito tuo metu egzistuojančio kompiuterio rezultatus, ir sistema gavo
superkompiuterio vardą [5].
Pagal oficialų greičiausių superkompiuterių sąrašą jau ketvirtą kartą iš eilės Kinijoje sukurtas
Tianhe-2 užima pirmąją vietą. Šis kompiuteris nuo 2013 m. laikomas greičiausiu kada nors sukurtu
kompiuteriu. Maksimali pasiekta sparta yra 33,862 petaflops/s (kvadrilijonai skaičiavimų per
sekundę), o teoriškai galima pasiekti netgi 54,902 petaflop/s, tačiau šis superkompiuteris suvartoja
net 17808 kW energijos. Be to, šiam kompiuteriui aušinti reikalingos labai galingos aušinimo
sistemos [5].
12
Klasteriai (angl. computer clusters) - tai spartaus ryšio kanalais sujungtų kompiuterių grupė,
kuri vartotojo požiūriu veikia kaip vieningas įrenginys (žr. 8 pav.) [3].
Kompiuterių klasteriai yra trijų tipų:
1. Aukšto skaičiavimų pajėgumo klasteris, paskirstantis skaičiavimo uždavinį klasterio
mazgams, taip sutrumpindamas uždavinio skaičiavimo trukmę.
2. Aukšto patikimumo klasteris, kuris plačiai naudojamas duomenų centruose serverinių
sistemų patikimumui didinti.
3. Tinklo apkrovos balansavimo klasteriai, kurie naudojami didelius duomenų srautus
apdorojančiose kompiuterinėse sistemose [4].
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, t.y. skirtingą procesorių skaičių, skirtingą branduolių 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. Tokie
sujungimai įgalina mazgus bendrauti tarpusavyje nepriklausomai nuo išorinio tinklo tipo [3]. Tipinė
klasterio schema pateikta 10 paveiksle.
Elektros energijos suvartojimo kiekis auga kartu su klasterio dydžiu.
10 pav. Tipinė klasterio schema
Didžioji dalis galingiausių pasaulyje lygiagrečių kompiuterių yra klasteriai, kuriuos pagamino
žymiausios kompiuterinių sistemų gamintojos. Kompanija HP yra pirmaujanti pagal kompiuterinių
sistemų gamybos apimtis (35,6 %). Antroje vietoje yra IBM, pagaminanti 30,4 % sistemų. Cray
korporacija smarkiai atsilieka nuo HP ir IBM, nes pagamina tik 12,3 % visų sistemų (žr. 11 pav.),
tačiau ji yra antroje vietoje pagal kompiuterinių sistemų galingumą. Kompiuterinių sistemų
galingumo pasiskirstymas pagal gamintoją pateiktas 12 paveiksle. Galingiausias kompiuterines
sistemas pagamina IBM - 28,2 % (87,143,814 GFlops). HP lieka trečioje vietoje (14,5 %) [5].
13
11 pav. Galingiausių kompiuterinių sistemų gamybos apimčių pasiskirstymas pagal gamintoją
12 pav. Kompiuterinių sistemų galingumo pasiskirstymas pagal gamintoją
Gridą (angl. computer grid) sudaro daug įvairių kompiuterių, kurie naudoja skirtingos
architektūros procesorius, turinčius įvairią programinę įrangą, ir sujungtų kompiuteriniais tinklais.
Gridas yra tam tikra paskirstytojo skaičiavimo forma. Tam tikslui naudojamas „virtualus
superkompiuteris“, sudarytas iš daug kompiuterinio tinklo pagalba sujungtų kompiuterių, ir skirtas
atlikti sudėtingus paskirstytuosius skaičiavimus [4]. Paskirstytasis skaičiavimas – tai kompiuterinio
apdorojimo metodas, kurio metu skirtingos programos dalys tuo pačiu metu veikia keliuose
kompiuteriuose, ir skirtas didelio skaičiaus užduočių sprendimui. Paskirstytasis skaičiavimas yra
lygiagretaus skaičiavimo tipas, tačiau pastarasis terminas labiau apibrėžia skaičiavimą, kurio metu
14
skirtingos programos dalys tuo pat metu veikia keliuose procesoriuose, kurie yra to paties
kompiuterio dalis. Nors abu skaičiavimo tipai reikalauja, kad programa būtų sudalinta į segmentus,
paskirstytam skaičiavimui dar reikia įvertinti skirtingas aplinkas, kuriose veikia atskiros programos
dalys, pavyzdžiui, atskiri kompiuteriai tikriausiai gali turėti skirtingas failų sistemas ir skirtingus
aparatinės įrangos komponentus [4]. Gridai yra išskiriami iš kitų aukšto našumo skaičiavimo
infrastruktūrų, tokių kaip klasteriai, tuom, kad grido kiekvienas mazgas atlieka skirtingą užduotį.
Gridai gali jungti ir geografiškai labai nutolusius kompiuterius.
Kadangi dauguma iš gridų sudaryti iš paprastų klasterių, tai visi jie turi tas pačias elektros
energijos suvartojimo problemas kaip ir klasteriai.
Debesų kompiuterija (angl. cloud computing) – paslaugos, kurioms teikti reikalingas
kompiuteris arba kitas elektroninis prietaisas turintis interneto ryšį. Debesį sudaro programos, kurių
nereikia įdiegti į kompiuterį, asmeninių bylų bei katalogų talpinimas ir kitos informacinės
technologinės naujovės. Faktiškai debesų kompiuteriai yra aukštesnio lygio gridai. Debesų
kompiuterija leidžia visur, patogiai, pagal poreikį per tinklo prieigą naudotis bendrais kompiuteriniais
ištekliais, juos valdant su minimaliu paslaugų tiekėjo įsikišimu. Duomenų centrai užpildomi
dedikuota serverine įranga, kur užtikrinamas elektros energijos tiekimas, pastovus interneto ryšys,
serverinės įrangos kondicionavimas, programinės įrangos stabilus veikimas [4].
Išskiriamos trys debesų rūšys:
vieši (prisijungti ir naudotis gali bet kas);
privatūs (prisijungti ir naudotis gali tik tam tikri vartotojai);
hibridiniai (naudojami privatūs, o prireikus daugiau resursų, naudojami ir vieši debesys) [3].
7. Lygiagretieji algoritmai ir jų vertinimo kriterijai
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ų. Algoritmo vykdymo laikas yra lygus
to algoritmo bazinių operacijų skaičiui. Taip apibrėžtas algoritmo vykdymo laikas priklauso ir 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ą.
15
Pagal sprendžiamus uždavinius lygiagretieji algoritmai skirstomi į kelias klases:
duomenų lygiagretumo tipo algoritmai, kurie naudojami tada, kai yra daug
apdorojamų duomenų, o tie duomenys paskirstomi porcijomis tarp visų galimų
kompiuterių ir apdorojami vienu metu;
funkcinio lygiagretumo algoritmai, kurie naudojami tada, kai apdorojant duomenis
reikia atlikti daug operacijų, nepriklausančių ir neįtakojančių viena kitos;
šeimininko – darbininkų tipo algoritmai, kurie gali būti taikomi visiems uždaviniams,
kuriuose galima sudaryti vienas nuo kito nepriklausomų darbų sąrašus. Vienas
procesas yra vadinamas šeimininku, kuris komunikuoja su daugeliu kitų procesų,
vadinamų darbininkais. Darbininkai informacija nesikeičia [4].
Kriterijus, su kuriuo galima palyginti kelis lygiagrečiuosius algoritmus, yra lygiagrečiojo
algoritmo spartinimo koeficientas, sprendžiant uždavinį su 𝑁 procesorių:
𝑆𝑁 =𝑇0
𝑇𝑁,
čia 𝑇0 yra laikas, per kurį uždavinys išsprendžiamas geriausiu nuosekliuoju algoritmu, o 𝑇𝑁 yra
laikas, kurį sugaišta lygiagretusis algoritmas, spręsdamas uždavinį su 𝑁 procesorių. Pastebėsime, kad
1T gali būti ir didesnis už 0T , nes geriausiąjį nuoseklųjį algoritmą ne visada pavyksta taip sėkmingai
realizuoti lygiagrečiuoju kompiuteriu. Šis koeficientas įvertina pagreitėjimą, kurį pasiekiame
spręsdami uždavinį lygiagrečiuoju algoritmu ir naudodami 𝑁 procesorių [2]. Būtent ši charakteristika
yra svarbi daugeliui lygiagrečiųjų kompiuterių vartotojų. Idealiu atveju tikimės, kad didėjant
procesorių skaičiui 𝑁 algoritmo spartinimo koeficientas 𝑆𝑁 didės tiesiškai, tačiau realiai
eksperimentuojant dažniausiai yra stebimas spartinimo koeficiento kitimas, pavaizduotas 5 paveiksle.
Kitas labai svarbus rodiklis yra lygiagrečiojo algoritmo efektyvumo koeficientas:
𝐸𝑁 =𝑆𝑁
𝑁.
Šis koeficientas parodo, kokią dalį procesorių pajėgumo pasitelkiame spręsdami uždavinį
duotuoju lygiagrečiuoju algoritmu [2].
Dar vienas kriterijus, kurį galima naudoti lygiagrečiųjų algoritmų vertinimui, yra procesorių
panaudojimo efektyvumas:
16
𝑈 =1
𝑁∑
𝑡𝑖
𝑇𝑁,
𝑁
𝑖=1
čia 𝑁 – bendras skaičiavimams panaudotas procesų skaičius, 𝑡𝑖 – 𝑖-tojo procesoriaus skaičiavimų
(neapimant pranešimų siuntimo ir laukimo) laikas, 𝑇𝑁 – visas užduoties vykdymo laikas [2].
Literatūra
1. Duranton, D. Black-Schaffer, D. De Bosschere, K. Maebe J. The HIPEAC vision for
advanced computing in Horizon 2020. Seventh framework programme, 2013.
2. Čiegis, R. Lygiagretieji algoritmai. Vilnius, 2001.
3. Barney, B. Introduction to Parallel Computing. https://computing.llnl.gov/
tutorials/parallel_comp/– [Internete prieinama 2015-02-10].
4. Igumenov, A. Lygiagretieji ir paskirstytieji elektros energiją eikvojantys skaičiavimai.
Daktaro disertacija, Vilnius, 2012.
17
5. Strohmaier, E. Dongarra, J. Simon, H. Meuer, M. Top 500 The List. http://top500.
org/-[Internete prieinama 2015-02-10].