Paskirstytasis skaičiavimas

Organizavimas

Sąveikos tarp atskirų kompiuterių organizavimas yra svarbiausias uždavinys. Norint panaudoti kuo didesnį kiekį skirtingų kompiuterių tipų komunikacijos kanalo protokolas negali turėti ar naudoti jokios informacijos, kuri gali būti nesuprantama kažkuriems įrenginiams. Ypatingas dėmesys taip pat turi būti skiriamas pranešimų perdavimui. Jie turi būti pristatomi neiškraipyti, o klaidingi pranešimai atmetami, kad nesukeltų klaidos sistemoje ar net visame tinkle.
Kitas svarbus faktorius yra galimybė persiųsti programinę įrangą į kita kompiuterį taip, kad ji veiktų ir kompiuteris galėtų prisijungti prie egzistuojančio tinklo. Tai ne visuomet įmanoma įgyvendinti, o kartais ir nepraktiška, kadangi gali skirtis techninė įranga ar resursai. Tokiu atveju taikomi kiti metodai: išankstinis kompiliavimas ar rankinis programinės įrangos įkėlimas.

Tikslai ir pranašumai

Yra daug paskirstytojo skaičiavimo sistemų rūšių ir daug iššūkių kuriant tokias sistemas. Pagrindinis paskirstytojo skaičiavimo sistemos tikslas yra sujungti naudotojus ir šaltinius į aiškų, atvirą ir keičiamo dydžio tinklą. Idealiu atveju toks junginys yra net labai atsparus klaidoms ir galingesnis nei dauguma pavienio kompiuterio sistemos variantų.

Techniniai klausimai

Blogai suprojektuota paskirstytųjų skaičiavimų sistema gali sumažinti visų skaičiavimų patikimumą jei vieno mazgo nepasiekiamumas suardo kitus mazgus. Kaip kažkada pastebėjo Leslie Lamport: „Paskirstytoji sistema tai tokia sistema, kurioje klaida kompiuterio, apie kurio egzistavimą tu net nežinojai, gali padaryti tavo paties kompiuterį nenaudingu.“
Problemų diagnozavimas ir šalinimas paskirstytoje sistemoje taip pat gali tapti sudėtingu, kadangi analizė reikalauja prisijungti prie nutolusių mazgų arba ištirti ryšius tarp mazgų.
Dauguma skaičiavimo tipų nėra tinkami išskirstytai aplinkai, dažniausiai dėl komunikavimo ir sinchronizavimo tarp mazgų masto. Jei tinklo pralaidumas, gaišties laikas ar komunikacijos reikalavimai yra per daug ryškūs, tuomet paskirstytojo skaičiavimo privalumai gali būti nematomi, o atlikimas gali būti prastesnis nei neišskirstytoje aplinkoje.

Problemos projektuose

Paskirstytojo skaičiavimo projektai gali sugeneruoti rezultatus, kurie jau yra užpatentuoti, net jei generavimo procesas naudoja duomenis iš savanoriškų šaltinių. Tai gali privesti prie nesutarimų, kadangi pramonė pelnosi iš tokių duomenų, kurie gauti pasitelkus savanorius. Be to kai kurie paskirstytieji skaičiavimų projektai (pvz., biologiniai projektai, kurių tikslas suformuoti tūkstančius ar net milijonus bandomųjų molekulių įvairioms medicininėms problemoms spręsti) gali sukurti milžiniškus kiekius neapdorotų duomenų. Tokie duomenys gali būti beverčiai be apdorojimo ar testavimo realaus pasaulio eksperimentais. Tačiau toks apdorojimas ar eksperimentai gali būti labai brangūs ir ilgalaikiai, net trukti dešimtmečius kol visi duomenys bus išanalizuoti. Taigi kol duomenys nėra apdirbti, negalima tikėtis jokios naudos iš skaičiavimo projektų.
Kiti projektai kenčia nuo jų kūrėjų planavimo stokos. Tokie prastai suplanuoti projektai gali neduoti akivaizdžių rezultatų ar nesugeneruoti duomenų, kurie galiausiai būtų pateikti moksliniuose darbuose. Pastebėję, kad projektas nerodo tikėtų rezultatų, projekto valdytojai gali nuspręsti staiga nutraukti projektą negavę jokių rezultatų, taip paversdami visą sunaudotą elektros energiją ir skaičiavimo resursus į bereikšmį darbą. Tokiu atveju savanoriai gali pasijusti nusivylę ir beprasmiškai išnaudoti. Juk visa energija, laikas ir resursai galėjo būti panaudoti kitam projektui, kurį valdytojai geriau suplanavo.
Kita paskirstytojo skaičiavimo projektų problema yra ta, kad jie gali būti nukreipti spręsti problemas, kurios iš esmės yra neišsprendžiamos ar kurias protingiau būtų atidėti ateičiai, kai kompiuterių galimybės bus ženkliai didesnės. Kai kurie projektai gali bandyti panaudoti kompiuterius rasti sprendimams skaičiuodami matematinius ar fizikinius modelius. Tokiuose projektuose iškyla rizika, kad modelis nebuvo tinkamai suprojektuotas, kad sprendimas būtų surastas efektyviai. Paskirstyto skaičiavimo projekto efektyvumas smarkiai priklauso nuo kūrėjų sumanumo.

