Paralelné programovanie: popis, technológia, úlohy a výhody

Nápady paralelnej výpočtovej techniky a spracovania informácií sú už dlho výsadou špecialistov a relatívne významným problémom z hľadiska implementácie. Získali mimoriadny význam a veľký záujem nie tak dávno. Možno tvrdiť, že rozvoj internetových technológií dal nový impulz a paralelné programovanie získalo nové spotrebiteľské kvality. To vyústilo nielen do zjavného pokroku technológie a programovacích jazykov. Toto skutočne vyvolalo opačný účinok na pochopenie paralelného procesu.


Technológie paralelného programovania sa dramaticky zmenili. Počiatočná aplikácia počítačových zariadení ako výpočtov sa postupne zmenila na ich využitie ako obsluha informácií. Pevné architektonické riešenia uvoľnili priestor pre sémantiku a flexibilnú distribúciu softvérovej funkcie pre "hardvérových exekútorov".

Paralelné výpočty: obsah a implementácia.

Spočiatku základy paralelného programovania boli stanovené v architektúre výpočtových zariadení. Klasifikácia bola navrhnutá na základe pojmu tok. Postupnosť príkazov, údajov, funkčných kompletných sekvenčných algoritmov bola považovaná za objekt, ktorý možno vykonať paralelne s iným podobným objektom.
V tomto prístupe, podstata každého subjektu nebolo spomenuté, ale malá hodnota je rozdelená do paralelnej časti kódu, ktoré môžu byť vykonané nezávisle na sebe, tj vstupu a výstupu každé vlákno sa neprekrývajú dát. Každý prúd nezávisel od tohoz iného vlákna a ak potreboval údaje z iného vlákna, prejde do pohotovostného režimu.


