Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch
|
|
- Ladislava Kučerová
- před 5 lety
- Počet zobrazení:
Transkript
1 Cvičení předmětu MI-PAR P Tvrdík, I Šimeček, M Šoch paveltvrdik,xsimecek,soch@fitcvutcz Katedra počítačových systémů FIT České vysoké učení technické v Praze 2011 MI-PAR, ZS2011/12, Cv1-6 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy Praha & EU: Investujeme do vaší budoucnosti
2 = S t a r C l u s t e r = of :18 Programovaní pod MPI Programovací jazyk C a C++, C++, Komunikační knihovna MPI Úvod Základní komunikační funkce MPI Ukázkové příklady Kde najít další informace o MPI Jak kompilovat paralelní aplikaci na svazku STAR Jak spustit paralelní aplikaci na svazku STAR Jak ladit paralelní aplikaci na svazku STAR Další info na Wiki výpočetního svazku STAR Knihovna logger pro jednoduší logování aplikací Tipy a triky byvalych studentu MPI na WIN (s Netbeans) MPI na Linuxu
3 1 of :19 OpenMP podle Blaise Barney, Lawrence Livermore National Laboratory Struktura: Základní informace 1 Co je to OpenMP? 2 Jak OpenMP funguje? 3 Jak udìlat program vícevláknový? 4 Váš úkol 5 Co zde chybí? 6 Odkazy dále OpenMP direktivy 1 Obecná pravidla pro zápis 2 Ukázka principu zápisu OpenMP direktivy 3 Direktiva "parallel" 4 Direktiva "for" 5 Direktiva "single" 6 Direktiva "master" 7 Direktiva "critical" 8 Direktiva "atomic" OpenMP vlastnosti 1 Co to je? 2 Vlastnost "shared" 3 Vlastnost "private" 4 Vlastnost "firstprivate" 5 Vlastnost "lastprivate" 6 Vlastnost "default" 7 Vlastnost "reduction" OpenMP operace 1 Operace "barrier" 2 Operace "flush" 3 Operace s vlákny 4 Operace s èasem 5 Operace se OpenMP zámky Ukázkové OpenMP kódy 1 Hello World (ukázka direktivy parallel) 2 Vektorový souèet (ukázka direktivy parallel a for) 3 Vektorový souèet (ukázka direktivy parallel for) 4 Kritická sekce(ukázka direktivy critical) Základní informace Co je to OpenMP? sjednocené API pro programování vícevláknových aplikací Jak OpenMP funguje?
4 2 of :19 Ve vybraných èástech kódu (dále oznaèovaných jako paralelní bloky = parallel regions) je pomocí fork-join mechanismu vytvoøen daný poèet vláken a tak je tento paralelní blok øešen vícevláknovì Mimo tyto paralelní bloky existuje pouze jedno vlákno hlavního procesu Pozn Nedoporuèuje se míchat tento zpùsob vytváøení a zániku threadù s tím jak byl probírán v pøedmìtu OSY (POSIX thready = pthread_create, pthread_join, pthread_exit) Jak udìlat program vícevláknový? Staèí dodržet tyto 4 kroky Stanovit si, které èásti kódu (nejèastìji cykly) chci aby bìžely vícevláknovì, toto udìlám pomocí OpenMP direktiv = vytvoøíme paralelní bloky Díky tomu, že vytvoøení a zánik vláken má jistou režii, je snaha paralelizovat co èasovì nejvìtší èásti kódu Stanovit pro jednotlivé promìnné jejich OpenMP vlastnosti Je snaha co nejvíce se vyhybat sdíleným promìnným V rámci paralelních blokù se vyhnout "thead-unsafe" operacím Zkompilovat program pomocí "gcc-fopenmp-o3", první volba je pro zpracování OpenMP, druhá zapíná optimalizace kompilátoru Jaký je váš úkol? Pro každý výpoèetní uzel vytvoøit sdílenou frontu nebo zásobník, kterou budou využívat jednotlivá vlákna (jejich poèet volte rovných 4) v daném výpoèetním uzlu Pro vzájemné vylouèení vláken pøi pøístupu využijte OpenMP zámky, kritické sekce nebo atomické operace Co zde chybí? Tento text slouží jako úvod do OpenMP proto zde chybí popis pokroèilejší mechanismù jako direktiva sections, dynamicky mìnitelný poèet vláken nebo vnoøené paralelní bloky (nested parallel regions) Odkazy dále OpenMP website: openmporg API specifications, FAQ, presentations, discussions, media releases, calendar, membership application and more Wikipedia: enwikipediaorg/wiki/openmp OpenMP direktivy Obecná pravidla pro zápis Pøed každým paralelním blokem je na jedné programované øádce uvede jediná OpenMP direktiva a dále volitelný poèet jejich parametrù Pozn Jedna programová øádka mùže obsahovat i více øádek v kódu, pokud je pøedchozí øádka ukonèena pomocí znaku zpìtné lomítko("\") Ukázka principu zápisu OpenMP direktivy
5 3 of :19 C / C++ - General Code Structure #include <omph> main () { int var1, var2, var3; zde pracuje jen hlavni vlakno procesu (serial code) nasleduje paralelni blok (Beginning of parallel section Fork a team of threads Specify variable scoping) #pragma omp parallel private(var1, var2) shared(var3) { Uvnitr paralelniho bloku pracuje vice vlaken (Parallel section executed by all threads) Promenne var1, var2 jsou privatni = kazde vlakno v tomto bloku ma vlastni Promenna var3 je sdilena vsemi vlakny } Na konci bloku se nove vznikla vlakna zrusi (All threads join master thread and disband) } opet pracuje jen hlavni vlakno procesu (serial code) Direktiva "parallel" Možné parametry jsou: if (podmínka) num_threads (výraz) vlastnosti promìnných (seznam promìnných) Pokud je podmínka splnìna (když není uvedena, je splnìna), je vytvoøen daný poèet vláken, jinak se bude paralelní blok provádìt sekvenènì V tomto paralelním bloku budou mít promìnné tyto OpenMP vlastnosti Pøesné chování Omezení Je vytvoøen daný poèet vláken, vlákna jsou oèíslována, pùvodní (hlavní vlákno procesu) vlákno má èíslo 0 Kód paralelního bloku je zduplikován na všechny vlákna a zaène se provádìt Na konci paralelního bloku je implicitní bariéra, novì vzniklá vlákna jsou ukonèena, dále pokraèuje zase jen pùvodní (hlavní vlákno procesu) vlákno Pokud je z nìjakého dùvodu jedno z vláken ukonèeno bìhem paralelního bloku, jsou ukonèeny všchny vlákna a tím i program Paralelního blok nesmí pøekroèit rámec jedné procedury a musí být v jednom programovém souboru Je zakázáno vyskoèit ven nebo vskoèit zvenèí dovnitø paralelního bloku
6 4 of :19 Je dovolena maximálnì jedna if (podmínka) pøed každým paralelním blokem Je dovolena maximálnì jede num_threads (výraz) pøed každým paralelním blokem Poèet vláken u direktivy "parallel" Poèet vzniklých vláken je øízen tìmito výrazy (v tomto poøadí, dùležitý je první platný výraz) pokud je uvedena, vyhodnotí se if Pokud není splnìna, bude provádìt jako sekvenèní kód pokud je uvedena, provede se dle nastavení num_threads pokud bylo uvedeno, provede se dle nastavení pøi posledním volání fci omp_set_num_threads() pokud je uvedena, provede se dle nastavení promìnné prostøedí OMP_NUM_THREADS v závisloti na implementaci nebo dynamicky Pozn: Direktivu "parallel" a "for" je mozno spojit do "parallel for" viz zde Direktiva "for" Konstrukce pro paralelizaci for-cyklu uvniø paralelního bloku, možné parametry jsou: schedule(typ,velikost) static Každému vláknu je staticky pøidìleno velikost iterací (jdoucích po sobì) cyklu Pokud není velikost uvedena, jsou iterace rovnomìrnì rozdìleny mezi vlákna dynamic Každému vláknu je dynamicky pøidìleno velikost iterací (jdoucích po sobì) cyklu Když vlákno dokonèí,je mu pøidìlena další èást stejné velikosti Pokud není velikost uvedena, pøedpokládá se 1 guided Každému vláknu je dynamicky pøidìleno x iterací ( x je poèet neprovedených iterací dìleno poètem vláken, x je vìtší nez velikost kromì posledního kousku) cyklu Když vlákno dokonèí,je mu pøidìlena další èást stejné velikosti Pokud není velikost uvedena, pøedpokládá se 1 runtime Rozhodnutí o plánování je odloženo až do okamžiku provedení dle promìnné prostøedí OMP_SCHEDULE auto Plánování je necháno na kompilátoru a OS nowait = vlákna na konci paralelního bloku neprovádí bariéru ordered = poøádí iterací je stejné jako pøi sekvenèním provádìní collapse = slouží pro upøesnìní u vnoøených cyklù Pokud je podmínka splnìna (když není uvedena, je splnìna), je vytvoøen daný poèet vláken, jinak se bude paralelní blok provádìt sekvenènì V tomto paralelním bloku budou mít promìnné tyto vlastnosti (TODO viz) Pøesné chování Omezení: Je vytvoøen daný poèet vláken, vlákna jsou oèíslována, pùvodní (hlavní vlákno procesu) vlákno má èíslo 0 Kód paralelního bloku je zduplikován na všechny vlákna a zaène se provádìt Na konci paralelního bloku je implicitní bariéra, novì vzniklá vlákna jsou ukonèena, dále pokraèuje zase jen pùvodní (hlavní vlákno procesu) vlákno Pokud je z nìjakého dùvodu jedno z vláken ukonèeno bìhem paralelního bloku, jsou ukonèeny všchny vlákna a tím i program Paralelního blok musí obsahuje for-cyklus, který je øízen celoèíselnou promìnnou Øídící promìnné
7 5 of :19 tohoto cyklu musí být stejné pro všechny vlákna Chování programu musí být nezávislé na tom, které vlákno provádí konkrétní iteraci cyklu Je zakázáno vyskoèit ven nebo vskoèit zvenèí dovnitø paralelního bloku velikost parametru velikost musí být nemìnná bìhem provádìní cyklu Je dovolena maximálnì jeden výskyt ordered, collapse nebo schedule, (podmínka) pøed každým paralelním blokem Pozn: Direktivu "parallel" a "for" je mozno spojit do "parallel for" viz zde Direktiva "single" Specifikuje èást paralelního bloku, kterou provádí pouze jedno vlákno Možné parametry jsou: Omezení nowait = vlákna na konci paralelního bloku neprovádí bariéru Je zakázáno vyskoèit ven nebo vskoèit zvenèí dovnitø paralelního bloku Direktiva "master" Specifikuje èást paralelního bloku, kterou provádí pouze master vlákno (to s èíslem vlákna rovným 0), ostatní vlákna zpracovávají kód následující po této èásti bloku Omezení Je zakázáno vyskoèit ven nebo vskoèit zvenèí dovnitø paralelního bloku Direktiva "critical" Specifikuje èást paralelního bloku, kterou mùže souèasnì provádìt pouze jedno vlákno (kritická sekce) Možné parametry jsou: Omezení jméno = èásti se stejným názvem jsou brány jako jedna kritická sekce Všechny èásti bez jména jsou také brány jako jedna kritická sekce Ukázka zde Je zakázáno vyskoèit ven nebo vskoèit zvenèí dovnitø paralelního bloku Direktiva "atomic" Specifikuje pamì ové operace, které mají být atomické Ukázka zde vlastnosti promìnných Co to je? Urèují vlastnosti promìnných vzhledem k pamì ovým operacím Pozor!!! Pokud budou vlastnosti použity na
8 6 of :19 pointer, aplikují se pouze na tento pointer nikoliv na data na která ukazuje vlastnost shared Urèuje, že daná promìnná bude sdílena všemi vlákny vlastnost private Urèuje, že daná promìnná bude lokální ve vláknì, tozn že každé vlákno bude mít nezávislou instanci této promìnné Promìnná je vytvoøena jako neinicializovaná vlastnost firstprivate Urèuje, že daná promìnná bude lokální ve vláknì, tozn každé vlákno bude mít nezávislou instanci této promìnné Promìnná je vytvoøena s pùvodní hodnotou, kterou mìlqa pøed vstupem do paralelního bloku vlastnost lastprivate Urèuje, že daná promìnná bude lokální ve vláknì, tozn že každé vlákno bude mít nezávislou instanci této promìnné Hodnota promìnná z poslední iterace bude pøekopírována do promìnné hlavního vlákna procesu (bude platná po skonèení paralelního bloku) vlastnost default Urèuje, jakou vlastnost budou mít defaultnì všechny promìnné použité v paralelním bloku (pokud nebude uvedeno jinak) Možné parametry jsou: shared none vlastnost reduction Urèuje, že daná promìnná bude lokální ve vláknì, tozn že každé vlákno bude mít nezávislou instanci této promìnné Po skonèení bloku se na všechny instance použije redukèní operace a výsledek bude zapsán do promìnné hlavního vlákna procesu (bude platný po skonèení paralelního bloku) Možné operace jsou: +, *, -, &, ^, Omezení: Musí se jednat o promìnné jednoduchého typu V nadøízeném bloku musí být deklarovány jako SHARED Operace nesmí být pøetížena pro daný datový typ Pro reálné datové typy operace nemusí být asociativní Každý blok mùže obsahovat i více promìnných pro redukci ale každou maximálnì jednou Ukázka zde podrobnìji a další ukázka zde OpenMP operace
9 7 of :19 Operace "barrier" Specifikuje bariéru (èást kódu,kde na sebe všechny vlákna "poèkají" a dále jdou zase všechny) Operace "flush" Násilnì vyvolá ètení a zápis daných promìných do/z pamìti Možné parametry jsou: seznam promìnných vysvìtlení zde Operace "omp_set_num_threads(int i)" Programovì zmìní poèet vytvoøených vláken v následujích paralelních blocích Musí být volán ze sekvenèní èásti pøedcházející paralelnímu bloku Efekt zùstává v platnosti do dalšího volání Parametrem je požadovaný poèet vláken Operace "omp_get_num_threads" Vrátí poèet vláken v aktuálním paralelním bloku V sekvenèní èásti vrací 1 Operace "omp_get_wtime" Vrátí èíslo (typu double), které udává ubìhnutý èas od nìjakém (impementaènì závislého) okamžiku v minulosti Nejèastìji se používá jako párové volání pro zjištìní napø doby trvání cyklu, doba trvání programu Operace "omp_init_lock(omp_lock_t *x)" Inicializuje OpenMP zámek (mutex) s poèáteèní hodnotou odemèeno Operace "omp_destroy_lock(omp_lock_t *x)" Zruší (inicializovaný) OpenMP zámek (mutex) Operace "omp_set_lock(omp_lock_t *x)" Pokusí se zamknout OpenMP zámek (mutex) V pøípadì neúspìchu se vlákno zablokuje Operace "omp_test_lock(omp_lock_t *x)" Pokusí se zamknout OpenMP zámek (mutex) V pøípadì neúspìchu vrací 0 Operace "omp_unset_lock(omp_lock_t *x)" Odemkne OpenMP zámek (mutex) Ukázkové OpenMP kódy Hello World (ukázka direktivy parallel) Vektorový souèet (ukázka direktivy parallel a for) Vektorový souèet (ukázka direktivy parallel for)
10 8 of :19 4 Kritická sekce(ukázka direktivy critical) 5 Atomická operace(ukázka direktivy atomic) 6 Operace redukce(ukázka direktivy reduction)
Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček
Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Predn.2
VíceParalení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty
Paralení programování pro vícejádrové stroje s použitím OpenMP B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Vlákna a jejich synchronizace v C++ 11... 1 Minulé cvičení: Vlákna a jejich synchronizace
VíceVláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2012 04 17 1/46 Přehled přednášky Open MP 2/46 Open MP Standard pro
VíceParalelní architektury se sdílenou pamětí
Paralelní architektury se sdílenou pamětí Multiprocesory Multiprocesory se sdílenou pamětí SMP architektury Přístup do paměti OpenMP Multiprocesorové architektury I. Multiprocesor se skládá z několika
VíceVláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2010 04 08 1/60 Přehled přednášky Open MP 2/60 Open MP Standard pro
VíceParalelní architektury se sdílenou pamětí
Paralelní architektury se sdílenou pamětí Multiprocesory Multiprocesory se sdílenou pamětí SMP architektury Přístup do paměti OpenMP Multiprocesorové architektury I. Multiprocesor se skládá z několika
VíceParalelní výpočetní jádro matematického modelu elektrostatického zvlákňování
Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování Milan Šimko Technická univerzita v Liberci Interní odborný seminář KO MIX 19. prosince 2011 Obsah prezentace 1 MOTIVACE 2 VLÁKNOVÝ
VíceVlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty
Vlákna a přístup ke sdílené paměti B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Paralelizace nám může pomoct... 1 Minulé cvičení: Paralelizace nám může pomoct... B4B36PDV: Ale ne všechny
VícePokročilé architektury počítačů
Pokročilé architektury počítačů 03 Programování paralelních systémů Část II. OpenMP a MPI České vysoké učení technické, fakulta elektrotechnická A4M36PAP Pokročilé architektury počítačů Ver.1.00 1 Přehled:
VíceParalelní programování
Paralelní programování přednášky Jan Outrata únor květen 2011 Jan Outrata (KI UP) Paralelní programování únor květen 2011 1 / 15 Simulátor konkurence abstrakce = libovolné proložení atom. akcí sekvenčních
VíceObsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21
Stručný obsah 1. Hardware, procesory a vlákna... 19 2. Programování s ohledemna výkon... 45 3. Identifikování příležitostí pro paralelizmus... 93 4. Synchronizace a sdílení dat... 123 5. Vlákna v rozhraní
VíceCvičení MI-PAP I. Šimeček, M. Skrbek, J. Trdlička
Cvičení MI-PAP I. Šimeček, M. Skrbek, J. Trdlička xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PAP, LS2010/11, Cvičení 1-6 Příprava studijního
VíceÚvod do OpenMP. Jiří Fürst
Úvod do OpenMP Jiří Fürst Osnova: Úvod do paralelního programování Počítače se sdílenou pamětí Základy OpenMP Sdílené a soukromé proměnné Paralelizace cyklů Příklady Úvod do paralelního programování Počítač
VíceOpenMP (Open Specification for Multi Processing)
OpenMP (Open Specification for Multi Processing) OpenMP je rozhraní (application programming interface, API) pro (explicitní) programování paralelních aplikací na (jednom) počítači s více procesory (jádry)
VíceVlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu
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 Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro
VíceParalelní programování
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
VíceØízený pøeklad - make
Øízený pøeklad Øízený pøeklad - make - nástroj make je pùvodnì UNIXový pomocný vývoj. nástroj vzniklý v AT&T asi 1975 - úèel: zjednodušit a zautomatizovat pøeklad a sestavování (linking) vìtších projektù,
VíceOperační systémy. Cvičení 5: Volání jádra, procesy, vlákna.
Operační systémy Cvičení 5: Volání jádra, procesy, vlákna. 1 Obsah cvičení Systémová volání Knihovní funkce jazyka C Procesy informace o procesech vytváření, ukončování procesů, signály POSIX vlákna vytváření,
VíceProcesy a vlákna (Processes and Threads)
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna (Processes and Threads) Správa procesů a vláken České vysoké učení technické Fakulta elektrotechnická 2012 Použitá literatura [1] Stallings, W.: Operating
Více9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek
9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód
VíceStruktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
VíceParalelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VícePřednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012
Přednáška Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského
VíceArchitektury VLIW M. Skrbek a I. Šimeček
Architektury VLIW M. Skrbek a I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PAP, LS2010/11, Predn.3 Příprava studijního programu
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VícePřednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012
Přednáška Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského
VíceParalelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
VíceŘada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.
Operační systémy Tomáš Hudec 7 Prostředky programovacích jazyků pro IPC Obsah: 7.1 Monitor, 7.1.1 Použití monitoru pro řízení přístupu do kritické sekce, 7.1.2 Použití monitoru pro synchronizaci, 7.1.3
VíceÚstav technické matematiky FS ( Ústav technické matematiky FS ) / 35
Úvod do paralelního programování 2 MPI Jakub Šístek Ústav technické matematiky FS 9.1.2007 ( Ústav technické matematiky FS ) 9.1.2007 1 / 35 Osnova 1 Opakování 2 Představení Message Passing Interface (MPI)
VíceJAN POŠTA DELPHI ZAÈÍNÁME PROGRAMOVAT Praha 2001 Jan Pošta DELPHI ZAÈÍNÁME PROGRAMOVAT Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožována jakoukoli formou
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VíceProgramování bez vláken. OpenMP
Programování bez vláken Tradiční přístup je vytvoření vícevláknového programu, kde se řekne, co má které vlákno dělat Ale jde to i jinak, lze vytvořit program tak, že se řekne, co se má udělat paralelně
Více1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
VíceProcesy a vlákna - synchronizace
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna - synchronizace České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody
VíceVážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
Více1.2 Realizace èekání pomocí jednoduché programové smyèky Pøíklad 3: Chceme-li, aby dítì blikalo baterkou v co nejpøesnìjším intervalu, øekneme mu: Roz
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VíceÚvod do GPGPU J. Sloup, I. Šimeček
Úvod do GPGPU J. Sloup, I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Predn.3 Příprava studijního programu
VícePESexcl. PODPORA PRO VÝMÌNU DAT S APLIKACÍ MICROSOFT EXCEL s využitím DDE serveru PESdde
PESexcl PODPORA PRO VÝMÌNU DAT S APLIKACÍ MICROSOFT EXCEL s využitím DDE serveru PESdde PESexcl Hotová pøedpøipravená makra VBA pro program Microsoft EXCEL umožòující výmìnu tabulek dat s automaty MICROPEL
VíceZOS 9. cvičení, ukázky kódu. Pavel Bžoch
ZOS 9. cvičení, ukázky kódu Pavel Bžoch Obsah Komunikace mezi procesy Atomické operace TSL a CAS Zámky Semafory Semafory vypsání věty Monitor Bariéra pomocí monitoru Implementace semaforu pomocí monitoru
Více3.7.5 Znaménkové operátory Násobící operátory Rùzné operátory Základní objekty Konstanty Sig
OBSAH Úvod 11 Signály v èíslicových systémech 13 2.1 Dvojstavové signály... 14 2.2 Tøístavové signály... 16 2.3 Dynamické parametry èíslicových signálù... 16 Jazyk VHDL 19 3.1 Historie, souèasnost, budoucnost
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VíceJakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner
Jakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner Co paralelizace přinese? Jak paralelizovat? Jak si ušetřit práci? Jak nedělat běžné paralelizační chyby? Race condition, deadlocky
VíceVláknové programování část I
Vláknové programování část I Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2015 04 07 1/27 Vláknové programování v C/C++ 1. Procesy, vlákna, přepínání
VíceUklízení odpadků a analýza úniku
Uklízení odpadků a analýza úniku Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická Ceské vysoké ucení technické v Praze Prednáška 11 B0B36PJV Programování v JAVA Uklízení odpadků a analýza úniku
VíceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
Více4. Rekurze. BI-EP1 Efektivní programování Martin Kačer
4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
VícePointery II. Jan Hnilica Počítačové modelování 17
Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky
Více3/ %,1'(& 83'1 &( &3 )XQNFH. + ; ; ; ; / ; ; + ; EH]H]PuQ\
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VíceČÁST 1. Základy 32bitového programování ve Windows
Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25
VíceVytváøení sí ového diagramu z databáze: pøíklad
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VíceParalelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
Více4. Úvod do paralelismu, metody paralelizace
4. Úvod do paralelismu, metody paralelizace algoritmů Ing. Michal Bližňák, Ph.D. Ústav informatiky a umělé inteligence Fakulta aplikované informatiky UTB Zĺın Paralelní procesy a programování, Zĺın, 26.
VíceKOMUNIKAÈNÍ DDE SERVER PRO AUTOMATY MICROPEL VERZE 2.3 POPIS ROZHRANÍ A OVLÁDÁNÍ 03.2002
PESdde KOMUNIKAÈNÍ DDE SERVER PRO AUTOMATY MICROPEL VERZE 2.3 POPIS ROZHRANÍ A OVLÁDÁNÍ 03.2002 1. Co je nového ve verzi 2.3 Proti verzi 2.1 jsou v této verzi dvì významná vylepšení: 1. Server nyní stále
Vícebaspelin CPM Popis komunikaèního protokolu CPM KOMPR
baspelin Popis komunikaèního protokolu KOMPR srpen 2003 baspelin Obsah 1. Pøehled pøíkazù a dotazù 4 2. Popis pøíkazù a dotazù 5 3. Èasování pøenosu 10 4. Pøipojení regulátorù na vedení 11 3 baspelin
VícePodìkování: Výsledkù publikovaných v této knize bylo dosaženo také za podpory projektù GAÈR 101/06/P108 Výzkum simulaèního a experimentálního modelová
Robert Grepl MODELOVÁNÍ MECHATRONICKÝCH SYSTÉMÙ V MATLAB SIMMECHANICS Praha 2007 Podìkování: Výsledkù publikovaných v této knize bylo dosaženo také za podpory projektù GAÈR 101/06/P108 Výzkum simulaèního
VíceIRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
VíceMotivace. Software. Literatura a odkazy
Využití paralelních výpočtů ve stavební mechanice Motivace Paralelní počítače Software Možnosti využití ve stavební mechanice Příklady Literatura a odkazy 1 Motivace Časová náročnost výpočtů Rozsáhlé úlohy
VíceArchitektury paralelních počítačů I.
Architektury paralelních počítačů I. Úvod, Koherence a konzistence u SMP Ing. Miloš Bečvář s použitím slajdů Prof. Ing. Pavla Tvrdíka, CSc. Osnova přednášky Typy paralelismu a jejich využití v arch. poč.
VíceBronislava Eršilová EXCEL 2000 pro každý den Obsah ÚVOD... 7 Co je nového v oblasti základních funkcí... 7 PRVNÍ SEZNÁMENÍ S PROGRAMEM EXCEL... 9 Instalace programu Excel 2000... 9 Minimální systémové
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceTento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
Více4x kombinovaný analogový vstup s vysokou pøesností (0..10V, 0..200R, -150..+260 0 C)
EN 4x kombinovaný analogový vstup s vysokou pøesností (0..10V 0..200R -150..+260 0 C) Mìøení napìtí 0..10 V s pøesností ±0.2% a rozlišením až 0.001 V Mìøení odporu 0..200 ohm s pøesností ±0.2% a rozlišením
VíceOZNÁMENÍ ZADÁVACÍHO ØÍZENÍ / VYHLÁŠENÍ VEØEJNÉ SOUTÌŽE O NÁVRH
OZNÁMENÍ ZADÁVACÍHO ØÍZENÍ / VYHLÁŠENÍ VEØEJNÉ SOUTÌŽE O NÁVRH Èíslo objednávky (Vaše èíslo jednací) Øádné Opravné 1 1.1 Pøedmìt veøejné zakázky 1.2 Zadávací øízení 1.3 1.5 1.6 2 2.1 2.4 2.4.1 2.4.2 2.4.3
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Anonymní funkce BI-JSC Evropský sociální fond
VíceOptimalizace pomocí icc/gcc - vektorizace
Optimalizace pomocí icc/gcc - vektorizace ICC/ICPC ICC/ICPC - překladače pro jazyky C/C++ od firmy Intel ke stažení po registraci na http://www.intel.com/cd/software/products/asmona/eng/compilers/clin/219856.htm
VíceParalelní programování
Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 11 Literatura Ben-Ari M.: Principles of concurrent and distributed programming.
VíceVážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VíceSdílení dat mezi podprogramy
Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry
VíceOperační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit
Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Dědičnost objektů BI-JSC Evropský sociální fond
VícePREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
VíceDynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
VíceParalelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceIRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe 1. část BI-JSC Evropský sociální fond
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceProgramování inženýrských aplikací
Výchova studentů pro aplikace řešené na výkonných počítačích České vysoké učení technické v Praze Fakulta strojní Programování inženýrských aplikací Jiří Fürst TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM
Více1 Rozdělení paralelních úloh z hlediska jejich
Martin Lísal říjen 2003 1 Rozdělení paralelních úloh z hlediska jejich spolupráce během výpočtu Podle spolupráce během výpočtu můžeme rozdělit paralelní úlohy na MPMD (Multiple Program Multiple Data) úlohy
VíceParalelní dotazy v PostgreSQL 9.6 (a 10.0)
Paralelní dotazy v PostgreSQL 9.6 (a 10.0) Tomáš Vondra tomas.vondra@2ndquadrant.com Prague PostgreSQL Developer Day 16. února, 2017 Agenda spojení vs. procesy v PostgreSQL využití zdrojů výhody, nevýhody,
VícePavel Procházka. 3. prosince 2014
Jazyk C# (seminář 11) Pavel Procházka KMI 3. prosince 2014 Motivace Dnes už se prakticky nedělají jednojádrové procesory pokud potřebujeme výkon, musíme zapojit všechna jádra Často potřebujeme dělat více
VíceVlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.
Trochu teorie Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Každá spuštěná aplikace má alespoň jeden proces
VíceVláknové programování část VI
Vláknové programování část VI Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2015 04 14 1/95 Vytváření vláken a procesů v Linuxu Vlákno vzniká
VíceParalelizace výpočtů v systému Mathematica
Paralelizace výpočtů v systému Mathematica Zdeněk Buk bukz1@fel.cvut.cz České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů 2010 2 paralelizace-2010-buk-eval.nb Úvod Obsah prezentace
Více10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému
VíceZákladní komunikační operace
Základní komunikační operace Úvod Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv One-to-all broadcast/all-to-one reduction All-to-all
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VíceTestování a spolehlivost. 4. Laboratoř Spolehlivostní modely 1
Testování a spolehlivost ZS 2011/2012 4. Laboratoř Spolehlivostní modely 1 Martin Daňhel Katedra číslicového návrhu Fakulta informačních technologí ČVUT v Praze Příprava studijního programu Informatika
VícePODPROGRAMY PROCEDURY A FUNKCE
PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí
VíceAlgoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01
Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník
Více1. Zpracování událostí na pozadí aplikace
1. Zpracování událostí na pozadí aplikace Ing. Michal Bližňák, Ph.D. Ústav informatiky a umělé inteligence Fakulta aplikované informatiky UTB Zĺın Paralelní procesy a programování, Zĺın, 3. února 2014
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceStatické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
VíceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceC++ 0x aka C++11. Základním kamenem je třída std::thread
C++ 0x aka C++11 Jako jiné jazyky, např. Free/Object Pascal, se C++ ve standardu ++0x dočkal podpory vláken Výhodou je, že standardní knihovna je platformě nezávislá na úrovni zdrojového kódu Základním
VíceProgramování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
Více