Lygiagretumas

Paskirstytasis skaičiavimas apima lygiagretumo rūšį. Jis labai susijęs su lygiagrečiu programavimu, o kartais šios dvi sąvokos net neatskiriamos.

Daugiaprocesorinės sistemos

Daugiaprocesorinė sistema yra tiesiog kompiuteris, kuris turi daugiau nei vieną procesorių pagrindinėje plokštėje. Jei operacinės sistema geba išnaudoti šį privalumą, ji gali vykdyti kelis procesus (ar kelias to paties proceso dalis) skirtinguose procesoriuose.

Daugiabranduolinės sistemos

„Intel“ kompanijos procesoriai nuo paskutiniųjų „Pentium 4“ serijos naudojo technologiją vadinamą hipersrautais (angl. Hyperthreading), kuri leido vykdyti daugiau nei vieną proceso giją tame pačiame procesoriuje. Pastarųjų metų gamybos procesoriai turi po keletą branduolių, kas taip pat leidžia vykdyti kelias proceso gijas iš kart.

Keleto kompiuterių sistemos

Multikompiuteriu gali būti laikomas arba lengvai sukabintas NUMA (ang. Non-Uniform Memory Architecture) kompiuteris, arba stipriai sukabintas klasteris. Multikompiuteriai paprastai naudojami tais atvejais, kai reikalinga didelė skaičiavimo galia aplinkoje su ribota fizine vieta ir elektros energija.
Dažniausi pritaikymai yra trimačiuose medicinos vaizdavimo įrenginiuose ir mobiliuose radaruose.

Skaičiavimo sistematika

Paskirstytųjų sistemų tipai yra paremti Flyno sistematika; viena instrukcija, vieni duomenys (SISD), viena instrukcija, keli duomenys (SIMD), daug instrukcijų, vieni duomenys (MISD) ir daug instrukcijų, daug duomenų (MIMD).

Kompiuterių klasteriai

Klasteris susideda iš kelių ar daugelio kompiuterinių mašinų (virtualių arba fizinių) vieningai veikiančių greitame kompiuterių tinkle.
Kompiuterių klasteriai yra trijų tipų: 1) Aukšto skaičiavimų pajėgumo klasteris - šis klasterių tipas paskirsto sakaičiavimo uždavinį klasterio mazgams, ko pasekoje sutrumpinama uždavinio skaičiavimo trukmė. Sėkmingai panaudojamas uždaviniams, kurių apskaičiavimas gali būti lygiagretinamas. 2) Aukšto patikimumo klasteriai - plačiai naudojami duomenų centruose serverinių sistemų patikimumo didinimui, skirstomi į aktyvius ir pasyvius. 3) Tinklo apkrovos balansavimo klasteriai - naudojami didelius duomenų srautus apdorojančiose kompiuterinėse sistemose.
Šių dienų didelės spartos interneto prieigos leidžia klasteriniais ryšiais susaistyti geografiškai atsietas kompiuterines sistemas, o debesų technologiniai sprendimai leidžia skaičiavimo programinę įrangą atskirti nuo techninės įrangos, kas reišgia geografinę laisvę debesų erdvėje.
Paskirstytasis skaičiavimas skiriasi nuo klasterinio skaičiavimo tuo, kad kompiuteriai paskirstytojo skaičiavimo aplinkoje paprastai ne vykdo grupinių užduočių, tuo tarpu klasteriniai kompiuteriai daug labiau susaistyti tarpusavyje. Be to paskirstytos sistemos sudarytos iš geografiškai plačiai paplitusių mašinų.

