Paralelní programování

Podobné dokumenty
Paralelní programování

Paralelní programování

Paralelní programování

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Paralelní programování

Paralelní programování

Paralelní programování

Možnosti programování se sdílenými proměnnými. Týden 6 Programování se sdílenými proměnnými (Shared Variables, SV) Procesy a vlákna.

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Pavel Procházka. 3. prosince 2014

PB071 Programování v jazyce C

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

Programování v jazyce C a C++

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Paralelní programování

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Paralelní programování

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Paralelní a distribuované výpočty (B4B36PDV)

ČÁST 1. Základy 32bitového programování ve Windows

Procesy a vlákna - synchronizace

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2.

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Základy programování (IZP)

Principy operačních systémů. Lekce 6: Synchronizace procesů

Operační systémy 2: Zápočtové úkoly

1. Zpracování událostí na pozadí aplikace

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

Operační systémy. Cvičení 3: Programování v C pod Unixem

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

VISUAL BASIC. Přehled témat

Základy programování (IZP)

Linux a vlákna - Linuxové noviny 8-9/1998. Linuxové noviny 08-09/98

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Paralelní a distribuované výpočty (B4B36PDV)

Cvičení č. 5. Programování ve Windows program stopky 3 Body

Programování v C++, 2. cvičení

Programování v C++ 2, 4. cvičení

Jazykové konstrukce pro paralelní výpočty

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Programování v C++ 3, 3. cvičení

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Programování II. Návrh programu I 2018/19

Cvičení MI-PRC I. Šimeček

Projektč.3dopředmětuIZP. Maticové operace

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Teoretická informatika Tomáš Foltýnek Paralelní programování

Algoritmizace a programování

Operační systémy. Přednáška 5: Komunikace mezi procesy

Programování. Debugging a testování. Martin Urza

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

Operační systémy. Cvičení 5: Volání jádra, procesy, vlákna.

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Operační systémy. Cvičení 1: Seznámení s prostředím

Poslední nenulová číslice faktoriálu

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Procesy a vlákna (Processes and Threads)

Úvod do GPGPU J. Sloup, I. Šimeček

C++ 0x aka C++11. Základním kamenem je třída std::thread

Paralelní a distribuované výpočty (B4B36PDV)

Paralelní programování

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Vector datový kontejner v C++.

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Dynamické datové struktury III.

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

ALGORITMIZACE A PROGRAMOVÁNÍ

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Úvod do programování 7. hodina

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Aplikace metody BDDC

POČÍTAČE A PROGRAMOVÁNÍ

KIV/ZI Základy informatiky MS EXCEL MATICOVÉ FUNKCE A SOUHRNY

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Konstruktory a destruktory

Profilová část maturitní zkoušky 2017/2018

Podobnostní transformace

Operační systémy. Přednáška 4: Komunikace mezi procesy

Procesy a vlákna Mgr. Josef Horálek

PŘETĚŽOVÁNÍ OPERÁTORŮ

1. ÚLOHA. Své řešení uveďte na tento list (možno i na jeho druhou stranu).

2. Schurova věta. Petr Tichý. 3. října 2012

Standardní algoritmy vyhledávací.

Paralelní grafové algoritmy

Transkript:

Paralelní programování cvičení Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 13

Cvičení 1 Jazyk C POSIX Threads (UNIX) hlavičkový soubor pthread.h, knihovna libpthread funkce pthread create, pthread join, pthread cancel aj. Win32 API (MS Windows) hlavičkový soubor windows.h funkce CreateThread, WaitForSingleObject, GetExitCodeThread, TerminateThread, SuspendThread, ResumeThread aj. Jazyk/Platforma C#/.NET jmenný prostor System třída Thread, metody run, start, join, yield aj. globální proměnné... statické členy ve třídě Úkol (1 bod): Spusťte proceduru v novém vlákně, které předáte 2 textové řetězce a ona vrátí jejich spojení. Hlavní vlákno programu počká na dokončení nového vlákna a vypíše jeho návratovou hodnotu. Jan Outrata (KI UP) Paralelní programování únor duben 2011 2 / 13