Táto myšlienka viedla k štyrom architektúram:
  • SISD je jednoduchý prúd príkazov a jednoduchý dátový tok;
  • MISD - príkazy s viacerými prúdmi a jednoduchý dátový tok;
  • SIMD je jednoduchý prúd príkazov a viacnásobný tok dát;
  • MIMD je viacrozmerný prúd príkazov a viacnásobný tok dát.
  • Tieto myšlienky existovali pomerne dlho, ale neviedli k špeciálnym účinkom. Dnes je príbeh ťažkého štartu. Ale tento začiatok vytvoril základ pre moderné úspechy.

    Nedostatok architektonického nápadu: nedostatok sémantiky

    Architektúra počítačového systému sa podobne ako výstavba obytnej budovy netýkala sémantiky. Ako obyvatelia domu budú žiť, ktoré môžu robiť opravy a ktoré sa rozhodnú pre inštaláciu nábytku, nikdy sa obáva stavitelia. Aj na samom začiatku paralelného programovacieho systému nedošlo k zmysluplnosti algoritmu, ktorý by musel byť vykonaný. Samotný procesor rozdelil kód a údaje na paralelne vykonané sekcie. To prinieslo výrazné zvýšenie produktivity, ale bol vzrušený predovšetkým:
  • problém rozdelenia pamäte medzi procesy;
  • logika čakania jedného toku výsledkov iného toku;
  • mechanizmus na ochranu pamäte jedného procesu od iného procesu;
  • logika interakcie nezávislých procesorov, jadier;
  • logika prepínania medzi procesmi;
  • výmena údajov "za behu" medzi procesmi
  • Vývojári boli viac zameraní na hardvérové ​​mechanizmy, ktoré boli zbavenéparalelné viacvláknové programovanie má schopnosť mať sémantiku a neumožnilo programátorovi riadiť procesy primerane k úlohe.

    Priemyselná aplikácia rovnobežnosti

    Prvé vymenovanie počítačov: komplexné matematické výpočty, priemyselné aplikácie a všetko, čo sa netýkalo každodenného života, mobility a internetu. Prirodzene, keď sú problémy paralelného programovania tak "obmedzené", je ťažké očakávať zaujímavé úspechy. Keď sa počítače stali masovo vyrábanými produktmi, existovali internetové a mobilné zariadenia, požiadavky na paralelnosť sa dramaticky zmenili a vývojári museli radikálne zmeniť štýl a rýchlosť práce. Prvá vlaštovka bola myšlienkou posielania správ medzi procesmi. Rozhranie pre zasielanie správ MPI, paralelné programovanie, potreby vývojárov a očakávania spotrebiteľov sa stali prechodnou fázou.
    Windows a jej podobné systémy túto myšlienku upevnili a v skutočnosti to urobili ako právnu normu: paralelizmus a zasielanie správ je jedna entita pre akékoľvek multiprocesorové, viacjadrové a v podstate pre akýkoľvek informačný systém.

    Od spracovania údajov po spracovanie informácií

    Výpočet je súkromný prípad spracovania informácií. Z paralelných architektúr implementovaných hardvérom do mobilného softvérového riešenia: paralelné programovacie jazyky sa naozaj stali majetkom histórie. Moderný jazyk poskytuje skutočné paralelné procesy, ale v tomto prípade nemusia mať nevyhnutne špeciálne operátory v syntaxe alebo ďalšieknižnice do jazyka. "Priemyselné" myslenie v programovaní, keď je paralelné viacvláknové programovanie účelom a nie prostriedkami, nebolo dlhé. Na ktoré základné výsledky viedla, je ťažké povedať. Nie je však pochýb o tom, že programovanie, ktoré bolo až do éry programovania na internete, bolo základom vynikajúcich myšlienok a dobrého potenciálu moderných jazykov a nástrojov.

    Hardvérová zložka

    Prvé počítače boli príšery, obsadili štvrtinu futbalového ihriska a vyčlenili toľko tepla, že bolo ľahké vykurovať malú lokalitu a nevynaložili na výstavbu elektrární.
    Ďalšia generácia počítačov - osobná. Osobnosti boli umiestnené na ploche a mobilné telefóny sa mohli nosiť na ramenách. Osobnosti sa rýchlo zmenili a získali moderný vzhľad, dali život notebookom, tabletkám a iným zariadeniam a mobilné telefóny sa zmenili na praktické a multifunkčné smartphony.
    Výrobca elektronických komponentov plne využil myšlienky minulých rokov a paralelné programovanie teraz existuje na akomkoľvek zariadení, bez ohľadu na to, ako odkazuje na tohto alebo toho vývojára softvéru. Počet kľúčových procesorových jadier, počet procesorov, úroveň technológie, paralelnosť a funkčnosť kódu sú dnes rozhodujúce aj pre nezasvätených používateľov.

    Matematický prístroj

    Teória grafov a hromadná údržba ako súkromné ​​varianty, výpočty čiar a kriviek pre vizuálne zobrazenieako základ pre grafické karty, vyústili do jasnej funkčnosti hardvérovej súčasti, ktorá získala stav a kvalitu normy. Môžete hovoriť o počte jadier v procesore zariadenia, ale procesor na zobrazovanie informácií je už dlho jeden a je zapojený do ich podnikania. Grafická karta môže mať nielen jeden procesor a nie jedno jadro, ale matematické zariadenie, ktoré je implantované. Počítačový procesor jednoducho formuluje jednoduché príkazy na zobrazovanie informácií alebo ich vzorkovanie z video pamäte, druhá - obavy z procesora grafických kariet. V skutočnosti matematické výpočty boli od hlavného procesora oddelené matematickým koprocesorom. V súčasnosti je to aj norma vecí. V skutočnosti, s ohľadom na paralelné programovanie v hardware, možno si predstaviť moderné počítače ako súbor paralelných pracovných subsystémov, ktorý dáva vývojárom všetko potrebné k realizácii rôznych myšlienok distribuované a paralelné spracovanie.
    Predpokladá sa, že základné hardvérové ​​zdroje pre akýkoľvek informačný systém sú v perfektnom stave a stabilne sa rozvíjajú. Programátor môže písať iba vysokokvalitný kód.

    Objektovo orientované programovanie

    V klasickom programovaní je algoritmus sekvenciou príkazov. V objektovo-orientovanom programovaní algoritmus rozhodovania je súbor objektov, z ktorých každý má svoje vlastné dáta a metódy.
    Pomocou metód sa objekty navzájom vzájomne vzájomne ovplyvňujú, a teda ako budú vykonávať hardvérová časť počítača(devaysa), programátor má najmenšie obavy. Logika objektovej interakcie je však kompetenciou programátora. Informačný systém založený na objektoch je spravidla systém abstrakcií, ktorý umožňuje rôzne možnosti vytvárania objektov rôznych typov a cieľov. Opísané na úrovni abstrakcií, informačné systémy môžu poskytovať rôzne kombinácie objektov vrátane samotného vytvorenia objektov. Jednoducho povedané, pri objektovo-orientovanom programovaní je ťažké prepojiť vykonanie objektu jadra alebo procesora, aby sa zabezpečilo paralelné vykonávanie. Tým sa podstatne spomalí celý proces. Jeden objekt môže existovať v desiatkach prípadov, ale to neznamená, že by existencia každého z nich mala čakať, keď sa skončí existencia predchádzajúceho.

    Klastre a distribuované paralelné

    Moderné internetové programovanie na riešenie zložitých, jedinečných úloh ponúka jediné možné riešenie: manuálna práca! Pre každodenné a komerčné aplikácie sa používajú početné a rozmanité systémy riadenia stránok. Charakteristická črta internetového programovania:
  • neistota;
  • plurality;
  • simultánnosť.
  • Pri vytváraní stránky programátor (často tím programátorov) nevie, koľko návštevníkov bude musieť akceptovať webový zdroj, ale je isté, že web musí poskytnúť rovnakému klientovi minimálny čas odozvy na akúkoľvek akciu. Zrejmé riešenie je umiestniť miesto na súbor serverov alebo klastrov na teritoriálnej báze a potom bude každý regiónslúžiť konkrétnemu serveru. Moderné stránky však poskytujú nielen informácie, ale aj ich používajú. Napríklad internetový obchod môže predávať vzduch a ak je jeden výrobok zakúpený v Moskve, mal by zmiznúť od spotrebiteľa vo Vladivostoku.
    Make a distribuované spracovanie informácií v skutočnosti znamená zabezpečiť paralelnú prevádzku s rovnakou funkciou na rôznych serveroch pre rôzne skupiny spotrebiteľov, za predpokladu, že spotrebiteľské akcie sú zobrazené v systéme a nie sú v rozpore so sebou. V tomto kontexte nadobúda paralelné programovanie úplne iný význam. Skôr developer dal v rámci tohto mechanizmu uhla hlava pre vykonávanie paralelizmu, nie s odkazom na rovnaký problém, ale teraz developer najmenej obavy, ako boli vykonané paralelne na úroveň zariadení alebo nástrojov, má záujem paralelne na zákazníkov, teda samotného problému rozsahu webe -resursu.

    Cluster prípadne paralelné implementácie

    Predpokladá sa, že zhluk - druh paralelného distribuovaného spracovania. Ide o súbor počítačov pripojených vysokorýchlostnými komunikačnými linkami. Je príznačné, že klaster môže skladať z viacerých počítačov, ktoré môžu byť v rôznych miestach našej planéty, ale z definície klastra - jeden celok. Redakčný systém založený na klastroch neumožňujú priame súčasti riadiacej klastra počítačov, ale poskytujú skrytý paralelné riadenie všetkých procesov vriešená úloha. Vývojár pracujúci s klastrami môže naplánovať a implementovať svoju vlastnú funkciu paralelného distribuovaného spracovania informácií. Ide o veľmi významný pokrok v modernom dizajne.

    "Život" moderného objektu

    Dnes je veľmi ťažké nájsť webový zdroj založený na statických alebo dynamických stránkach, vytvorených úplne. Moderný web je kolekcia dynamických stránok, ktoré sú vyplnené paralelne s technológiou AJAX. Súčasná dynamická stránka sa skladá z iného obsahu, každá strana stránky sa dá stiahnuť nezávisle, v závislosti od správania návštevníka. V tomto kontexte objektovo orientované programovanie ukazuje, že nie celý svoj potenciál je zverejnený. Samozrejme, správanie zákazníka vedie k žiadosti servera o aktualizáciu časti stránky. Požiadavka je spracovaná, vytvára sa množstvo objektov, server pošle výsledok späť. Ďalšou požiadavkou je opäť hmotnosť objektov, výsledok sa opäť vráti. V skutočnosti sa ukazuje, že s moderným prístupom server "nepamätá" čo, kedy a kde poslal. Pri každej liečbe opakuje minimálne potrebné kroky, vytvára rovnaké systémové objekty.
    Programátor nemôže zmeniť logiku servera, ale môže ľahko emulovať svoj vlastný server na svojej fyzickej úrovni. Vytvorí sa úplne nová kvalita distribuovaného paralelného spracovania informácií. Vlastný server udrží požadovaný systém objektov v aktuálnom stave, čo výrazne urýchli spracovanie žiadostí z jednej stránky a zo všetkých stránok,otvoriť všetok webový priestor pre konkrétny webový zdroj.

    Súvisiace publikácie