Paralelní programování

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Paralelní programování je v informatice označení konceptu, který umožňuje naprogramovat úlohy, které jsou schopny paralelního (souběžného) chodu. 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í. +more 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). +more 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 výpočtů. V případě volně vázaných počítačů je nutné použít jako synchronizační primitivum zasílání zpráv. +more 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.

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ěť. +more 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 zasílání zpráv (POSIX vlákna, OpenMP).

Hlavní klasifikace a paradigmata

Klasifikace paralelních programovacích modelů můžeme rozdělit do dvou částí: interakce procesů a problém dekompozice.

Interakce procesů

Interakce procesů se zabývá problematikou komunikace dvou procesů. Nejpoužívanější formou interakce je sdílená paměť a message passing.

Sdílená paměť

V modelu se sdílenou pamětí, paralelně běžící procesy sdílejí globální adresní prostor, přičemž z něj čtou a zapisují asynchronně. Ovšem tento přístup potřebuje ochranné mechanismy, jako například zamykání paměti. +more Sdílená paměť může být emulována na systémech s distribuovanou pamětí, a může zde být použita neuniformní kontrola paměti.

Message passing

V message passing modelu si paralelní úlohy vyměňují data pomocí posíláním zpráv mezi sebou. Tato komunikace může být synchronní i asynchronní.

Problém dekompozice

Každý paralelní program je složen ze zároveň vykonávajících se procesů. Problém dekompozice se týká způsobu jak tyto procesy definovat.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top