Paralelní programování: Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
Stránka Paralelní programování přemístěna na stránku Paralelní výpočty: Název dle IW a části obsahu
 
Založení článku (přesun části z Paralelní výpočty)
Řádek 1: Řádek 1:
'''Paralelní programování''' je v [[Informatika|informatice]] označení konceptu, který umožňuje [[Programování|naprogramovat]] úlohy, které jsou schopny paralelního (současného) běhu. Paralelní programování je hodnoceno podle toho, jak dobře dokáže různé problémy popsat a jakého výkonu je možné dosáhnout na různých [[Počítačová platforma|počítačových platformách]]. Implementace paralelního programování může být v podobě [[Knihovna (informatika)|knihoven]] pro tradiční sekvenční [[Programovací jazyk|programovací jazyky]], ve formě rozšíření stávajícího programovacího jazyka nebo úplně nový přístup (programovací jazyk).
#PŘESMĚRUJ [[Paralelní výpočty]]

== Rozdíl sekvenčního a paralelního programování ==
Standardní struktura počítačového [[Software|softwaru]] je založena na sekvenčním výpočtu. Při řešení problému, je [[algoritmus]] určený k řešení tohoto problému realizován jako série za sebou následujících [[Strojová instrukce|instrukcí]]. Tyto [[Strojová instrukce|instrukce]] jsou prováděny pomocí [[procesor|CPU]] jednoho počítače. Z toho plyne, že současně může být vykonávána pouze jedna [[Strojová instrukce|instrukce]]. Teprve po vykonání této [[Strojová instrukce|instrukce]] následuje vykonávání další [[Strojová instrukce|instrukce]].
Paralelně programovaný [[software]] využívá možnost rozdělení jednoho velkého výpočetního problému na několik menších problémů, které jsou řešeny „současně“ (resp. na základě [[pseudoparalelismus|pseudoparalelismu]]). Prvky sloužící k paralelnímu zpracování výpočtu mohou být různé. Jedná se například o jeden počítač s [[Víceprocesorový systém|více procesory]], několik počítačů [[Počítačová síť|v síti]], specializovaný [[hardware]] nebo kombinaci těchto prvků.

== Problémy paralelního programování ==
V prostředí paralelního programování je zvláště důležitá synchronizace jednotlivých [[počítač]]ů. V případě volně vázaných počítačů je nutné použít jako [[synchronizační primitivum]] [[fronta (programování)|frontu zpráv]], v případě těsně vázaných počítačů systém často podporuje [[atomicita|atomické]] operace na [[sdílená paměť|sdílené paměti]] a je možné na nich implementovat [[semafor (synchronizace)|semafory]].

Špatné použití synchronizačních primitiv může vést k [[deadlock]]ům, což jsou [[programátorská chyba|programátorské chyby]].

V paralelním programování často nelze spoléhat na fyzické [[hodiny]] – je nutné použít distribuované počítání času, aby bylo možné seřadit přijaté zprávy.

== Software ==
Paralelní [[programovací jazyky]], [[Knihovna (programování)|knihovny]] a [[API]] byly vytvořeny pro programování paralelních počítačů. Tyto [[počítač]]e mohou být rozděleny do několika kategorií, na základě toho jaký používají typ [[Operační paměť|paměti]]: [[sdílená paměť|sdílenou paměť]], [[distribuovaná paměť]] nebo sdílená distribuovaná paměť. [[Program]]y využívající [[sdílená paměť|sdílenou paměť]] komunikují pomocí manipulace s [[proměnná|proměnnými]] ve [[sdílená paměť|sdílené paměti]]. [[Program]]y využívající distribuovanou paměť používají [[metoda|metodu]] [[předávání zpráv]] ([[Vlákno (program)|POSIX vlákna]], [[OpenMP]]).

== Související články ==
* [[Paralelní výpočty]]
* [[Meziprocesová komunikace]] – hraje v paralelním programování velkou roli
* [[Symmetric multiprocessing]] (SMP)
* [[Non-Uniform Memory Access]] (NUMA)
* [[Paralelismus]]

[[de:Parallele Programmierung]]
[[en:Parallel programming model]]
[[lt:Lygiagretusis programavimas]]
[[no:Parallellprogrammering]]
[[pt:Modelo de programação paralela]]
[[ru:Распараллеливание программ]]

Verze z 25. 4. 2011, 17:23

Paralelní programování je v informatice označení konceptu, který umožňuje naprogramovat úlohy, které jsou schopny paralelního (současného) běhu. Paralelní programování je hodnoceno podle toho, jak dobře dokáže různé problémy popsat a jakého výkonu je možné dosáhnout na různých počítačových platformách. Implementace paralelního programování může být v podobě knihoven pro tradiční sekvenční programovací jazyky, ve formě rozšíření stávajícího programovacího jazyka nebo úplně nový přístup (programovací jazyk).

Rozdíl sekvenčního a paralelního programování

Standardní struktura počítačového softwaru je založena na sekvenčním výpočtu. Při řešení problému, je algoritmus určený k řešení tohoto problému realizován jako série za sebou následujících instrukcí. Tyto instrukce jsou prováděny pomocí CPU jednoho počítače. Z toho plyne, že současně může být vykonávána pouze jedna instrukce. Teprve po vykonání této instrukce následuje vykonávání další instrukce.

Paralelně programovaný software využívá možnost rozdělení jednoho velkého výpočetního problému na několik menších problémů, které jsou řešeny „současně“ (resp. na základě pseudoparalelismu). Prvky sloužící k paralelnímu zpracování výpočtu mohou být různé. Jedná se například o jeden počítač s více procesory, několik počítačů v síti, specializovaný hardware nebo kombinaci těchto prvků.

Problémy paralelního programování

V prostředí paralelního programování je zvláště důležitá synchronizace jednotlivých počítačů. V případě volně vázaných počítačů je nutné použít jako synchronizační primitivum frontu zpráv, v případě těsně vázaných počítačů systém často podporuje atomické operace na sdílené paměti a je možné na nich implementovat semafory.

Špatné použití synchronizačních primitiv může vést k deadlockům, což jsou programátorské chyby.

V paralelním programování často nelze spoléhat na fyzické hodiny – je nutné použít distribuované počítání času, aby bylo možné seřadit přijaté zprávy.

Software

Paralelní programovací jazyky, knihovny a API byly vytvořeny pro programování paralelních počítačů. Tyto počítače mohou být rozděleny do několika kategorií, na základě toho jaký používají typ paměti: sdílenou paměť, distribuovaná paměť nebo sdílená distribuovaná paměť. Programy využívající sdílenou paměť komunikují pomocí manipulace s proměnnými ve sdílené paměti. Programy využívající distribuovanou paměť používají metodu předávání zpráv (POSIX vlákna, OpenMP).

Související články