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 Kombinace Rizika paralelních výpočtů na soudobých procesorech 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 Procesor využívá prázdné cykly způsobené latencí paměti k vykonávání instrukcí jiného vlákna. 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. Nižší náklady pro koncového uživatele. Nevýhody Víc jader emituje větší zbytkové teplo. Takt jednoho jádra bývá nižší. 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. 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 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