Cvičení 2 Úkol (1 bod): Sestavte scénáře pro program Počítadlo z 2. přednášky, ve kterých je výsledná hodnota n = 10 a n = 2. Úkol (2 body): Naprogramujte program z předchozího úkolu a pokuste se demonstrovat sestavené scénáře. V rámci řešení vytvořte proceduru/metodu/makro concurrent, která/které bude mít za parametry libovolný počet (pouze) procedur, které spustí v samostatných vláknech a počká na jejich dokončení. Pro demonstraci scénářů může být potřeba vynucení možnosti výběru jiného vlákna (např. pauza/pozastavení vlákna na zadaný čas). Jan Outrata (KI UP) Paralelní programování únor duben 2011 3 / 13

Cvičení 2 Úkol (3 body): N procesů, identifikátor procesu v proměnné i int C[N] N různých hodnot int D[N] int x, count 1: x C[i] 2: count počet prvků C menších než x 3: D[count + 1] x Co program dělá? Co by se stalo, kdyby pole C bylo inicializováno na hodnoty, které nejsou navzájem různé? Opravte program pro tento případ. Jan Outrata (KI UP) Paralelní programování únor duben 2011 4 / 13

Cvičení 3 Zadání úkolů na cvičení je na slajdech z přednášky. Úkol (2 body): Cvičení 1 ze slajdů. Úkol (2 body): Cvičení 2 ze slajdů. Úkol (1 bod): Cvičení 3 ze slajdů. Další tři příklady ze slajdů jsou bonusové. Jan Outrata (KI UP) Paralelní programování únor duben 2011 5 / 13

Cvičení 4 Úkol (2 body): Zjistěte, jakým způsobem jsou v POSIX Threads (UNIX)/Win 32 API (MS Windows) nebo na platformě.net poskytovány složené atomické akce test-and-set a exchange a pomocí jedné z nich naprogramujte řešení problému kritické sekce. Úkol (3 body): Dokažte korektnost řešení problému kritické sekce se složenou atomickou akcí test-and-set nebo exchange pomocí stavového diagramu. Úkol (4 body): Vyřešte problém kritické sekce s použitím složené atomické akce fetch-and-add nebo compare-and-swap. Jan Outrata (KI UP) Paralelní programování únor duben 2011 6 / 13

Cvičení 5 Zadání úkolů na cvičení je na slajdech z přednášky. Úkol (1 bod): Cvičení 1 ze slajdů. Úkol (3 body): Cvičení 2 ze slajdů. Pokud nebudou při převodu zamčeny současně oba účty, 1 bod. Úkol (1 bod): Cvičení 4 ze slajdů. Ostatní příklady ze slajdů jsou bonusové. Jan Outrata (KI UP) Paralelní programování únor duben 2011 7 / 13

Cvičení 6 Úkol (2 body): Implementujte algoritmus na paralelní prefixy pro libovolno u zadanou operaci. Úkol (3 body): V jednorozměrném poli A (indexovaným od 0) jsou zakódovány seznamy tak, že každá položka obsahuje index následujícího prvku seznamu. Poslední prvek seznamu obsahuje číslo 1. Napište funkci, která paralelně do prvků pole B uloží délky příslušných seznamů z pole A. Úkol (2 body): Implementujte paralelní algoritmus, který zkomprimuje hustý vektor do řídkého vektoru. Bonusové příklady Úkol: Implementujte paralelní algoritmus pro skalární součin dvou hustých vektorů, resp. řídkého a hustého vektoru. Úkol: Řídká matice je reprezentována polem řádků, které jsou reprezentovány jako řídké vektory. Implementujte paralelní algoritmus pro násobení řídké matice hustým vektorem. Jan Outrata (KI UP) Paralelní programování únor duben 2011 8 / 13

Cvičení 7 Úkol (1 bod): Zjistěte, jakým způsobem jsou v POSIX Threads (UNIX)/Win 32 API (MS Windows) nebo na platformě.net poskytovány (obecný) semafor a mutex (binární semafor). Úkol (2 body): Naprogramujte řešení problému producenta a konzumenta pro lib. počet procesů producenta i konzumenta. Je nutné upravit řešení pro jedny procesy a pokud ano, jak? Úkol (3 body): Vyřešte a naprogramujte řešení problému bariéry pro lib. počet procesů používající jediný (obecný) semafor. Jan Outrata (KI UP) Paralelní programování únor duben 2011 9 / 13

