Paralelní programování: popis, technologie, úkoly a výhody

Úvahy paralelní výpočty a zpracování informací jsou již dlouhou dobu výsadou specialistů a velmi významný problém z hlediska realizace. Oni získali zvláštní význam a masový zájem ne tak dávno. Pravděpodobně se jedná o vývoj internetových technologií dala nový impuls a paralelní programování získána jako nové spotřebitele. To vedlo nejen k jasnému pokroku v oblasti technologií a programovacích jazyků. To skutečně vyvolalo opačný účinek na pochopení paralelního procesu.


Technologie paralelního programování se dramaticky změnily. Počáteční aplikace počítačových zařízení jako výpočtů se postupně změnila na jejich využití jako obslužné rutiny. Přísná architektonická řešení ustoupily sémantiky a funkčnosti distribuční flexibilní software pro „hardwarových účinkujících.“

Paralelní výpočetní:

Za prvé, základy byly položeny paralelně programovacích architektura výpočetních zařízení obsah a implementace. Klasifikace byla navržena na základě pojmu toku. Sekvence příkazů, dat, funkčně kompletní sekvenčních algoritmů viděn jako objekt, který může být provedeno souběžně s jiným podobným předmětem.
V tomto přístupu, podstata každého subjektu nebylo zmíněno, ale malá hodnota je rozdělena do paralelní části kódu, které mohou být provedeny nezávisle na sobě, tj vstupu a výstupu každé vlákno se nepřekrývají dat. Každý proud na něm nezáleželz jiného podprocesu a pokud potřeboval data z jiného vlákna, přepnul do pohotovostního režimu.


