/ / Paralelinis programavimas: aprašymas, technologijos, užduotys ir nauda

Paralelinis programavimas: aprašymas, technologijos, uždaviniai ir privalumai

Analogiško skaičiavimo ir apdorojimo idėjosinformacija ilgą laiką buvo daug specialistų ir gana didelė problema įgyvendinant. Jie įgijo ypatingą reikšmę ir masinį susidomėjimą ne taip seniai.

Galima teigti, kad interneto technologijų plėtra suteikė naują postūmį ir lygiagretus programavimas įgavo naujų vartotojų savybių. Tai sukėlė ne tik akivaizdų technologijų ir programavimo kalbų pažangą. Tai iš tikrųjų sukėlė lygiagretaus proceso supratimo atvirkštinį poveikį.

lygiagretus programavimas

Lygiagretės programavimo technologijoskardinaliai pasikeitė. Pradinis kompiuterinių prietaisų, naudojamų kaip skaičiuotuvai, taikymas sklandžiai perėjo prie jų naudojimo kaip informacijos tvarkytojai. Tvirti architektūros sprendimai pakeitė semantiką ir lankstų programinės įrangos funkcionalumo paskirstymą "aparatūros vykdytojams".

Lygiagretūs skaičiavimai: prasmė ir įgyvendinimas

Iš pradžių skaičiavimo įrenginių architektūra buvo paralelinio programavimo pagrindai. Siūloma klasifikacija, pagrįsta srauto sąvoka.

Komandų, duomenų, funkciniu požiūriu užbaigtų nuoseklių algoritmų seka buvo laikoma objektu, kuris gali būti vykdomas lygiagrečiai su kitu panašiu objektu.

lygiagretaus programavimo technologijos

Šiuo požiūriu kiekvieno objekto esmė nėraturėjo vertę, bet tai reikštų tokį suskaidymą į lygiagrečias kodo dalis, kurios galėtų būti vykdomos nepriklausomai, ty kiekvieno sriegio įvesties ir išvesties duomenys nesutrūko. Kiekvienas sriegis nebuvo priklausomas nuo kito srovės, o jei jam reikalingi duomenys iš kito srovės, jis pateko į budėjimo režimą.

Ši idėja paskatino keturias architektūras:

  • SISD - paprastas komandų srautas ir paprastas duomenų srautas;
  • MISD - kelių komandų srautas ir paprastas duomenų srautas;
  • SIMD - paprastas komandų srautas ir kelių duomenų srautas;
  • MIMD - daugiaformatis komandų srautas ir keli duomenų srautai.

Šios idėjos egzistavo palyginti ilgą laiką, tačiau nesukėlė ypatingų padarinių. Šiandien sunki istorija. Bet šis pradžia sukūrė šiuolaikinių pasiekimų pagrindą.

Architektūros idėjos apačia: semantikos stygius

Kaip ir gyvenamasis pastatas, architektūraKompiuterinė sistema nesusijusi su semantiką. Kaip nuomininkai gyvens pastatuose, kokius remontus jie gali padaryti ir kokie baldai bus nuspręsti, niekada neramino statybininkai.

Pačioje lygiagrečios sistemos pradžiojeprogramavimas taip pat nesuteikė svarbos algoritmui, kuris turėtų būti įvykdytas. Procesorius pats atskyrė kodą ir duomenis į lygiagrečiai vykdomus skyrius. Tai gerokai padidino našumą, tačiau ypač susirūpino:

  • atminties pasidalijimo tarp procesų problema;
  • logika laukia vieno srauto darbo rezultatų kito pokalbio;
  • vieno proceso atminties nuo kito proceso atminties mechanizmas;
  • nepriklausomų procesorių, branduolių sąveikos logika;
  • perjungimo tarp procesų logika;
  • keitimasis duomenimis "kelyje" tarp procesų ...

Kūrėjai daugiau dėmesio skyrė aparatinei įrangaimechanizmai, kurie atimdavo lygiagrečią multithreaded programavimo galimybę semantikai ir neleido programuotojui valdyti procesus tinkamai išspręsti užduotį.

Pramoninis paralelizmo taikymas

Pirmasis kompiuterių tikslas: sudėtingus matematinius skaičiavimus, pramoninius pritaikymus ir viską, kas nesusiję su kasdieniu gyvenimu, mobilumu ir internetu. Žinoma, kai lygiagretaus programavimo užduotys yra tokios "ribotos", sunku tikėtis įdomių pasiekimų.

Kai kompiuteriai tapo masės produktuprograma, internetas ir mobilieji prietaisai, paralelizmo reikalavimai labai pasikeitė, o kūrėjai turėjo radikaliai pakeisti stilių ir darbo greitį.

Pirmasis nuryti buvo pranešimų idėjatarp procesų. MPI pranešimų perdavimo sąsaja, lygiagretusis programavimas, kūrėjo poreikiai ir klientų lūkesčiai tapo tarpiniu žingsniu.

lygiagrečios programavimo sistemos

"Windows" ir panašios sistemos ištaisė šią idėją ir iš tikrųjų padarė ją įstatymų norma: paraleliškumas ir pranešimai yra vienas už kiekvieną multiprocesorius, multi-core, o iš esmės - bet kuriai informacinei sistemai.