Cvičení 7 Úkol (4 body, bonus): Kritická sekce pro max. k z N procesů v krit. sekci mutex M 1, delay 0 int count k int m loop forever 1: nekritická sekce 2: wait(m) 3: count count 1 4: m count 5: signal(m) 6: if m 1 7: wait(delay) 8: kritická sekce 9: wait(m) 10: count count + 1 11: if count 0 12: signal(delay) 13: signal(m) Sestavte scénář pro N = 4, k = 2, ve kterém bude delay = 2 v rozporu s definicí mutextu (jako binárního semaforu). Ukažte také pro N = 3, k = 2. Jan Outrata (KI UP) Paralelní programování únor duben 2011 10 / 13

Cvičení 8 Úkol (3 body): Ověřte korektnost následující simulace obecného semaforu: inicializace na hodnotu k 0: M 1, gate 0, count k wait 1: wait(m) 2: count count 1 3: if count < 0 4: signal(m) 5: wait(gate) 6: else signal(m) signal 1: wait(m) 2: count count + 1 3: if count 0 4: signal(gate) 5: signal(m) Jan Outrata (KI UP) Paralelní programování únor duben 2011 11 / 13

Cvičení 8 Úkol (5 bodů): Problém stabilních (či spíše ne nestabilních) manželství: N mužů a N žen, každý muž hodnotí ženy a každá žena hodnotí muže podle preferencí, párování jako seznam N párů (m, z), kde m je muž a z je žena, je stabilní, když pro lib. dva páry (m 1, z 1 ) a (m 2, z 2 ) platí, že m 1 preferuje z 1 před z 2 nebo z 2 preferuje m 2 před m 1. Najděte stabilní párování. Např. pro preference klesající zleva doprava: muž ženy 1 2 4 1 3 2 3 1 4 2 3 2 3 1 4 4 4 1 3 2 žena muži 1 2 1 4 3 2 4 3 1 2 3 1 4 3 2 4 2 1 4 3 existují pouze dvě možná stabilní párování: (1, 4), (2, 3), (3, 2), (4, 1) a (1, 4), (2, 1), (3, 2), (4, 3). Vyřešte a naprogramujte řešení problému se samostatným procesem pro každého muže a každou ženu. Při řešení vyjděte ze sekvenčního algoritmu Gale-Shapley na Wikipedii (pod heslem stable marriage problem ). Jan Outrata (KI UP) Paralelní programování únor duben 2011 12 / 13

Cvičení 11 Úkol (1 bod): Zjistěte, zda a jakým způsobem jsou v POSIX Threads (UNIX)/Win 32 API (MS Windows) nebo na platformě.net poskytovány monitor, podmíněná proměnná a chráněný objekt. Úkol (2 body): Naprogramujte řešení některého problému z přednášky 11 pomocí monitoru (s podmíněnými proměnnými) nebo chráněného objektu. Úkol (3 body): Vytvořte simulaci monitoru pomocí semaforů, simulaci podmíněné proměnné pomocí (pasivních) semaforů a simulaci chráněného objektu pomocí monitoru (s podmíněnými proměnnými). Úkol (3 body, bonus každý problém): Naprogramujte řešení některého problému z přednášky 9, kromě večeřících filozofů, pomocí monitoru (s podmíněnými proměnnými) nebo chráněného objektu. Jan Outrata (KI UP) Paralelní programování únor duben 2011 13 / 13

Cvičení 12 Úkol (3 body): Naprogramujte paralelní násobení matic, tj. každý prvek výsledné matice je vypočítán v samostatném procesu, s použitím API OpenMP (v C) nebo Parallel Extensions/TPL (v C#/.NET). Úkol (5 bodů, bonus): Předchozí úkol s použitím frameworku OpenCL. (Instalaci frameworku může být nutné provést do virtuálního systému, viz http://site.inf.upol.cz/virtual_network.html.) Jan Outrata (KI UP) Paralelní programování únor duben 2011 14 / 13