Vzporedno programiranje: opis, tehnologija, naloge in prednosti
Zamisli o vzporednem računanju in obdelavi podatkov so že dolgo obstajale veliko strokovnjakov in pomemben problem v smislu izvajanja. Še davno so pridobili poseben pomen in množični interes.
Vsebina
- Vzporedni izračuni: pomen in izvedba
- Dno arhitekturne ideje: pomanjkanje semantike
- Industrijska uporaba vzporednosti
- Od računanja do obdelave informacij
- Komponenta strojne opreme
- Matematični aparati
- Objektno programiranje
- Grozdi in porazdeljeni paralelizem
- Grozd, kot različica vzporednega izvajanja
- "Življenje" sodobnega predmeta
Lahko trdimo, da je razvoj internetnih tehnologij dal nov zagon, vzporedno programiranje pa je pridobilo nove potrošniške lastnosti. To je povzročilo ne le očiten napredek tehnologij in programskih jezikov. To je resnično ustvarilo povratni učinek na razumevanje vzporednega procesa.
Tehnologije vzporednega programiranja so se radikalno spremenile. Prvotna uporaba računalniških naprav kot kalkulatorji se je nemoteno preusmerila na njihovo uporabo kot obdelovalce informacij. Trdne arhitekturne rešitve so omogočile semantiko in prilagodljivo porazdelitev funkcionalnosti programske opreme za "izvajalce strojne opreme".
Vzporedni izračuni: pomen in izvedba
Sprva so osnove vzporednega programiranja postavili v arhitekturo računalniških naprav. Predlagana je bila klasifikacija, ki temelji na pojmu pretoka.
Zaporedje ukazov, podatkov, funkcionalno popolnih zaporednih algoritmov je veljalo za objekt, ki se lahko izvaja vzporedno z drugim podobnim objektom.
Pri tem pristopu je vsak subjekt, objekt ni pomembno, vendar je prišlo do particije vrednost v vzporedne dele kode, ki se lahko izvajajo neodvisno, tj podatki o vhodnih in izhodnih vsake tok ne sekata. Vsaka nit ni bila odvisna od druge niti, in če so potrebovali podatke iz druge niti, je šel v stanje pripravljenosti.
Ta ideja je privedla do štirih arhitektur:
- SISD - preprost ukazni tok in preprost pretok podatkov;
- MISD - več ukazni tok in preprost pretok podatkov;
- SIMD - enostaven ukazni tok in več podatkovni tok;
- MIMD - multivariatni ukazni tok in več podatkovni tok.
Te zamisli so obstajale relativno dolgo, vendar niso povzročile posebnih učinkov. Danes je težka zgodba. Toda ta začetek je ustvaril temelje za sodobne dosežke.
Dno arhitekturne ideje: pomanjkanje semantike
Tako kot gradnja stanovanjske stavbe, računalniška arhitektura se ne nanaša na semantiko. Kako bodo stanovalci živeli v stavbi, kakšne popravke lahko naredijo in kaj se bo odločil o pohištvu, nikoli niso skrbeli za graditelje.
Na samem začetku vzporednega programskega sistema niso prav tako pripisovali pomembnosti algoritmu, ki bi ga bilo treba izvesti. Procesor je ločil kodo in podatke v odseke, ki so delovali vzporedno. To je občutno povečalo produktivnost, a je zaskrbljeno zlasti:
- problem delitve spomina med procesi;
- logika pričakovanja en potok delovanje druge nitke;
- mehanizem za zaščito spomina enega procesa iz drugega procesa;
- logika interakcije neodvisnih procesorjev, jeder;
- logika prehoda med procesi;
- izmenjava podatkov "na letenju" med procesi ...
Razvijalci so se bolj osredotočili na mehanizme strojne opreme, kar je odvzelo vzporedno večnitno programiranje zmožnosti za semantiko in programterju ni dovoljevalo, da bi procese ustrezno rešil problem.
Industrijska uporaba vzporednosti
Prvi namen računalnikov: kompleksni matematični izračuni, industrijske aplikacije in vse, kar ne zadeva vsakdanjega življenja, mobilnosti in interneta. Seveda, ko so naloge vzporednega programiranja tako "omejene", je težko pričakovati zanimive dosežke.
Ko so računalniki postali izdelki množične uporabe, so se pojavili internetni in mobilni aparati, zahteve za paralelizem so se dramatično spremenile in razvijalci so morali korenito spremeniti slog in hitrost dela.
Prva požara je bila ideja o sporočanju med procesi. Vmesni korak vmesnika MPI, vzporedno programiranje, potrebe razvijalcev in pričakovanja strank so postali vmesni korak.
Windows in podobni sistemi so to idejo uredili in dejansko postali zakonodajna norma: paralelizem in sporočanje sta ena za vsako večprocesor, multi-core, in v bistvu - za kateri koli informacijski sistem.
Od računanja do obdelave informacij
Izračuni so poseben primer obdelave informacij. Iz vzporednih arhitektur, ki se v strojni opremi uporabljajo za mobilne programske rešitve: jeziki vzporednega programiranja so resnično postali lastnost zgodovine. Sodobni jezik zagotavlja resnično vzporednost procesov, vendar za to ni nujno, da imajo posebni operaterji v sintaksi ali dodatne knjižnice v jezik.
"Industrijsko" razmišljanje pri programiranju, kadar je vzporedno večnitno programiranje cilj, ne sredstvo, ni trajalo dolgo. Težko je povedati, katere temeljne rezultate vodi. Vendar pa ni nobenega dvoma, da je programiranje, ki je bilo pred obdobjem internetnega programiranja, postalo osnova za odlične ideje in dober potencial sodobnih jezikov in orodij.
Komponenta strojne opreme
Prvi računalniki so bili pošasti, zasedli četrtino nogometnega igrišča in dodelili toliko toplote, da bi lahko varno ogrevali majhno mesto, namesto da bi porabili denar za gradnjo elektrarn.
Naslednja generacija računalnikov je osebna. Osebje je bilo nameščeno na namizju, mobilne telefone pa so lahko nosili na rami. Osebje se je hitro spremenilo in pridobilo sodoben videz, dal življenje prenosnim računalnikom, tabličnim računalnikom in drugim napravam ter mobilne telefone spremenil v priročne večfunkcijske pametne telefone.
Proizvajalec elektronskih komponent v celoti uporablja ideje iz preteklih let, vzporedno programiranje pa zdaj obstaja na kateri koli napravi, ne glede na to, kako se nanaša na enega ali drugega razvijalca programske opreme.
Danes je število procesorskih jeder, število procesorjev, raven tehnologije, vzporednost in funkcionalnost kode ključnega pomena celo za nepoštenega uporabnika.
Matematični aparati
Teorija in Queuing graf, kot zasebni variantah izračuni linij in krivulj za vizualni prikaz podatkov, kot osnova za grafično kartico, vodil jasno funkcionalnost strojne komponente, ki je pridobil standard stanja in kakovosti.
Lahko govorite o številu jeder v procesorju naprave, vendar je procesor za prikazovanje informacij že dolgo in je vključen v lastno podjetje. Grafična kartica ima lahko več kot en procesor in ne eno jedro, toda matematična naprava se implantira v to.
Procesor računalnika samo oblikuje preproste ukaze za prikaz informacij ali njihovo pridobivanje iz video pomnilnika, ostalo pa skrb za procesor video kartice.
Pravzaprav so matematični izračuni že dolgo izolirani iz glavnega procesorja v matematičnem koprocesorju. Zdaj je to tudi norma stvari.
Dejstvo je, glede na vzporedno programiranje na ravni strojne opreme, je mogoče zamisliti sodobnega računalnika kot niz vzporednega obratovanja podsistema, ki omogoča razvijalcem z vsem, kar je potrebno za izvajanje različnih idej porazdeljeno in vzporedno obdelavo.
Na splošno velja, da so temeljni viri strojne opreme za kateri koli informacijski sistem v idealnem stanju in se stalno razvijajo. Programator lahko napiše samo kodo kakovosti.
Objektno programiranje
S klasičnim programiranjem je odločitveni algoritem zaporedje ukazov. Kdaj objektno orientirano programiranje odločitveni algoritem je zbirka predmetov, od katerih ima vsaka svoje podatke in metode.
S pomočjo metod se objekti medsebojno komunicirajo in zato, kako jih bo strojna oprema računalnika (naprave) izvedla, programer najmanj zanima. Vendar pa je logika interakcije med predmeti kroglapristojnosti programer.
Informacijski sistem, zgrajen na predmetih, je praviloma določen sistem abstrakcije, ki omogoča različne različice ustvarjanja predmetov različnih vrst in namenov. Informacijski sistemi, ki so opisani na ravni abstrakcije, lahko zagotovijo različne kombinacije predmetov, vključno z ustvarjanjem slednjih zase.
Preprosto rečeno, s ciljno usmerjenim programiranjem je težko povezati izvajanje predmeta z jedrom ali procesorjem, da se zagotovi njegovo vzporedno izvedbo. To bo znatno upočasnilo celoten proces. Eden od predmetov lahko obstaja v prvih desetihkopije, Toda to ne pomeni, da mora obstoj vsakega počakati na obstoj prejšnjega.
Grozdi in porazdeljeni paralelizem
Sodobno spletno programiranje za reševanje kompleksnih in edinstvenih problemov 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-
- multiplicity-
- istočasnost.
Ustvarjanje spletne strani programer (običajno ekipa programerjev), ne vem, koliko obiskovalcev bodo morali spletni vir, vendar ne ve zagotovo, da morajo vsi odjemalci zagotoviti enako mesto in minimalni odzivni čas za kakršno koli ukrepanje.
Očitna odločitev: postaviti spletno mesto na niz strežnikov ali grozdov na ozemeljski osnovi, nato pa bo vsaka regija služila določenemu strežniku. Vendar sodobno spletno mesto ne zagotavlja samo informacij, ampak ga tudi uporablja. Spletna trgovina na primer ne more prodajati zraka, in če je bil en izdelek kupljen v Moskvi, bi moral izginiti iz skladišča za potrošnika v Vladivostoku.
Če želite porazdeljeno obdelavo informacij dejansko pomeniti, da zagotovite vzporedno delovanje iste funkcionalnosti na različnih strežnikih za različne skupine potrošnikov, pod pogojem, da se dejanja potrošnikov odražajo v sistemu in ne nasprotujejo drug drugemu.
V tem kontekstu vzporedno programiranje prevzame popolnoma drugačen pomen. Če prej razvijalec osredotoča na mehanizmu realizacije vzporednosti, ne da bi ob upoštevanju naloge sam, zdaj pa je razvijalec je manj verjetno skrbi, kako izvajati vzporedno na ravni opreme ali orodja, ga zanima vzporednosti na ravni stranke, da je sam problem, sam obseg spletu - vir.
Grozd, kot različica vzporednega izvajanja
Na splošno velja, da je skupina nekakšno porazdeljeno vzporedno obdelavo informacij. To je niz računalnikov, ki jih povezujejo hitre komunikacijske linije.
Značilno je, da lahko grozd sestavljajo različni računalniki, ki se lahko nahajajo na različnih mestih na planetu, vendar po definiciji: grozd je ena celota. Sistemi za upravljanje vsebin, ki temeljijo na grozdih, ne omogočajo neposrednega nadzora računalnikov grozdov, temveč nudijo latenten vzporedni nadzor vseh procesov na ravni rešitve.
Razvijalec, ki dela z grozdi, lahko načrtuje in izvaja svoje lastne paralelne vzporedne procesne funkcije. To je zelo pomemben napredek v sodobnem razvoju.
"Življenje" sodobnega predmeta
Danes je zelo težko najti spletni vir, ki temelji na statičnih ali dinamičnih straneh, ki so v celoti oblikovane. Sodobna spletna stran je zbirka dinamičnih strani, ki se vzporedno napolnijo s tehnologijo AJAX.
Moderna dinamična stran je sestavljena iz različnih vsebin, vsak del strani pa je mogoče prenesti neodvisno, odvisno od vedenja obiskovalca. V tem kontekstu objektno usmerjeno programiranje kaže, da ne razkrije vseh njegovih potencialov.
Dejansko obnašanje odjemalca povzroči zahtevo strežniku, da posodobi del strani. Poizvedba se obdeluje, veliko predmetov se ustvari, strežnik pošlje rezultat nazaj. Naslednja poizvedba ... spet maso predmetov, spet rezultat se pošlje. Dejansko se izkaže, da se s trenutnim pristopom strežnik "ne spomni", kaj, kdaj in kje je poslal. Pri vsakem klicu ponovi najmanjše potrebne ukrepe, ustvari vse iste sisteme predmetov.
Programator ne more spremeniti logike strežnika, vendar lahko enostavno posnema svoj strežnik na dostopni fizični ravni. Povsem nova kakovost porazdeljene vzporedne obdelave informacij bo pridobljena.
Lasten strežnik bo obdržal potrebni sistem predmetov v posodobljenem stanju, kar bo znatno pospešilo obdelavo zahtev z ene strani in z vseh strani, odprtih v celotnem internetnem prostoru za določen spletni vir.
- Objektno programiranje
- Modularno programiranje
- Strukturirano programiranje
- Vzporedni uvoz: prednosti in slabosti
- Računalniški sistemi in kompleksi potrebujejo dobre strokovnjake
- Seznam programskih jezikov. Programski jeziki na nizki in visoki ravni
- Kaj je programiranje? Programiranje za začetnike
- Kako se naučiti programiranja iz nič v priljubljenih programskih jezikih
- Informatika. Osnove algoritmizacije in programiranja
- jаvascript: tip - potrebe ali nove funkcije
- Ocena programskih jezikov 2016
- Zgodovina razvoja programskih jezikov: na kratko o vsem
- Izrazit jаvascript: opis funkcij
- Informatika in računalniška oprema
- Naloge sistemskega administratorja
- Kateri programski jezik naj izberem za začetnika za učenje
- Dinamično programiranje, osnovna načela
- Nelinearno programiranje je ena od sestavin matematičnega programiranja
- Metoda Homori. Reševanje problemov celotnega programiranja
- Pomen in uporaba praznega jаvascripta
- Zakaj uporabljati programske jezike na visoki ravni?