Nuo skaičiavimo iki informacijos apdorojimo

Skaičiavimai yra ypatingas apdorojimo atvejisinformacija. Iš lygiagrečių architektūrų, įdiegtų aparatūros ir mobiliųjų programinės įrangos sprendimais: lygiagretaus programavimo kalbos tikrai tapo istorijos nuosavybe. Šiuolaikinė kalba užtikrina tikrą procesų paralelumą, tačiau tam nereikia turėti specialių sintaksės operatorių ar papildomų bibliotekų kalbai.

"Pramoninis" mąstymas programuojant, kadalygiagretus daugelio sriegių programavimas yra tikslas, o ne priemonė, trunka ilgai. Sunku pasakyti, kokius esminius rezultatus jis veda. Tačiau nėra jokių abejonių, kad programavimas tai buvo prieš interneto programavimo eros, tapo gerų idėjų ir geros potencialo šiuolaikinių kalbų ir įrankių pagrindas.

Aparatūros komponentas

Pirmieji kompiuteriai buvo monstras, užėmę ketvirtadalį futbolo aikštelės ir tiekiantys tiek daug šilumos, kad galėtumėte saugiai šildyti mažą miestelį, o ne išleisti pinigus statyti elektrines.

Naujos kartos kompiuteriai yra asmeniniai. Personalas buvo dedamas ant stalo, o mobilieji telefonai galėjo būti dėvimi ant peties. Personalas greitai pasikeitė ir įgijo šiuolaikišką išvaizdą, davė gyvybę nešiojamiesiems kompiuteriams, planšetiniams kompiuteriams ir kitiems įrenginiams, o mobilieji telefonai tapo patogiais daugiafunkciniais išmaniaisiais telefonais.

lygiagrečios programavimo kalbos

Visų elektroninių komponentų gamintojasgalia susijusi su praeities idėjomis, o lygiagretusis programavimas dabar egzistuoja bet kuriame įrenginyje, neatsižvelgiant į tai, kaip jis susijęs su konkrečiu programinės įrangos kūrėju.

Šiandien procesoriaus branduolių skaičius, procesorių skaičius, technologijų lygis, lygiagretusis ir kodo funkcionalumas yra kritinis netgi nenukrypstantam vartotojui.

Matematiniai aparatai

Grafų teorija ir eilėraštis, kaipAsmeniniai variantai, tiesioginiai ir kreivių skaičiavimai vizualiai informacijos rodymui, kaip vaizdo plokštės pagrindui, nustatė aiškią aparatinės įrangos komponento funkciją, kuri įgijo standarto statusą ir kokybę.

Galite kalbėti apie procesoriaus branduolių skaičiųprietaisas, bet informacijos apdorojimo procesorius jau seniai yra vienas ir vykdo savo verslą. Vaizdo plokštė gali turėti daugiau nei vieną procesorių, o ne vieną branduolį, tačiau jame implantuojamas matematinis įrenginys.

Kompiuterio procesorius formuluoja paprastas komandas informacijos rodymui arba ištraukimui iš vaizdo atminties, o likusi dalis yra vaizdo plokštės procesoriaus priežiūra.

Tiesą sakant, matematiniai skaičiavimai jau seniai izoliuoti nuo pagrindinio procesoriaus matematiniame kopprocesoriuje. Tai taip pat yra dalykų norma.

Tiesą sakant, atsižvelgiant į lygiagretumąprogramavimo aparatūros lygiu galite įsivaizduoti šiuolaikinį kompiuterį kaip lygiagrečių posistemių rinkinį, kuris teikia kūrėjui viską, ko reikia, kad būtų įgyvendintos įvairios idėjos dėl platinto ir lygiagrečios informacijos apdorojimo.

lygiagretaus programavimo pagrindai

Visuotinai pripažįstama, kad pagrindinė įrangabet kokios informacinės sistemos ištekliai yra geros būklės ir stabiliai vystomi. Programuotojas gali rašyti tik kokybės kodą.

Objektinis programavimas

Su klasikiniu programavimu, algoritmassprendimai - komandų seka. Objektinis programavimas, sprendimo algoritmas yra objektų rinkinys, kurio kiekvienas turi savo duomenis ir jo metodus.

mpi lygiagretus programavimas

Per metodus objektai sąveikaujasu draugu, taigi, kadangi jie bus vykdomi kompiuterio (įrenginio) aparatūros, programuotojas labiausiai rūpinasi. Tačiau objektų sąveikos logika yra sfera kompetencija programuotojas.

Objekte pastatyta informacinė sistemakaip taisyklė, tai yra tam tikra abstrakčių sistema, leidžianti skirtingus įvairių tipų ir tikslų objektų kūrimo variantus. Apibūdinant abstrakcijos lygį, informacinės sistemos gali teikti įvairius objektų derinius, įskaitant pastarųjų kūrimą patys.

