Paralelno programiranje: opis, tehnologija, zadaci i koristi

Ideje paralelnog računanja i obrade informacija dugo su bile povlastice stručnjaka i prilično značajan problem u smislu provedbe. Posebnu važnost i masovni interes stekli su ne tako davno. Može se tvrditi da je razvoj internetskih tehnologija dao novi zamah, a paralelno programiranje steklo je nove potrošačke kvalitete. To je rezultiralo ne samo očiglednim napretkom tehnologije i programskih jezika. To je zapravo dovelo do suprotnog učinka na razumijevanje paralelnog procesa.


Tehnologije paralelnog programiranja dramatično su se promijenile. Početna primjena računalnih uređaja kao računanja postupno se pretvorila u njihovo korištenje kao rukovatelja informacija. Kruta arhitektonska rješenja ustupila su mjesto semantici i fleksibilnoj distribuciji softverske funkcionalnosti za "izvođače hardvera".

Paralelno računanje: sadržaj i implementacija

U početku su se osnove paralelnog programiranja postavljale u arhitekturi računalnih uređaja. Predložena je klasifikacija na temelju pojma tijeka. Redoslijed naredbi, podataka, funkcionalno potpunih sekvencijalnih algoritama smatra se objektom koji se može izvoditi paralelno s drugim sličnim objektom.
S ovim pristupom, suština svakog objekta nije bila smislena, već važnost takve particije u paralelne dijelove koda koji bi se mogli izvoditi neovisno, tj. Podaci na ulazu i izlazu svakog toka nisu se presijecali. Svaki tok nije ovisioiz druge niti, i ako su mu potrebni podaci iz druge niti, zatim se prebacio u stanje pripravnosti.


