Úvod
Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle, ale podobné nástroje a problémy
Moorův zákon: „... Počet tranzistorů/komponent, které lze levně integrovat se zdvojnásobí každý rok...“ 12 měsíců (1965) 18 měsíců (≈ 1985) 24 měsíců (≈2005) ? Jedná se spíš o strategii Intelu než o zákon Dodržuje se zvyšováním počtu jader nejsou integrované na jednom polovodiči
Zdvojnásobení každých: 12 měsíců 24 měsíců
Posledních 10 let se drží okolo 3Ghz Růst se neočekává Rychlost elektronů je konečná Tranzistory mají konečnou velikost
multi-core mikroprocesory zrychlování sekvenčních programů rozsáhlé univerzální instrukční soubory více jader: hypertherading s dvěma a více vlákny pipeline many-core mikroprocesory zvyšování propustnosti (throughput) stovky jader, stovky vláken zaměřeno na floating-point operace
průměr 1m délka 1200km kapacita litrů/den zpoždění (latency) 12 dní propustnost? odezva?
Paralelní systém – systém, ve kterém může probíhat několik procesů/činností současně Rozlišovací úroveň instrukce, iterace, procedura, vlákno, proces, úloha Proces × Vlákno vlákno – instance kódu + dat a stav zásobníku + registrů proces – kolekce vláken, společný kód + data
Procesor × Jádro jádro (core) – čip + paměť + řadič vykonávající jedno vlákno procesor – kolekce jader multithreaded-core multiprocesor = multicore Abstrakce MProcesory se sdílenou pamětí symetrické × nesymetrické MProcesory s distribuovanou pamětí
Flynnova klasifikace systému staré (1966), hrubé, ale používané Single Instruction, Single Data stream (SISD) Single Instruction, Multiple Data streams (SIMD) Multiple Instruction, Single Data stream (MISD) Multiple Single Instruction stream, Multiple Data stream (MSIMD) – několik propojených SIMD Same Program, Multiple Data stream (SPMD) – každý procesor provádí stejný program, využívají se běžné CPU Multiple Instruction, Multiple Data streams (MIMD)
data jsou zpracovávána výhradně sériově instrukce jsou prováděny sériově stačí jeden CPU řídicí jednotky klasický von Neumannův počítač
jedna data jsou předávána více instrukcím více CPU, každý zpracovává data v jiné fázi „výrobní linka“ umělá kategorie není to pipelining
Jedná instrukce se provádí na více datech Více CPU provádí stejnou instrukci s jinými daty Typické GPU maticové procesory array/matrix procesor for (int i = 0; i <= n; i++) { X[i] = Y[i] + Z[i]; }
Různá CPU mohou provádět různé operace Různá CPU pracují s jinými daty Moderní počítače Distribuované systémy HW virtualizace Grid
Asociativní procesory maticový procesor s HW propojovací sítí adresace dat podle obsahu (ekvivalence, klíč, interval) Počítače řízené daty instrukce nemají vedlejší efekty výstupem je vždy hodnota průmyslový HW...
Komunikace – výměna dat mezi paralelně probíhajícími procesy Synchronizace – zaručení definované posloupnosti operací, logika procesů Režie (overhead) paralelismu čas spotřebovaný na komunikaci čas spotřebovaný na synchronizaci a výměnu dat ostatní režie (knihovny, spuštění, zastavení) Škálovatelnost (scalability) míra růstu výkonosti s růstem paralelismu
Zrychlení
synchronizace přístup ke sdílené paměti různé modely distribuce dat distribuce instrukcí (práce) komunikace minimalizovat režii použít vhodný HW měření
Zápočet nebo zkouška? Projekt dvojice paralelizace nějaké úlohy téma je volné vyhodnocení tzn. zpracování stejné úlohy paralelně a sériově distribuovaný výpočet nebo GPU jednoduchý test