Mis on hajutatud programmeerimine?

Hajutatud programmeerimine on üks paralleelprogrammeerimise või paralleelarvutuse vorme. Paralleelne programmeerimine hõlmab arvuteid ja arvutites olevaid arvutusseadmeid, mis töötavad samaaegselt teatud probleemiga, näiteks homse ilma ennustamisega. Arvutusüksused võivad asuda väga lähedal ja koordineerida või asuda üksteisest eemal. Kui arvutusüksused on üksteisest eemal, nimetatakse seda hajutatud programmeerimiseks. Sellise stsenaariumi korral erinevad arvutusüksused väga sageli üksteisest ning erinevad ka operatsioonisüsteem ja võrgu seadistus, muutes arvutustegevuse programmeerimise eriti keeruliseks.

Probleemi hajutatud lahendamisel tuleb programm osadeks jagada, et programmi osad saaksid töötada erinevatel arvutusüksustel; neid osi nimetatakse sageli “protsessideks”. Protsessid töötavad samaaegselt, kuid peavad üksteisele edastama sisendeid ja tulemusi. Kui protsessid töötavad erineval riistvaral, näiteks üks osa töötab Intelil ja teine ​​SUNil, siis tuleb programme erinevalt kompileerida ja optimeerida.

Üks viis piisavalt keerulise probleemi lahendamiseks on sisendosade tükeldamine ja lasta erinevatel arvutusüksustel töötada erinevatel osadel, kasutades sama algoritmi, reeglite komplekti või probleemide lahendamise etappe. Näiteks 10,000 1,000 paarilise genoomi purustamiseks võib esimesed 1,000 paari määrata esimesele arvutusüksusele, teised XNUMX paari teisele arvutusüksusele ja nii edasi, kõik sama algoritmi abil. Hajutatud programmeerimise puhul on üheks eeliseks see, et erinevad arvutusüksused võivad sama probleemi lahendamiseks käivitada erinevaid algoritme, mis toob kaasa oluliselt parema lahenduse. See sarnaneb pusle lahendamisega, kui mõned inimesed panevad äärise kokku, teised aga teatud värvi tükke.

Hajutatud andmetöötlusprotsesside koordineerimine võib olla eriti keeruline ülesanne. Mõned arvutusüksused võivad ebaõnnestuda või muu tööga toime tulla. Sisendeid või arvutustulemusi sisaldavad sõnumid ei pruugi sihtkohta jõuda. Kui programmid on kirjutatud naiivselt, võib arvutusüksuse või mõne teate kadumine põhjustada kogu arvutikomplekti hangumise.

Hajutatud programmeerimise puhul võib üks protsess olla juhtimisprotsess, mis sisuliselt saab teiste protsesside töö ära teha, või kõik protsessid võivad töötada peer-to-peer viisil, ilma et ükski protsess oleks “meister”. Mõned näited hajutatud programmeerimisega proovitud probleemidest hõlmavad geoloogiliste andmete analüüsimist ressursside, nagu nafta, valkude ja bioloogiliste molekulide modelleerimine, kodeeritud sõnumite purustamine ja sõjalised simulatsioonid. SETI projekt, mille eesmärk on otsida Maale vastuvõetud raadiosõnumitest intelligentset maavälist elu, on võib-olla üks tuntumaid näiteid.