I IB109 Návrh a implementace paralelních systémů Programování v prostředí se sdílenou pamětí Jiří Barnat HW model prostředí se sdílenou pamětí IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 2/32 HW platformy Paralelní systémy se sdílenou pamětí • Systémy s více procesory • Systémy s více-jadernými procesory • Systémy s procesory se zabudovaným SMT o Kombinace Rizika paralelních výpočtů na soudobých procesorech o Mnohé optimalizace na úrovni procesoru byly navrženy tak, aby zachovávaly sémantiku sekvenčních programů. Pozor zejména na • Přeuspořádání instrukcí • Odložené zápisy do paměti IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 3/32 Simultání multithreading (SMT) Princip 9 Procesor využívá prázdné cykly způsobené latencí paměti k vykonávání instrukcí jiného vlákna. 9 Vyžaduje duplikaci jistých částí procesoru (např. registry). • Vlákna sdílí cache. Příklad: Intel Pentium 4 • Hyper-Threading Technology (HTT) • OS s podporou SMP vidí systém se SMT/HTT jako více procesorový systém. • Až 30% nárůst výkonu, ale vzhledem ke sdílené cache může být rychlost výpočtu jednoho vlákna nižší. IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 4/32 Více-jaderné procesory (multicores] Více plnohodnotných procesorů v jednom chipu. Výhody • Efektivnější cache koherence na nejnižší úrovni. 9 Nižší náklady pro koncového uživatele. Nevýhody o Víc jader emituje větší zbytkové teplo. • Takt jednoho jádra bývá nižší. o Automatické dočasné podtaktování/přetaktování. • Jádra sdílí datovou cestu do paměti. Realita • Více-jádrové procesory se SMT. • Intel Core-i7 (hexa-core se SMT = 12 paralelních jednotek) IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 5/32 Paralelismus v prostředí se sdílenou pamětí Idealizovaný model • Na této úrovni se řeší návrh paralelního algoritmu. • Jednotlivá výpočetní jádra paralelního systému pracují zcela nezávisle. • Přístupy k datům v paměti jsou bezčasové a vzájemně výlučné. • Komunikace úloh probíhá atomicky přes sdílené datové struktury. Realita • Na této úrovni musí programátor řešit technickou realizaci paralelního algoritmu. 9 Přístup do paměti přes sběrnici je pro CPU příliš pomalý. • Registry procesoru a cache paměti - rychlé kopie malého množství dat na různých místech datové cesty. • Problém koherence dat. IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 6/32 Paralelní úlohy v kontextu OS - Procesy a vlákna Procesy • Skrývají před ostatními procesy své výpočetní prostředky. • Pro řešení paralelní úlohy je potřeba mezi-procesová komunikace (IPC). • Sdílené paměťové segmenty, sokety, pojmenované a nepojmenované roury Vlákna o Existují v kontextu jednoho procesu. • V rámci rodičovského procesu sdílí výpočetní prostředky. • Komunikace probíhá přes sdílené datové struktury. • Účelem interakce je spíše synchronizace než transport dat. • Subjekty procedury plánování. IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 7/32 Příklad použití vláken v rámci procesu Vlákno • Realizuje výpočet, tj sekvenci instrukcí. • Každý proces je tvořen alespoň jedním vláknem. • Hlavní vlákno procesu vytváří další vlákna. Příklad 1 for (i=0; i 4.1) • type __sync_val_compare_and_swap (...) • type __sync_fetch_and_add (...) Možnost 3: Součást programovacího jazyka • C++ rev. 11, Java, ... IB109 Návrh a implementace paralelních systémů: Programování v prostředí se sdílenou pamětí str. 32/32