Vzporedno programiranje: opis, tehnologija, naloge in koristi

Zamisli vzporednega računanja in obdelave informacij so že dolgo v pristojnosti strokovnjakov in precej pomemben problem v smislu izvajanja. Posebnega pomena in množičnega zanimanja so pridobili šele pred kratkim. Lahko bi trdili, da je razvoj internetnih tehnologij dal nov zagon, vzporedno programiranje pa je pridobilo nove potrošniške lastnosti. To ni samo posledica očitnega napredka tehnologije in programskih jezikov. To je dejansko povzročilo obraten učinek na razumevanje vzporednega procesa.


Tehnologije vzporednega programiranja so se dramatično spremenile. Začetna uporaba računalniških naprav kot izračunov se je postopoma spremenila v njihovo uporabo kot informatorji. Krute arhitekturne rešitve so zamenjale semantiko in fleksibilno distribucijo programske opreme za "izvajalce strojne opreme".

Vzporedno računalništvo: vsebina in izvajanje

Na začetku so bile v arhitekturi računalniških naprav določene osnove vzporednega programiranja. Predlagana je bila klasifikacija na podlagi pojma pretoka. Zaporedje ukazov, podatkov, funkcionalno popolnih zaporednih algoritmov smo obravnavali kot objekt, ki ga lahko izvedemo vzporedno z drugim podobnim objektom.
S tem pristopom bistvo vsakega predmeta ni bilo smiselno, ampak pomembnost takšne razdelitve v vzporedne odseke kode, ki bi se lahko izvedla neodvisno, tj. Podatki na vhodu in izhodu vsakega toka niso se sekali. Vsak tok ni bil odviseniz druge niti, in če je potreboval podatke iz druge niti, potem se je preklopil v stanje pripravljenosti.