Paprasčiau tariant, objektyviai orientuotaprogramavimas sunku susieti objekto vykdymą su branduoliu ar procesoriumi, kad būtų užtikrintas jo lygiagretus vykdymas. Tai labai sulėtins visą procesą. Vienas iš dešimties objektų gali egzistuoti kopijos, tačiau tai nereiškia, kad visi turi laukti, kol bus baigtas ankstesnis.

Klasteriai ir paskirstyta paralelizacija

Modernus interneto programavimas sprendžiantkompleksiniai ir unikalūs uždaviniai yra vienintelis sprendimas: rankinis darbas! Kasdieniam ir komerciniam naudojimui naudojamos įvairios svetainių valdymo sistemos.

Būdingas interneto programavimo bruožas:

  • netikrumas;
  • plurality;
  • vienalaikiškumas.

Sukūrę svetainę, programuotojas (dažniau komandaprogramuotojai) nežino, kiek lankytojų reikės gauti internetinį šaltinį, tačiau tikrai žino, kad visi klientai turi užtikrinti tą patį ir minimalų atsakymo laiką bet kokiam veiksmui.

Akivaizdus sprendimas: Vietos įdėjimas į serverių rinkinius arba grupes teritoriniu pagrindu, tada kiekvienas regionas bus naudojamas tam tikram serveriui. Tačiau šiuolaikinė svetainė ne tik teikia informaciją, bet ir ją naudoja. Pavyzdžiui, internetinė parduotuvė negali parduoti oro, o jei vienas produktas buvo įsigytas Maskvoje, jis turėtų išnykti iš Vladivostoko vartotojo sandėlio.

lygiagretės programavimo uždaviniai

Padarykite platintą informacijos apdorojimąiš tikrųjų reiškia, kad įvairioms vartotojų grupėms lygiagrečiai veikiant skirtingų serverių tą pačią funkciją, jei vartotojų veiksmai atsispindi sistemoje ir neprieštarauja vienas kitam.

Atsižvelgiant į tai, lygiagretus programavimasima visiškai kitokią prasmę. Jei anksčiau kūrėjas orientuota į realizavimo lygiagretumo mechanizmas be turint omenyje pačią užduotį, bet dabar užsakovas yra mažiau tikėtina, susirūpinę, kaip įgyvendinti lygiagrečiai tuo įrangos ar įrankiu lygio, jis yra suinteresuotas lygiagretumo su klientų lygiu, tai yra pati problema, labai apimtis internete - šaltinis.

Cluster kaip lygiagretaus įgyvendinimo variantas

Visuotinai pripažįstama, kad klasteris yra platinamas lygiagretus informacijos apdorojimas. Tai yra kompiuterių, prijungtų greitųjų ryšių linijomis, rinkinys.

Būdinga tai, kad klasteris gali susidėtiįvairūs kompiuteriai, kurie gali būti skirtingose ​​planetos vietose, bet pagal apibrėžimą: klasteris yra viena visa. Turinio valdymo sistemos, pagrįstos klasteriais, neleidžia tiesiogiai valdyti klasterių kompiuterių, bet jie užtikrina latentinę lygiagrečią visų procesų kontrolę sprendžiamos užduotys lygmeniu.

Kūrėjas, dirbantis su grupėmis, gali planuoti ir įgyvendinti savo lygiagrečiai lygiagrečiai apdorojimo funkciją. Tai yra labai didelė pažanga šiuolaikinėje plėtroje.

Šiuolaikinio objekto "gyvenimas"

Šiandien labai sunku rasti žiniatinklio ištekliųant statinių ar dinaminių puslapių, visiškai suformuotas. Moderni svetainė - tai dinamiškų puslapių rinkinys, kuris užpildomas lygiagrečiai naudojant AJAX technologiją.

Sukurtas modernus dinaminis puslapisskirtingas turinys, kiekviena puslapio dalis gali būti atsisiunčiama atskirai, priklausomai nuo lankytojo elgesio. Šiame kontekste objektyvusis programavimas rodo, kad ne visi jo potencialai yra atskleisti.

Iš tiesų, kliento elgesys veda priepaprašykite serverio atnaujinti dalį puslapio. Užklausa apdorojama, sukuriama daug objektų, serveris siunčia rezultatą atgal. Kitas užklausa ... dar kartą objektų masė, dar kartą rezultatas siunčiamas. Iš tiesų paaiškėja, kad esant dabartiniam požiūriu, serveris "nepamenu", ką, kada ir kur jis išsiųstas. Kiekviename pokalbyje jis pakartoja minimalius reikalingus veiksmus, sukuria visas tas pačias objektų sistemas.

lygiagrečiai daugiakryptis programavimas

Programuotojas negali pakeisti darbo logikosserveris, bet jis gali lengvai imti savo serverį prieinamu fiziniu lygmeniu. Gauta visiškai nauja platintojo lygiagrečios informacijos apdorojimo kokybė.

Nuosavas serveris išlaikys jums reikalingą sistemąobjektus atnaujintoje valstybės, kurios labai paspartinti prašymų tiek viename puslapyje ir visuose puslapiuose, kurie yra atviri aplink interneto erdvėje už tam tikrą interneto išteklių tvarkymą.</ span </ p>

Skaityti daugiau: