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

Podobné dokumenty
4. Úvod do paralelismu, metody paralelizace

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

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Procesy a vlákna (Processes and Threads)

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Paralelní programování

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

Paralelní programování

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í.

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

IB013 Logické programování I Hana Rudová. jaro 2011

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Motivace. Software. Literatura a odkazy

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

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

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Paralelní programování

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

Konstruktory a destruktory

Paralelní programování

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

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

Komponenty v.net. Obsah přednášky

Lineární datové struktury

Název diplomové práce: Srovnávač životního pojištění. Určení: Bakalářská práce. Vedoucí: Doc. Ing. Petr Sosík, Dr.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Tvorba počítačových clusterů pomocí Linuxu. Vedoucí práce: Mgr. Jiří Pech, Ph.D. Katedra informatiky

Matematika v programovacích

Paralelní grafové algoritmy

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. Jiří Barnat

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

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

Operační systémy. Přednáška 1: Úvod

Paralelní programování

Abstraktní datové typy

NPRG051 Pokročilé programování v C /17 Úkol 2

Paralelní algoritmy --- Parallel Algorithms

GPU jako levný výpočetní akcelerátor pro obrazovou JPEG2000 kompresi. ORS 2011 Karviná,

Firmware řídící jednotky stejnosměrného generátoru

Dynamicky vázané metody. Pozdní vazba, virtuální metody

IRAE 07/08 Přednáška č. 7. Začátek (head)

Ukázka zkouškové písemka OSY

Vícevláknové aplikace

Úvod do B4B36PDV. Organizace předmětu a seznámení se s paralelizací. B4B36PDV Paralelní a distribuované výpočty

Datová věda (Data Science) akademický navazující magisterský program

IRAE 07/08 Přednáška č. 1

Abstraktní datové typy: zásobník

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Pavel Procházka. 3. prosince 2014

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

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

PB153 Operační systémy a jejich rozhraní

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Přidělování paměti II Mgr. Josef Horálek

OPS Paralelní systémy, seznam pojmů, klasifikace

Obecná teorie systémů

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

Energetický ústav Odbor termomechaniky a techniky prostředí. Možnosti implementace vlastního kódu pro použití v simulačním software TRNSYS

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

Úvod do informačních a řídicích systémů. lení

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

Procesy a vlákna Mgr. Josef Horálek

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

Herní engine. Co je Engine Hotové enginy Jemný úvod do game designu

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

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

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

1 Nejkratší cesta grafem

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

TÉMATICKÝ OKRUH Softwarové inženýrství

Pokročilé architektury počítačů

Seznam úloh v rámci Interního grantového systému EPI

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.

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Programování a algoritmizace: úvod

Programování II. Polymorfismus

Přidělování CPU Mgr. Josef Horálek

PARALELNÍ PROCESY A PROGRAMOVÁNÍ

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Generické programování

Cvičení č. 2. Komunikace mezi procesy Program Hodiny. 4 body

Architektury paralelních počítačů I.

Témata profilové maturitní zkoušky

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

Transkript:

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 1 / 27

Dříve než začneme Osnova kurzu Motivace Obecné informace o kurzu 2 / 27

Podmínky pro udělení zápočtu Dříve než začneme Osnova kurzu Motivace 1 80 % docházka na cvičení 2 Dosažení alespoň 55 bodů ze 100 možných. Body budou přidělovány za: 6 x 0-10 b. za úkol zadaný na cvičeních (různé bodové hodnocení) 2 x 0-25 b. za půlsemestrální práci 1 x 0-15 b. za bonusový úkol 3 Výsledné hodnocení: 0-54 b. : F - nedostatečně 55-63 b. : E - dostatečně 72-64 b. : D - uspokojivě 81-73 b. : C - dobře 90-82 b.: B - velmi dobře 100-91 b.: A - výborně 3 / 27

Doporučená literatura Dříve než začneme Osnova kurzu Motivace Tvrdík, P.: Paralelní systémy a algoritmy, skripta ČVÚT, 2005 Bližňák, M.: Systémové programování, skripta UTB, 2005 Quinn M. J.: Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003, ISBN 007-123265-6 Parhami, B.: Introduction to Parallel Processing Algorithms and Architectures, Kluwer Academic Publisher, 2002 Miller, R., Stout, Q. F.: Parallel Algorithms for Regular Architectures Meshes and Pyramids, MIT Press, 1996 http://www.top500.org (aktuální seznam 500 nejvýkonějších paralelních počítačů) 4 / 27

Organizace kurzu Dříve než začneme Osnova kurzu Motivace Přednášky Řízení procesů, vláken a práce na pozadí aplikace Teorie paralelních algoritmů a masivně paralelních výpočetních systémů Paralelní algoritmy a nástroje pro paralelizaci aplikací a algoritmů Cvičení Zpracování úloh na pozadí aplikací, vyžití časovačů (wxwidgets) Správa procesů a podprocesů pomocí (wxwidgets) Tvorba a synchronizace vláken v aplikacích (wxwidgets) Využití knihovny OpenMP pro paralelizaci aplikací (OpenMP) Implementace některých paralelních algoritmů (OpenMP) 5 / 27

Dříve než začneme Osnova kurzu Motivace Řízení procesů, podprocesů a práce na pozadí aplikace Zpracování úloh na pozadí aplikace, časovače (wxwidgets). Procesy, podprocesy, vlákna a jejich synchronizace (wxwidgets). 6 / 27

Dříve než začneme Osnova kurzu Motivace Teorie paralelních algoritmů a masivně paralelních systémů Úvod do paralelismu, příklady paralelních algoritmů. Analýza a hodnocení složitosti paralelních algoritmů. Vlastnosti paralelních a distribuovaných architektur, abstraktní modely paralelismu, PRAM. Vlastnosti a topologie propojovacích sítí. Vnořování a simulace propojovacích sítí. Směrovací algoritmy. 7 / 27

Dříve než začneme Osnova kurzu Motivace Paralelní algoritmy a nástroje pro paralelizaci SW aplikací Knihovna OpenMP a její využití (C/C++). Paralelní redukce, sumy prefixů a jejich aplikace (C/C++, OpenMP). 8 / 27

Dříve než začneme Osnova kurzu Motivace Proč programovat paralelní aplikace Pravidlo č. 1 Jde-li něco naprogramovat jako sekvenční jednovláknovou aplikaci, udělejte to! Proč? Nebudete muset řešit těžko laditelné problémy typu zablokování souběh 9 / 27

Dříve než začneme Osnova kurzu Motivace Proč tedy používat paralelní procesy a vlákna? Zpracování více neblokujících operací v jednom okamžiku Zajištění zpracování asynchronních událostí Zrychlení a optimalizace výpočtů a zvýšení datové propustnosti 10 / 27

Pseudoparalelní zpracování událostí na pozadí aplikace 11 / 27

Techniky pro implementaci pseudoparalelního 1 zpracování úloh na pozadí aplikace: Událost nečinnosti aplikace IDLE Systémové/softwarové časovače 1 Zpracování úlohy probíhá v rámci stejné plánovací jednotky (procesu nebo vlákna) jako zpracování volající funkce. 12 / 27

13 / 27

Doba nečinnosti aplikace Téměř každá aplikace se po většinu času nachází ve stavu nečinnosti IDLE time Aplikace nezpracovává požadavky uživatele nebo operačního systému Je možné zařídit, aby se v době nečinnosti aplikace vykonával uživatelský kód Jednorázově Periodicky 14 / 27

Implementace ve wxwidgets wxwidgets generují v době nečinnosti událost wxevt IDLE Přechod do stavu nečinnosti je indikován vyprázdněním fronty zpráv. Pomocí tabulky událostí můžeme na tuto událost mapovat jakoukoliv obslužnou rutinu. Událost může být generována Jednorázově Periodicky (vynuceně) 15 / 27

Vynucené generování události wxevt IDLE Třída události wxidleevent obsahuje funkce pro vynucené opakování události wxevt IDLE: Vynuceně lze generovat událost IDLE pomocí funkce void wxidleevent::requestmore(bool needmore = TRUE) Zjistit, zda byla aktuální událost IDLE vynuce lze pomocí funkce bool wxidleevent::morerequested() 16 / 27

Použití události wxevt IDLE Listing 1: Obsluha události IDLE v hlavním okně c l a s s I d l e F r a m e : p u b l i c wxframe { p r o t e c t e d : //... void O n I d l e ( w x I d l e E v e n t &e v t ) ; } ; I d l e F r a m e : : I d l e F r a m e ( ) : wxframe ( NULL, wxid ANY, wxt( I d l e Test ) ) { //... Bind ( wxevt IDLE, &I d l e F r a m e : : OnIdle, t h i s ) ; } void I d l e F r a m e : : O n I d l e ( w x I d l e E v e n t& e v t ) { // neco d e l e j... } 17 / 27

Systémové/softwarové časovače 18 / 27

Základní vlastnosti časovačů Operační systémy obvykle obsahují několik typů časovačů. Čím přesnější časování, tím větší nároky na systémové prostředky a provázanost s HW. Časovače, jejichž funkcionalitu zajišt uje přímo OS se nazývají systémové, nebo softwarové časovače. Přesnost časovačů bývá v rozmezí od 1 ms do 1 s. Například systémové časovače ve Windows mají maximální přesnost 10 až 55ms, multimediální časovače až 1ms. 19 / 27

Implementace ve wxwidgets Základní třída časovače je wxtimer. Třídu lze použít jak v konzolových, tak i GUI aplikacích. Třídu wxtimer lze použít dvěma způsoby: odvodit novou třídu od třídy wxtimer a přetížit její virtuální funkci wxtimer::notify(), která je volána s každým tikem časovače, přesměrovat periodicky generované události časovače 2 na libovolný správce události (event handler) a namapovat na ně vlastní obslužné rutiny. 2 Tyto události jsou generovány výchozí implementací virtuální funkce wxtimer::notify(). 20 / 27

Odvození nové třídy časovače 1 Vytvoříme novou třídu odvozenou od třídy wxtimer. 2 Přetížíme virtuální funkci void wxtimer::notify() volanou s každým tikem časovače a v ní implementujeme požadovanou perioidickou činnost. 3 Instanci odvozené třídy lze vytvořit jak staticky na zásobníku, tak dynamicky na haldě. 21 / 27

Přesměrování periodicky generované události časovače 1 Vytvoříme obslužnou rutinu události wxevt TIMER zapouzdřenou třídou události wxtimerevent. 2 Určíme příjemce události: 3 v konstruktoru třídy wxtimer, voláním funkce void wxtimer::setowner(wxevthandler *owner, int id = wxid ANY). 3 Provážeme událost wxevt TIMER s obslužnou rutinou. 3 Na jednoho příjemce lze přesměrovat libovolné množství událostí časovače rozlišených pomocí celočíselného identifikátoru. 22 / 27

Spuštění a zastavení časovače Časovač spustíme voláním funkce bool wxtimer:: Start(int milliseconds = -1, bool oneshot = FALSE) při spuštění určíme periodu časovače, určíme, zda bude událost vygenerována jednorázově, nebo periodicky. Časovač zastavíme voláním funkce void wxtimer::stop(). 23 / 27

Použití časovače 1/3 #i n c l u d e <wx/ t i m e r. h> Listing 2: Definice vlastní třídy časovače // v l a s t n i t r i d a c a s o v a c e s v l a s t n i i m p l e m e n t a c i f c e N o t i f y ( ) c l a s s CustomTimer : p u b l i c wxtimer { p u b l i c : v i r t u a l void N o t i f y ( ) { w x P r i n t f ( Custom t i c k... \ n ) ; } } ; 24 / 27

Použití časovače 2/3 Listing 3: Definice třídy aplikace s instancemi časovačů #i n c l u d e <wx/wx. h> // h l a v n i t r i d a a p l i k a c e s i n s t a n c i s t a n d a r d n i h o // a v l a s t n i h o c a s o v a c e c l a s s TimerApp : p u b l i c wxapp { p u b l i c : v i r t u a l b o o l O n I n i t ( ) ; p r o t e c t e d : wxtimer m Timer ; CustomTimer m CustomTimer ; void OnTimer ( wxtimerevent &e v t ) { w x P r i n t f ( Standard t i c k... \ n ) ; } } ; 25 / 27

Použití časovače 3/3 Listing 4: Inicializace aplikace a časovačů // i n i c i a l i z a c e a p l i k a c e wximplement APP CONSOLE( TimerApp ) ; b o o l TimerApp : : O n I n i t ( ) { Bind ( wxevt TIMER, &TimerApp : : OnTimer, t h i s ) ; m Timer. SetOwner ( t h i s ) ; m Timer. S t a r t ( 1000 ) ; m CustomTimer. S t a r t ( 2000 ) ; } r e t u r n t r u e ; 26 / 27

Děkuji za pozornost A to je pro dnešek vše. Nastává čas pro vaše dotazy... 27 / 27