Tento nápad vedl ke čtyřem architekturám:
  • SISD je jednoduchý proud příkazů a jednoduchý datový tok;
  • MISD - vícenásobné proudové příkazy a jednoduchý datový tok;
  • SIMD je jednoduchý proud příkazů a mnohočetný tok dat;
  • MIMD je vícenásobný proud povelů a více toků dat.
  • Tyto myšlenky existovaly poměrně dlouho, ale nevedly k zvláštním účinkům. Dnes je příběh těžkého startu. Tento počátek však vytvořil základ pro moderní úspěchy.

    Nedostatek architektonické myšlenky: nedostatek sémantiky

    Architektura počítačového systému se stejně jako konstrukce obytné budovy netýkala sémantiky. Jak budou žít obyvatelé domu, které mohou opravit a které se rozhodnou instalovat nábytek, nikdy se nestarali o stavitele. Na samém začátku paralelního programovacího systému nedávaly význam algoritmu, který by musel být proveden. Samotný procesor rozdělil kód a data do sekcí, které prováděly paralelně. To přineslo znatelné zvýšení produktivity, ale bylo vzrušeno, zejména:
  • problém alokace paměti mezi procesy;
  • logika čekání jednoho toku výsledků jiného toku;
  • mechanismus pro ochranu paměti jednoho procesu od jiného procesu;
  • logika interakce nezávislých procesorů, jader;
  • logika přechodu mezi procesy;
  • výměna dat "za letu" mezi procesy
  • Vývojáři byli více zaměřeni na hardwarové mechanismy, které byly zbavenyparalelní vícenásobné programování má schopnost mít sémantiku a neumožnilo programátoru řídit procesy odpovídajícím úkolu.

    Průmyslová aplikace paralelismu

    První jmenování počítačů: složité matematické výpočty, průmyslové aplikace a vše, co nebylo relevantní pro každodenní život, mobilitu a internet. Samozřejmě, když jsou problémy paralelního programování tak "omezené", je obtížné očekávat zajímavé úspěchy. Když se počítače staly hromadně vyráběnými produkty, existovaly internetové a mobilní zařízení, požadavky na paralelismus se dramaticky změnily a vývojáři museli radikálně změnit styl a rychlost práce. První vlaštovka byla myšlenka posílání zpráv mezi procesy. Rozhraní pro zasílání zpráv MPI, paralelní programování, potřeby vývojářů a očekávání spotřebitelů se staly přechodnou etapou.
    Systém
    Windows a podobná fixní ideou a vlastně udělal své předpisy: paralelismus a zprávy - jednu jednotku pro všechny s více procesory, multicore, a ve skutečnosti - z jakéhokoli informačního systému.

    Od zpracování po zpracování informací

    Výpočet je soukromý případ zpracování informací. Z paralelních architekturách implementovány v hardwaru pro mobilní softwarových řešení: jazyk paralelního programování skutečně stane součástí historie. Moderní jazyk poskytuje skutečné paralelní procesy, ale pro to nemusí nutně mít speciální operátory v syntaxi nebo dalšíknihoven do jazyka. "Průmyslové" myšlení v programování, když paralelní vícevláknové programování je účel, a ne prostředky, nebylo dlouhé. K jakým zásadním výsledkům došlo, je obtížné říci. Nicméně není pochyb o tom, že programování, které bylo až do doby internetového programování, bylo základem pro vynikající myšlenky a dobrý potenciál moderních jazyků a nástrojů.

    Hardwarová složka

    První počítače byly monstra, obsadily čtvrtinu fotbalového hřiště a přidělily tolik tepla, že bylo snadné ohřát malou lokalitu a ne utrácet na výstavbě elektráren.
    Další generace počítačů - osobní. Osobnosti byly umístěny na pracovní plochu a mobilní telefony se mohly nosit na ramenou. Osobnosti se rychle změnily a získaly moderní vzhled, daly život notebookům, tabletům a dalším zařízením a mobilní telefony se změnily v praktické a multifunkční smartphony.
    Výrobce elektronických součástek plně využil myšlenky minulých let a paralelní programování nyní existuje na jakémkoli zařízení, bez ohledu na to, jak se na něj vztahuje tento nebo ten vývojář softwaru. Počet klíčových procesorových jader, počet procesorů, úroveň technologie, paralelní funkce a funkčnost kódu jsou dnes rozhodující pro uživatele bez znalosti.

    Matematické přístroje

    Teorie grafů a hromadné údržby, jako soukromé varianty, výpočty linií a křivek pro vizuální reprezentaciinformace jako základ pro grafické karty vedly k jasné funkčnosti hardwarové komponenty, která získala status a kvalitu standardu. Můžete mluvit o počtu jader v procesoru zařízení, ale procesor pro zobrazování informací je již dlouho jeden a je zapojen do jejich podnikání. Grafická karta může mít nejen jeden procesor, nikoli jádro, ale matematické zařízení, které je implantováno. Počítačový procesor jednoduše formuluje jednoduché příkazy pro zobrazení informací nebo jejich vzorek z videokamery, druhý - obavy z procesoru grafických karet. Ve skutečnosti matematické výpočty byly odděleny od hlavního procesoru matematickým koprocesorem. V tuto chvíli je to také norma věcí. Ve skutečnosti, s ohledem na paralelní programování v hardware, lze si představit moderní počítače jako soubor paralelních pracovních subsystémů, který dává vývojářům vše potřebné k realizaci různých myšlenek distribuované a paralelní zpracování.
    Předpokládá se, že základní hardwarové prostředky pro jakýkoli informační systém jsou v dokonalém stavu a stabilně se rozvíjejí. Programátor může psát pouze vysoce kvalitní kód.

    Object-Oriented Programming

    V klasickém programování je algoritmus sekvencí příkazů. V objektově orientovaném programování je algoritmus rozhodování množinou objektů, z nichž každá má vlastní data a metody.
    S pomocí metod se objekty vzájemně vzájemně propojují, a tedy jak budou prováděny hardwarovou částí počítače(devaysa), programátor má nejmenší obavy. Logika objektové interakce je však kompetencí programátora. Informační systém založený na objektech je zpravidla systém abstrakcí, který umožňuje různé možnosti vytváření objektů různých typů a cílů. Při popisu na úrovni abstrakcí mohou informační systémy poskytovat různé kombinace objektů, včetně samotného vytvoření těchto objektů. Jednoduše řečeno, při objektově orientovaném programování je obtížné propojit provádění objektu jádra nebo procesoru, aby bylo zajištěno paralelní provádění. Tím se výrazně zpomalí celkový proces. Jeden objekt může existovat v desítkách příkladů, ale to neznamená, že existence každého by měla počkat, až bude existence předchozího dokončena.

    Klastry a distribuované paralelní

    Moderní internetové programování pro řešení komplexních, jedinečných úkolů nabízí jediné možné řešení: manuální práci! Pro každodenní i komerční použití jsou využívány četné a rozmanité systémy řízení webu. Charakteristická vlastnost internetového programování:
  • nejistota;
  • plurality;
  • simultánnost.
  • Při vytváření webu programátor (často tým programátorů) neví, kolik návštěvníků bude muset přijmout webový zdroj, ale s jistotou ví, že web musí poskytnout stejnému klientovi minimální dobu odezvy na jakoukoli akci. Zřejmým řešením je umístit web na soubor serverů nebo klastrů na územní bázi, a pak bude každý regionobsluhovat určitý server. Moderní web však nejen poskytuje informace, ale také ji používá. Například internetový obchod může prodávat vzduch a je-li jeden výrobek zakoupený v Moskvě, měl by zmizet od spotřebitele ve Vladivostoku.
    Make a distribuované zpracování informací ve skutečnosti znamená zajistit paralelní provoz se stejnou funkcí na různých serverech pro různé skupiny spotřebitelů, za předpokladu, že spotřebitelské akce jsou zobrazeny v systému a nejsou v rozporu s sebou. V tomto kontextu získává paralelní programování zcela jiný význam. Dříve developer dal v rámci tohoto mechanismu úhlu hlava pro provádění paralelismu, nikoliv s odkazem na stejný problém, ale nyní developer nejméně obavy, jak byly provedeny paralelně na úroveň zařízení nebo nástrojů, má zájem paralelně na zákazníky, tedy samotného problému rozsahu webu Zdroj

    Cluster popřípadě paralelní implementace

    Předpokládá se, že shluk - druh paralelního distribuovaného zpracování. Jedná se o soubor počítačů připojených vysokorychlostními komunikačními linkami. Je příznačné, že klastr může skládat z více počítačů, které mohou být v různých místech naší planety, ale z definice klastru - jeden celek. Redakční systém založený na clusterech neumožňují přímé součásti řídící clusteru počítačů, ale poskytují skrytý paralelní řízení všech procesů vřešený úkol. Vývojář, pracující s klastry, může naplánovat a implementovat vlastní funkci paralelního distribuovaného zpracování informací. Jedná se o velmi významný pokrok v moderním designu.

    "Život" moderního objektu

    Dnes je velmi obtížné najít webový zdroj založený na statických nebo dynamických stránkách, vytvořených zcela. Moderní web je kolekce dynamických stránek, které jsou vyplněny paralelně s technologií AJAX. Současná dynamická stránka se skládá z odlišného obsahu, přičemž každá stránka stránky může být stažena nezávisle, v závislosti na chování návštěvníka. V tomto kontextu objektově orientované programování ukazuje, že ne všichni jeho potenciál je zveřejněn. Chování zákazníka vede k žádosti serveru o aktualizaci části stránky. Požadavek je zpracován, vytvoří se množství objektů, server odešle výsledek zpět. Dalším požadavkem je opět množství hmoty, výsledek se opět vrátí. Ve skutečnosti se ukazuje, že s moderním přístupem server "nepamatuje" co, kdy a kde poslal. Při každé úpravě opakuje minimální potřebné akce, vytváří všechny stejné objekty systému.
    Programátor nemůže změnit logiku serveru, ale může snadno emulovat svůj vlastní server na své fyzické úrovni. Objeví se zcela nová kvalita distribuovaného paralelního zpracování informací. Vlastní server uchová požadovaný systém objektů v aktuálním stavu, což výrazně urychlí zpracování požadavků z jedné stránky a ze všech stránek,otevřený všem webovým prostorům pro konkrétní webový zdroj.

    Související publikace