Ova ideja dovela je do četiri arhitekture:
  • SISD je jednostavna struja naredbi i jednostavan tok podataka;
  • MISD - višestruke strujne naredbe i jednostavan tok podataka;
  • SIMD je jednostavan tok naredbi i množina protoka podataka;
  • MIMD je multivarijatna struja naredbi i množina protoka podataka.
  • Te su ideje postojale relativno dugo, ali nisu dovele do posebnih efekata. Danas je priča o teškom početku. No taj je početak stvorio temelje za moderna dostignuća.

    Nedostatak arhitektonske ideje: nedostatak semantike

    Kao i izgradnja stambene zgrade, arhitektura računalnog sustava nije se odnosila na semantiku. Kako će stanovnici u kući živjeti, što mogu popraviti i odlučiti instalirati namještaj, nikad se nisu brinuli graditelji. I na samom početku paralelnog programiranja sustav nije dao smisao algoritmu koji bi se trebao izvršiti. Sam procesor podijelio je kod i podatke na dijelove koji su se paralelno izvodili. To je dovelo do značajnog povećanja produktivnosti, ali je posebno uzbuđeno:
  • problem dodjele memorije između procesa;
  • logiku čekanja jednog toka rezultata drugog toka;
  • mehanizam za zaštitu memorije jednog procesa od drugog procesa;
  • logika interakcije neovisnih procesora, jezgri;
  • logiku prebacivanja između procesa;
  • razmjena podataka "u letu" između procesa
  • Programeri su se više usredotočili na hardverske mehanizme koji su bili uskraćeniparalelno programiranje s više navoja ima sposobnost da ima semantiku i ne dopušta programeru da adekvatno upravlja procesima zadatka.
    Industrijska primjena paralelizma
    Prvo imenovanje računala: složeni matematički proračuni, industrijske primjene i sve što nije bilo relevantno za svakodnevni život, mobilnost i internet. Naravno, kada su problemi paralelnog programiranja tako "ograničeni", teško je očekivati ​​zanimljiva postignuća. Kada su računala postala masovno proizvedena, postojali su internet i mobilni uređaji, zahtjevi za paralelizmom dramatično su se promijenili, a programeri su morali radikalno promijeniti stil i brzinu rada. Prva lasta je bila ideja razmjene poruka između procesa. MPI sučelje za razmjenu poruka, paralelno programiranje, potrebe programera i očekivanja potrošača postali su srednja faza.
    Windows i njegovi slični sustavi konsolidirali su tu ideju i zapravo je učinili pravnom normom: paralelizam i razmjena poruka je jedinstvena cjelina za svaki višeprocesorski, multi-core i bitno - za bilo koji informacijski sustav.

    Od računalstva do obrade informacija

    Računanje je privatni slučaj obrade informacija. Od paralelnih arhitektura implementiranih hardverom do mobilnih softverskih rješenja: paralelni programski jezici doista su postali vlasništvo povijesti. Suvremeni jezik osigurava stvarne paralelne procese, ali za to ne mora nužno imati posebne operatore u sintaksi ili dodatnimknjižnice za jezik. "Industrijsko" razmišljanje u programiranju, kada je svrha paralelno višestruko programiranje, a ne sredstvo, nije bilo dugo. Na koje temeljne rezultate je vodila, teško je reći. Međutim, nema sumnje da je programiranje, koje je trajalo do razdoblja internetskog programiranja, bilo osnova za izvrsne ideje i dobar potencijal suvremenih jezika i alata.

    Hardverska komponenta

    Prva računala bila su čudovišta, zauzimala četvrtinu nogometnog igrališta i dodjeljivala toliko topline da je bilo lako zagrijavati malo mjesto, a ne trošiti na izgradnju elektrana.
    Sljedeća generacija računala - osobna. Ličnosti su bile postavljene na radnu površinu, a mobiteli su se mogli nositi na ramenima. Ličnosti su se brzo promijenile i stekle moderan izgled, pružile život prijenosnim računalima, tabletima i drugim uređajima, a mobiteli su se pretvorili u praktične, multifunkcionalne pametne telefone.
    Proizvođač elektroničkih komponenata u potpunosti je iskoristio ideje iz prošlih godina, a paralelno programiranje sada postoji na bilo kojem uređaju, bez obzira na to kako se odnosi na tog ili onoga razvojnog inženjera. Danas je broj procesorskih jezgri, broj procesora, razina tehnologije, paralelizam i funkcionalnost koda kritični čak i za neupućenog korisnika.

    Matematički aparat

    Teorija održavanja grafova i masa, kao privatne varijante, proračuni linija i krivulja za vizualni prikazinformacije kao osnova za grafičke kartice, rezultirale su jasnom funkcionalnošću hardverske komponente koja je dobila status i kvalitetu standarda. Možete govoriti o broju jezgri u procesoru uređaja, ali procesor za prikazivanje informacija je dugo bio jedan i bavi se njihovim poslovanjem. Grafička kartica može imati ne samo jedan procesor i ne jednu jezgru, već matematički uređaj koji je ugrađen. Procesor računala jednostavno formulira jednostavne naredbe za prikazivanje informacija ili uzorak iz video memorije, a drugi - za procesor grafičke kartice. Zapravo, matematički proračuni odavno su odvojeni od glavnog procesora matematičkim koprocesorom. U ovom trenutku to je također norma stvari. Zapravo, s obzirom na paralelno programiranje na razini hardvera, možete zamisliti moderno računalo, kao skup paralelnih radnih podsustava, koje developeru pružaju sve što je potrebno za provedbu raznovrsnih ideja distribuiranih i paralelnu obradu informacija.
    Smatra se da su osnovni hardverski resursi bilo kojeg informacijskog sustava u savršenom stanju i stabilno se razvijaju. Programer može napisati samo kvalitetan kod.

    Objektno-orijentirano programiranje

    Kod klasičnog programiranja, algoritam je slijed naredbi. U objektno-orijentiranom programiranju, algoritam odlučivanja je skup objekata, od kojih svaki ima svoje podatke i svoje metode.
    Uz pomoć metoda objekti međusobno djeluju, a time i kako će ih izvršiti hardverski dio računala(devaysa), programer se najmanje brine. Međutim, logika interakcije objekta je kompetencija programera. Informacijski sustav izgrađen na objektima, u pravilu, je sustav apstrakcija, koji omogućuje različite opcije za stvaranje objekata različitih tipova i odredišta. Opisani na razini apstrakcija, informacijski sustavi mogu pružiti različite kombinacije objekata, uključujući i stvaranje potonjih. Jednostavno rečeno, kada je objektno orijentirano programiranje teško povezati izvršenje objekta kernela ili procesora kako bi se osiguralo paralelno izvršenje. To će značajno usporiti cjelokupni proces. Jedan objekt može postojati u desecima primjeraka, ali to ne znači da bi postojanje svakog od njih trebalo čekati kada se dovrši postojanje prethodnog.

    Klasteri i distribuirani paralelni

    Moderno programiranje Interneta za rješavanje složenih, jedinstvenih zadataka nudi jedino moguće rješenje: ručni rad! Za svakodnevnu i komercijalnu primjenu koriste se brojni i raznovrsni sustavi upravljanja mjestima. Karakteristično obilježje internetskog programiranja:
  • nesigurnost;
  • pluralnost;
  • istovremenost.
  • Prilikom izrade web-mjesta, programer (često tim programera) ne zna koliko će posjetitelja morati prihvatiti web-izvor, ali sigurno zna da web-mjesto istom klijentu mora pružiti minimalno vrijeme odgovora za svaku akciju. Očigledno je da se mjesto postavi na skup poslužitelja ili klastera na teritorijalnoj osnovi, a onda će svaka regija bitiposluživanje određenog poslužitelja. No, moderna stranica ne samo da pruža informacije, nego je i koristi. Na primjer, internetska trgovina ne može trgovati zrakom, a ako je jedan proizvod kupljen u Moskvi, trebao bi nestati iz skladišta za potrošača u Vladivostoku.
    Stvaranje distribuirane obrade informacija zapravo znači pružanje paralelnog rada iste funkcionalnosti na različitim poslužiteljima za različite skupine potrošača, pod uvjetom da se radnje potrošača prikazuju u sustavu i da se međusobno ne proturječe. U tom kontekstu, paralelno programiranje dobiva potpuno drugačije značenje. Ako je ranije programer stavio mehanizam paralelizma na vrh ugla, ne vodeći računa o samom zadatku, danas se programer manje brine o tome kako se paralelizam ostvaruje na razini opreme ili alata, zanima ga paralelizam na razini klijenata, odnosno sam zadatak, opseg web -resursu.

    Klaster kao opcija za paralelnu provedbu

    Smatra se da je klaster vrsta distribuirane paralelne obrade informacija. To je skup računala povezanih visokobrzinskim komunikacijskim linijama. Karakteristično je da se klaster može sastojati od različitih računala koja se mogu nalaziti na različitim mjestima na planeti, ali po definiciji: klaster je jedna cjelina. Sustavi upravljanja gradilištima temeljeni na klasteru ne dopuštaju izravnu kontrolu komponenata klastera putem računala, ali oni pružaju skriveno, paralelno upravljanje svim procesima na raziniriješeni zadatak. Programer, radeći s klasterima, može planirati i implementirati svoju funkciju paralelne distribuirane obrade informacija. To je vrlo značajan napredak u modernom dizajnu.

    "Život" suvremenog objekta

    Danas je vrlo teško pronaći web-izvor temeljen na statičkim ili dinamičnim stranicama, koje su u cijelosti oblikovane. Moderna web-lokacija je skup dinamičkih stranica koje su popunjene paralelno s AJAX tehnologijom. Trenutna dinamička stranica sastoji se od različitog sadržaja, svaka stranica stranice može se preuzeti samostalno, ovisno o ponašanju posjetitelja. U tom kontekstu, objektno orijentirano programiranje pokazuje da se ne otkrivaju svi njegovi potencijali. Doista, ponašanje korisnika dovodi do zahtjeva poslužitelja za ažuriranjem dijela stranice. Zahtjev je razrađen, stvorena je masa objekata, poslužitelj šalje rezultat natrag. Sljedeći zahtjev je opet masa objekata, rezultat se ponovno vraća. Zapravo, ispada da uz moderan pristup, poslužitelj "ne sjeća" što, kada i gdje je poslao. Na svakom tretmanu ponavlja minimalne potrebne radnje, stvara sve iste objekte sustava.
    Programer ne može promijeniti logiku poslužitelja, ali može lako emulirati svoj poslužitelj na svojoj fizičkoj razini. Pojavit će se potpuno nova kvaliteta distribuirane paralelne obrade informacija. Vlastiti poslužitelj će zadržati potreban sustav objekata u trenutnom stanju, što će značajno ubrzati obradu zahtjeva s jedne stranice i sa svih stranica,otvoren za sve internetske prostore za određeni web-izvor.

    Povezane publikacije