Ta ideja je privedla do štirih arhitektur:
  • SISD je preprost tok ukazov in preprost tok podatkov;
  • MISD - večkratni tokovi ukazov in preprost tok podatkov;
  • SIMD je preprost tok ukazov in množični pretok podatkov;
  • MIMD je multivariatni tok ukazov in množinski pretok podatkov.
  • Te zamisli so obstajale relativno dolgo, vendar niso privedle do posebnih učinkov. Danes je zgodba o težkem začetku. Toda ta začetek je ustvaril temelje za sodobne dosežke.

    Pomanjkanje arhitekturne zamisli: pomanjkanje semantike

    Tako kot gradnja stanovanjske stavbe se arhitektura računalniškega sistema ni nanašala na semantiko. Kako bodo živeli prebivalci v hiši, ki jih lahko popravijo in se odločijo namestiti pohištvo, nikoli niso skrbeli graditelji. Tudi na samem začetku paralelnega programiranja ni bilo smisla algoritma, ki bi ga bilo treba izvesti. Sam procesor je kodo in podatke razdelil na odseke, ki so se izvajali vzporedno. To je prineslo opazno povečanje produktivnosti, vendar je bilo še posebej navdušeno:
  • problem dodelitve pomnilnika med procesi;
  • logika čakanja na en tok rezultatov drugega toka;
  • mehanizem za zaščito spomina enega procesa od drugega procesa;
  • logika interakcije neodvisnih procesorjev, jeder;
  • logika preklapljanja med procesi;
  • izmenjava podatkov "med letenjem" med procesi
  • Razvijalci so bili bolj osredotočeni na strojne mehanizme, ki so bili prikrajšanivzporedno večnitno programiranje ima sposobnost, da ima semantiko in ni dovolilo programerju, da bi ustrezno upravljal procese z nalogo.
    Industrijska uporaba paralelizma
    Prvo imenovanje računalnikov: kompleksni matematični izračuni, industrijske aplikacije in vse, kar ni bilo pomembno za vsakdanje življenje, mobilnost in internet. Seveda, ko so problemi vzporednega programiranja tako "omejeni", je težko pričakovati zanimive dosežke. Ko so računalniki postali masovno proizvedeni, so obstajali internet in mobilne naprave, zahteve za paralelizem so se dramatično spremenile in razvijalci so morali korenito spremeniti slog in hitrost dela. Prva pogoltnitev je bila ideja sporočanja med procesi. Vmesnik MPI, vzporedno programiranje, potrebe razvijalcev in pričakovanja potrošnikov so postali vmesna stopnja.
    Windows in njegovi podobni sistemi so utrdili to zamisel in jo pravzaprav naredili za pravno normo: paralelizem in sporočanje je en sam subjekt za vsak večprocesorski, večjedrni in v bistvu - za kateri koli informacijski sistem.

    Od računalništva do obdelave podatkov

    Izračun je zasebni primer obdelave informacij. Od paralelnih arhitektur, ki jih strojna oprema izvaja do mobilnih programskih rešitev: vzporedni programski jeziki so postali last zgodovine. Sodobni jezik zagotavlja prave vzporedne procese, vendar za to nima nujno posebnih operaterjev v sintaksi ali dodatnemknjižnice v jezik. "Industrijsko" razmišljanje v programiranju, ko je vzporedno večnitno programiranje namen, in ne sredstvo, ni bilo dolgo. Katerim temeljnim rezultatom je to vodilo, je težko reči. Vendar ni dvoma, da je bilo programiranje, ki je trajalo do obdobja internetnega programiranja, osnova za odlične ideje in dober potencial sodobnih jezikov in orodij.

    Strojna komponenta

    Prvi računalniki so bili pošasti, zasedli četrtino nogometnega igrišča in dodelili toliko toplote, da je bilo lahko ogrevati majhno lokacijo in ne porabiti za gradnjo elektrarn.
    Naslednja generacija računalnikov - osebna. Osebnosti so postavili na namizje, mobilne telefone pa bi lahko nosili na ramenih. Osebnosti so se hitro spremenile in dobile sodoben videz, omogočile življenje prenosnim računalnikom, tablicam in drugim napravam, mobilni telefoni pa so postali priročni, večfunkcijski pametni telefoni.
    Proizvajalec elektronskih komponent je v celoti izkoristil zamisli iz preteklih let, vzporedno programiranje pa zdaj obstaja na kateri koli napravi, ne glede na to, kako se nanaša na tega ali tega razvijalca programske opreme. Danes je število procesorskih jeder, število procesorjev, stopnja tehnologije, paralelnost in funkcionalnost kode kritični celo za neuporabljenega uporabnika.

    Matematični aparat

    Teorija vzdrževanja grafov in mas, kot zasebne variante, izračuni linij in krivulj za vizualno predstavitevinformacije, ki so osnova za grafične kartice, so povzročile jasno funkcionalnost komponente strojne opreme, ki je dobila status in kakovost standarda. Lahko govorimo o številu jeder v procesorju naprave, vendar je procesor za prikazovanje informacij že dolgo eden in se ukvarja z njihovim poslovanjem. Grafična kartica ne sme imeti samo enega procesorja in ne enega jedra, ampak matematično napravo, ki jo vsadimo. Računalniški procesor preprosto oblikuje preproste ukaze za prikazovanje informacij ali vzorčenje iz video pomnilnika, drugi - skrb za procesor grafične kartice. Dejansko so matematični izračuni že dolgo ločeni od glavnega procesorja s pomočjo matematičnega koprocesorja. Trenutno je to tudi norma stvari. V bistvu si lahko glede na vzporedno programiranje na ravni strojne opreme predstavljate sodoben računalnik, kot niz vzporedno delujočih podsistemov, ki razvijalcu zagotavlja vse, kar je potrebno za izvajanje porazdeljenih idej in vzporedno obdelavo informacij.
    Domneva se, da so osnovni strojni viri za kateri koli informacijski sistem v popolnem stanju in se stabilno razvijajo. Programer lahko napiše samo visoko kakovostno kodo.

    Objektno usmerjeno programiranje

    Pri klasičnem programiranju je algoritem zaporedje ukazov. V objektno usmerjenem programiranju je algoritem odločanja niz predmetov, od katerih ima vsak svoje podatke in svoje metode.
    S pomočjo metod so objekti medsebojno povezani in s tem, kako jih bo izvajal strojni del računalnika(devaysa), programer skrbi najmanj. Logika objektne interakcije pa je kompetenca programerja. Informacijski sistem, zgrajen na objektih, je praviloma sistem abstrakcij, ki omogoča različne možnosti za ustvarjanje objektov različnih vrst in destinacij. Informacijski sistemi, ki so opisani na ravni abstrakcij, lahko zagotovijo različne kombinacije predmetov, vključno z ustvarjanjem le-teh. Preprosto povedano, če je objektno usmerjeno programiranje težko povezati izvajanje predmeta jedra ali procesorja, da se zagotovi vzporedno izvajanje. To bo znatno upočasnilo celoten proces. En predmet lahko obstaja v desetinah primerov, vendar to ne pomeni, da bi obstoj vsakega moral počakati, ko je obstoj prejšnjega zaključen.

    Grozdi in porazdeljeni vzporedni

    Sodobno programiranje interneta za reševanje kompleksnih, edinstvenih nalog ponuja edino možno rešitev: ročno delo! Za vsakodnevno in komercialno uporabo se uporabljajo številni in raznoliki sistemi za upravljanje mest. Značilnost internetnega programiranja:
  • negotovost;
  • pluralnost;
  • istočasnost.
  • Pri ustvarjanju spletnega mesta programer (pogosto ekipa programerjev) ne ve, koliko obiskovalcev bo moral sprejeti spletni vir, vendar pa zagotovo ve, da mora stran istemu odjemalcu zagotoviti minimalni odzivni čas za vsako dejanje. Očitna rešitev je, da spletno mesto postavite na niz strežnikov ali grozdov na teritorialni osnovi, nato pa bo vsaka regijastrežnika. Vendar sodobna spletna stran ne zagotavlja samo informacij, ampak jo tudi uporablja. Na primer, spletna trgovina ne more trgovati z zrakom in če je bil v Moskvi kupljen en izdelek, bi moral izginiti iz skladišča za potrošnika v Vladivostoku.
    Ustvarjanje porazdeljene obdelave informacij dejansko pomeni zagotavljanje vzporednega dela enake funkcionalnosti na različnih strežnikih za različne skupine potrošnikov, pod pogojem, da so dejanja potrošnikov prikazana v sistemu in si ne nasprotujejo. V tem kontekstu vzporedno programiranje dobi popolnoma drugačen pomen. Če je prej razvijalec postavil mehanizem vzporednosti na vrh vogala, ne da bi upošteval samo nalogo, danes razvijalec manj skrbi, kako se paralelizem uresničuje na ravni opreme ali orodja, zanima ga vzporednost na ravni strank, to je, sama naloga, področje spleta Resource

    Grozd kot možnost za vzporedno izvajanje

    Šteje se, da je grozd neka vrsta porazdeljene vzporedne obdelave informacij. To je niz računalnikov, ki so povezani s hitrimi komunikacijskimi linijami. Značilno je, da lahko grozd sestavljajo različni računalniki, ki se lahko nahajajo na različnih mestih planeta, vendar po definiciji: grozd je ena celota. Sistemi za upravljanje lokacij, ki temeljijo na grozdih, ne omogočajo neposrednega nadzora nad komponentami grozda z računalniki, ampak zagotavljajo skrito, vzporedno upravljanje vseh procesov na ravni.rešena naloga. Razvijalec, ki sodeluje z grozdi, lahko načrtuje in izvaja lastno funkcijo vzporedne porazdeljene obdelave informacij. To je zelo pomemben napredek v sodobnem oblikovanju.

    "Življenje" modernega objekta

    Danes je zelo težko najti spletni vir, ki temelji na statičnih ali dinamičnih straneh, ki so v celoti oblikovani. Sodobno spletno mesto je zbirka dinamičnih strani, ki so zapolnjene vzporedno s tehnologijo AJAX. Trenutna dinamična stran je sestavljena iz različnih vsebin, vsaka stran strani je mogoče prenesti neodvisno, odvisno od obnašanja obiskovalca. V tem kontekstu objektno usmerjeno programiranje kaže, da se ne razkrijejo vsi njegovi potenciali. Obnašanje kupcev vodi do zahteve strežnika za posodobitev dela strani. Zahteva je izdelana, masa objektov je ustvarjena, strežnik pošlje rezultat nazaj. Naslednja zahteva je masa predmetov, rezultat se ponovno vrne. Dejstvo je, da se izkaže, da s sodobnim pristopom, strežnik "ne spomni" kaj, kdaj in kje je poslal. Ob vsaki obdelavi ponovi minimalno potrebno dejanje, ustvari vse iste sistemske objekte.
    Programer ne more spremeniti logike strežnika, vendar lahko na svojem fizičnem nivoju enostavno posnema svoj strežnik. Pojavila se bo popolnoma nova kakovost porazdeljene vzporedne obdelave informacij. Lastni strežnik bo v trenutnem stanju ohranil potreben sistem objektov, kar bo bistveno pospešilo obdelavo zahtevkov z ene strani in iz vseh strani,odprt za ves spletni prostor za določen spletni vir.

    Sorodne publikacije