Skaičiavimas tinklelyje

Tinklelis naudoja daugelio atskirų kompiuterių, sujungtų tinklu (dažniausiai internetu), resursus, kad išspręsti didelės apimties skaičiavimo problemas. Vieši tinkleliai gali išnaudoti tūkstančių kompiuterių neveiklos laiką visame pasaulyje. Tokie sujungimai leidžia tvarkyti tokius duomenų kiekius, kuriems paprastai prireiktų brangių superkompiuterių arba apskritai nebūtų įmanoma apdoroti.

Kalbos

Beveik visos programavimo kalbos, kurios turi visišką priėjimą prie sistemos techninės įrangos, gali susitvarkyti su paskirstytuoju programavimu. Nutolusių procedūrų kreipiniai paskirsto operacinės sistemos komandas per tinklą. Tokios sistemos kaip CORBA, Microsoft DCOM, Java RMI ir kitos bando susieti objektinį projektavimą su tinklu. Lengvai sukabintos sistemos komunikuoja per tarpinius dokumentus, kuriuos paprastai supranta ir žmonės (pvz.: XML, HTML, SGML, EDI).
Specialiai paskirstytajam programavimui pritaikytos kalbos yra šios: Ada, Alef, E, Erlang, Limbo, Oz, ZPL.

Projektai

Pastaraisiais metais atsirado įvairių paskirstytojo skaičiavimo projektų. Dauguma veikia savanoriškom paskatom ir įtraukia vartotojus, aukojančius savo nepanaudotą skaičiavimo galią įdomiems skaičiavimo uždaviniams spręsti. Tokių projektų pavyzdžiai gali būti Stanfordo Universiteto chemijos departamento Folding@home projektas, kuris koncentruojasi ties proteinų junginių simuliacija ieškant vaistų nuo įvairių ligų; “World Community Grid“ projektas siekia sudaryti didžiausią pasaulyje skaičiavimo tinklą, kad galima būtų imtis mokslinių tyrimų, kurie padėtų žmonijai. Šį projektą vykdo ir remia IBM; SETI@home projektas fokusuojamas ties radioteleskopo duomenų analize ieškant sąmoningų signalų iš kosmoso; projektas distributed.net bando „nulaužti“ įvairius kriptografinius šifrus.
Paskirstytojo skaičiavimo projektai dažnai konkuruoja su kitomis paskirstytomis sistemomis. Ši konkurencija galima ir dėl prestižo, ir suvilioti naudotojus prisidėti su savo skaičiavimo pajėgumais prie bendro projekto. Be to yra pateikiama statistika apie paskirstytojo skaičiavimo projekto nuveiktą darbą per paskutinę dieną ar savaitę. Tokie duomenys pasirodo labai naudingi praktikoje, kad visi paskirstytųjų skaičiavimų projektai pateikia savo veiklos statistines analizes, atnaujinamas kasdien ar netgi realiu laiku.
Šios naujos Grid technologijos diegiamos ir Lietuvoje – vykdomi LitGrid ir BalticGrid projektai, kurių tikslas – sukurti lygiagrečiųjų ir paskirstytų tinklų infrastruktūrą ir integruoti ją į intensyviai tobulėjančią Europos Sąjungos šalių Grid infrastruktūrą.
Vykdant šiuos projektus, Lietuvos mokslininkams ir specialistams teikiamos žinios apie lygiagrečiąsias ir paskirstytų skaičiavimų tinklus ir jų galimybes. Tai padės mokslininkams pasiekti labiau pažengusių ES šalių lygį ir paskatins juos įsitraukti į Grid technologijų plėtrą.
2005 m. buvo sukurtas ir įdiegtas Grid naudotojų sertifikatas, kad būtų garantuota duomenų ir tyrimų apsauga. Be to, yra parinkta, įsisavinta ir įdiegta Grid valdymo operacinė programinė įranga, projekto partnerių kompiuteriniai telkiniai įtraukti į LitGRID, turimi telkiniai dirba testiniu režimu, t. y. LitGRID yra funkcionalus jų valdymo lygio atžvilgiu, ir t. t.