Úvod do paralelních systémů 1. část FIT VUT v Brně
Obsah Paralelní přístup z pohledu praxe Technologické důvody pro zavedení paralelismu Proč nestačí jedno jádro? Moderní procesory přehled vývoje architektur Skalární Superskalární Koncept SIMD vektorové instrukce, MMX, SSE, Architektura VLIW Vícevláknové zpracování Paralelní a distribuované systémy Základní koncepty architektury Propojovací sítě a topologie Vliv architektury paralelního systému na výkonnost Masivně paralelní architektury - GPU Využití grafických čipů pro obecné výpočty (GPGPU) Podrobně je problematika paralelních systémů probírána v magisterských kurzech: Architektura procesorů Architektura a programování paralelních systémů Paralelní a distribuované algoritmy 2
Proč paralelní přístup? Paralelní přístup je nutný pro řešení složitých úloh, které vyžadují vysoký výpočetní výkon. paralelní počítání (na vhodně propojených počítačích běží paralelní algoritmus) Stávající technologická omezení nutí pro zajištění co nejvyšší výkonnosti používat paralelní přístup na všech úrovních (dat, instrukcí, vláken atd.) Jednoprocesorové systémy potřebují k navýšení výkonnosti neúměrně vysoký příkon. Vícejádrové procesory poskytují pro daný povolený příkon vyšší výkonnost. 3
Moorův zákon a výkonnost procesorů Dříve (~ do 2005): výkonnost procesorů rostla zejména díky možnosti zvyšování pracovní frekvence a miniaturizaci tranzistorů Možnost implementovat složitější, sofistikovanější HW Rostoucí složitost a frekvence však vyžaduje vyšší příkon Současnost: roste složitost, ale příkon (frekvenci) už příliš zvyšovat nelze (CMOS) Vyšší výkonnost lze dosáhnout zvýšením stupně paralelismu Zdroj: International Solid-State Circuits Conference, 2013 4
Technologické limity Frekvenci f nelze zvyšovat nad jistou mez => problém s odvedením tepla Jaká je rozumná mez pro příkon? Dnešní procesory mají cca 100 W cm -2 Při snížení Vdd je nutné snížit frekvenci (CMOS) min. Vdd je cca 0,5V Dynamická kapacita C přibližně odpovídá počtu tranzistorů a jejich aktivitě 1000 Atomový reaktor 2 P C Vdd f 100 W/cm 2 10 1 i386 Horká plotna i486 Pentium Pentium Pro Pentium II Pentium III 1,5µ 0,07µ [Pollack, F. J. : New microarchitecture challenges in the coming generations of CMOS process technologies, http://research.ac.upc.edu/hpcseminar/sem9900/pollack1.pdf] 3 P V dd Na příkon má největší vliv Vdd. 5
výkonnost Příkon roste úměrně složitosti Příkon vs. výkonnost Pollackovo pravidlo (empirické) Efektivní (užitečná) výkonnost procesorů je přibližně úměrná druhé odmocnině jejich složitosti 2x více tranzistorů => jen 1,4x vyšší výkonnost 1000 příkon CPU (W) 1.4x 100 Neudržitelné! 10 příkon 1990 1995 2000 2005 2010 2015 6
Trendy v oblasti vývoje výpočetních systémů Zdroj: International Solid-State Circuits Conference, 2013 Redukce příkonu (snižování Vdd a frekvence) => snížení výkonosti Kompenzace v podobě zvýšení stupně paralelismu CLOCK: IBM System Z: 5,7 GHz, 2,75 mld. tranzistorů CORE: 24-jádrový procesor, Fudan University, Shanghai 7
Trendy v oblasti vývoje výpočetních systémů International Technology Roadmap for Semiconductors, www.itrs.net Předpovědi vývoje různých parametrů v oblasti polovodičů a jejich aplikací Předpověď 2008 Předpověď 2011 Předpověď 2008 Předpověď 2011 Zdroj: ITRS 2011 Executive Summary, www.itrs.net 8
Měření výkonnosti Skalární procesory Výkonnost = f / (CPI x 10 6 ) [MIPS] CPI Clocks Per Instruction - Př. CPI = 2 znamená, že v každém druhém taktu je dokončena instrukce (obvykle se CPI uvádí jako průměrná hodnota) Superskalární, vícejádrové procesory Výkonnost = f x IPC IPC Instructions Per Clock - Př. IPC = 4 znamená, že je možné dokončit 4 instrukce v každém taktu (obvykle se IPC uvádí jako průměrná hodnota) Požadujeme Co nejvyšší výkonnost za rozumnou cenu (počet tranzistorů a příkon). 9
10
11
Power ~ (1+0,2) 3 12
Power ~ (1+0,2) 3 Power ~ (1-0,2) 3 13
14
Příklad z praxe: Nižší příkon při zvýšení výkonnosti Systém: řízení a zpracování dat v FPGA pro inteligentní kameru Stávající řešení FPGA, napájecí napětí 1,8 V, pracovní frekvence 100MHz, 150nm CMOS technologie Nové řešení FPGA, napájecí napětí 1,2 V, 90nm technologie (menší parazitní kapacity), větší čip (díky novější technologii výroby) Cena nového FPGA je prakticky stejná Technické řešení Pracovní frekvence je snížena úměrně napájecímu napětí na 1,2V/1,8 V 100MHz = 66 MHz Příkon nové jednotky P new 2 90/150 (1,2/1,8) 66/100 0, 176 P Výpočetní jednotka je 3 replikována Výsledný obvod - odhad Dvojnásobná výkonnost - 3 66 MHz = 198 MHz oproti původním 100 MHz Poloviční příkon P opt 3 P 3 0,176 P 0, 528 P new 15
Paralelní zpracování v procesorech Funkční paralelismus paralelismus na úrovni instrukcí (ILP Instruction level Parallelism) řetězení ~ překrývající se zpracování instrukcí vícecestné zpracování paralelismus na úrovni vláken (TLP Thread Level Parallelism) Datový paralelismus provádění stejných operací nad různými daty (MMX, SSE) vektorový procesor - opakované využití funkčních jednotek a překrytí operací v čase 16
Klasifikace procesorů Architekturu procesoru charakterizují parametry: m - počet instrukcí, které se v jednom okamžiku vydávají ke zpracování r - počet současně prováděných (rozpracovaných) instrukcí Subskalární procesory (von neumannovské) r = 1, m = 1 doba provádění programu je součtem dob trvání jednotlivých instrukcí. nová instrukce může být vydána až po té, co je zpracována předchozí. Skalární procesory r>1, m=1 využívají řetězené zpracování instrukcí, kdy je v každém taktu vydávána maximálně jedna instrukce, ale současně jich může být rozpracováno několik. Superskalární procesory r>1, m>1 vydávají k zpracování více než jednu instrukci v jednom taktu současně je rozpracováno několik instrukcí Další charakteristika Vícevláknové procesory - několik vláken je prováděno na 1 CPU Vícejádrové procesory více vláken na několika CPU Vektorové procesory, VLIW atd. 17
Klasifikace vybraných procesorů Subskalární 4004, 8008 Skalární 8086, 80286, 80386, 80486 Superskalární Intel Pentium 1-4, AMD Opteron, VLIW Itanium, Itanium 2 Vícejádrové (superskalární) Core Duo, Core 2 Duo, Core 2 Quad core i3, Core i5, Core i7 and Core i9 Pentium D, 2 single-core dies packaged in a multi-chip module. Pentium Dual-Core, a dual-core processor. Xeon dual-, quad- and hexa-core processors 18
Superskalární procesory m-cestný (řetězený) procesor Dovoluje vydávat v jednom taktu až m instrukcí. Podporuje řetězené zpracování instrukcí, kdy se využívá několik paralelně pracujících linek (paralelní načítání, paralelní dekódování instrukcí atd.) Mezi stupni řetězené linky jsou vícemístné buffery namísto registrů. Data-flow zpracování - rozpracované instrukce, které čekají na operandy, je možné odložit do bufferu a probudit je, až budou operandy připraveny. Procesor má tři části Načtení/dekódování/rozesílání (pořadí instrukcí dodrženo) Provedení instrukcí v paralelně pracujících linkách (instrukce mohou být provedeny mimo pořadí) Dokončení (podle pořadí) Charakteristika Dynamické plánování instrukcí Provádění instrukcí mimo pořadí Spekulativní provádění skoků Pokročilé řešení konfliktů ILP přejmenování registrů (HW podpora), přeskládání instrukcí, pokročilý přístup do cache atd. 19
Př. Intel Pentium (1993) Advanced Programmable Interrupt Controller http://en.wikipedia.org/wiki/pentium Bus width 64 bits System bus clock rate 60 or 66 MHz Address bus 32 bits Addressable Memory 4 GB Virtual Memory 64 TB Superscalar architecture Runs on 5 volts 16 KB of L1 cache U and V pipeline (m=2) 20
Intel Pentium 4 - mikroarch. NetBurst BTB (4k entries) Trace Cache BTB (512 entries) Memory op Queue I-TLB/Prefetcher IA32 Decoder Execution Trace Cache Allocator / Register Renamer INT / FP op Queue Code ROM op Queue 64 bits 64-bit System Bus Quad Pumped 400M/533MHz 3.2/4.3 GB/sec BIU Memory scheduler Fast Slow/General FP scheduler Simple FP INT Register File / Bypass Network AGU AGU 2x ALU 2x ALU Slow ALU Simple Simple Complex Ld addr St addr Inst. Inst. Inst. FP RF / Bypass Ntwk FP MMX SSE/2 L1 Data Cache (8KB 4-way, 64-byte line, WT, 1 rd + 1 wr port) FP Move 256 bits U-L2 Cache 256KB 8-way 128B line, WB 48 GB/s @1.5Gz 21
Superskalární procesory Superskalární přístup dosáhl svých mezí Výkonnost = IPC x f IPC a f [MHz] jdou proti sobě! Vysoký IPC (až 6) => složitý HW => nízká f Vysoká f => jednodušší HW => nízké IPC Pro m > 4-8 již většinou nemá smysl (zrychlení je <3x) Zvyšování f je nevýhodné z hlediska příkonu - plánované projekty superskalárních procesorů s vysokými kmitočty (9,2 GHz a10,2 GHz firmy Intel) byly opuštěny pro vysoký příkon Další vývoj: VLIW, vícevláknové procesory, vícejádrové procesory 22
Př. Pentium 4 (2000), mikroarchitektura NetBurst stupňů linky: 20 (až 31) rozpracováno až 126 instrukcí Branche Target Buffer (BTB) 4096 pol. Trace cache 12K (místo I-cache) L1 D-cache: 8 kb, Load: 2 takty L2 cache: 256 kb, 256 bitů SSE2 viz dále hyperthreading viz dále externí přenosy QDR (Quad Data Rate): s 200 MHz dosáhne 6,4 GB/s. Pozn.: Nástupcem NetBurst je od r. 2006 Core 2 (dvoujádrový procesor s nižším příkonem) 23
Intel Core 2 Sdíleno! http://en.wikipedia.org/wiki/intel_core_(microarchitecture) 24
VLIW = Very Long Instruction Word Používá několik nezávislých funkčních jednotek (např. 2 x FX, 2 x FP, 2 x L/S) pracujících synchronně Existuje mnoho bran čtení a zápisu u souboru registrů FX a FP i paměti. Kompilátor sbalí pevný počet instrukcí do jedné VLIW instrukce o délce 64-128 bitů a víc; sbalené instrukce nemusí být v původním pořadí. Kompilátor plánuje instrukce staticky (oproti superskalárním procesorům) v době kompilace a určuje, které instrukce mohou běžet paralelně, a zahrne tuto informaci do strojové instrukce VLIW. Operace specifikované ve VLIW musí být nezávislé na sobě navzájem i na předchozích VLIW. Když nelze naplánovat plný počet instrukcí, doplní se instrukce NOP. Dílčí instrukce z nezávislých skupin jsou vydávány a prováděny paralelně, v každém taktu jedno VLIW. 25
Př. VLIW: Intel Itanium 2 (IA-64) 1,5 (1,7) GHz, 130 W, 1,3 V, proces 130 nm Jednotky: 2 x store, 2 x Load, 4 x MMX, 4 x FP, 6 x FX L1 I-cache, D-cache: 4-cestná, 16 kb, write-through L2 cache 256 kb, 8-cestná, write-back, sjednocená L3 cache: 6 MB, 24-cestná, write-back, také na čipu! 128 registrů FX (65 bit), 128 registrů FP + MMX (82 bit) 8 registrů cílových adres nepřímých skoků (branch register) Sběrnice 128 datových bitů @ 400 MHz = 6,4 GB/s (oproti 2,1 GB/s u Itania). 26
Vývoj moderních mikroarchitektur AMD 2011 2012 2013 2014 www.anandtech.com 27
Př.: mikroarchitektura AMD Piledriver (2012) http://www.xbitlabs.com/hot-topics/amd-piledriver 28
Vektorové procesory Procesor obsahuje vektorovou jednotku, která pracuje souběžně se skalární; Každý takt končí operace s jedním prvkem vektoru, operace na prvcích vektoru jsou datově nezávislé. Je nutný vektorizující kompilátor schopný účinně konvertovat skalární kód na vektorový. Použití: vědecké výpočty Procesor VDLX (modifikace DLX) Na obrázku má pole VRF (vector register file) 8 vektorových registrů, 16 bran čtení a 8 bran zápisu; každý registr obsahuje 64 prvků, 64 bitů / prvek. 29
Vektorové procesory Dosažitelné zrychlení za použití vektorové jednotky je závislé na části kódu, který je převoditelný na vektorové instrukce. Příklady vektorových instrukcí: addv v3, v1, v2 lv v1, r1 ; načti vektor z paměti do registru v1; adresa 1. prvku je v r1 lvi v1,(r1+v2) ; načti vektor podle indexů ve vektoru v2, adresa prvku je r1 + v2(i): s**v v1,v2 ; nastav 64-bitový registr masky VM (Vector Mask) podle relace ** (eq, ne, gt,...) mezi prvky v1 a v2 Další: Vektorová redukce (např. součet/max/min/průměr položek ve vektoru), skalární součin atd. Paralelně pracující sčítačky nebo zřetězená sčítačka 30
Instrukce MMX Podpora multimediálních instrukcí v procesorech Intel (od Pentia II) Zavedeny nové sbalené (packed) datové typy malé datové prvky (8-bitové pixely, 16- bitové vzorky zvuku,...) jsou sbaleny dohromady do jednoho 64-bitového slova Zavedeny nové instrukce (57), které pracují se všemi datovými prvky paralelně (styl SIMD) výkonnost zlepšena 3-5krát pro vnitřní smyčky, 1,5 2 krát pro celé programy plná kompatibilita s existujícími mikroprocesory Intel (OS a SW) Registry MMX 64-bitové registry MMX (MM0 - MM7) jsou mapovány na registry FP - jsou identické s dolní částí 80-bitových registrů FP při zápisu do registrů MMX je bit 64 až 79 nastaven na 1 (NaN, Not a Number) do souboru registrů MMX je možný náhodný přístup! Aplikace nemohou používat registry FP současně pro FP a MMX data a kód musí být rozdělen na části FP a MMX. 31
MMX 32
SIMD: Instrukce SSE Další rozšíření intelovské architektury IA (od Pentia III) je SSI (SIMD Streaming Instructions, proudové instrukce SIMD). Přidány nové 128b registry (XMM) a instrukce V tomto rozšíření mohou registry o velikosti 128 bitů uchovávat několik čísel FP, na kterých se provádějí paralelní operace FP ve stylu SIMD. Cenou za toto další rozšíření je navýšení plochy proti Pentiu II o 10%, zvýšení výkonnosti však činí až 62% (3D grafika) nebo 29% (MM). SSE2, SSE3, SSSE3, SSE4 další vylepšení AVX 256-bitové registry, v budoucnu až 1024 bitů 33
Instruction Level: Intel SSE In Each Core Single Cycle SSE SOURCE SSE/2/3 OP 127 X4 SSE Operation (SSE/SSE2/SSE3) X3 X2 X1 0 DECODE DECODE DEST Y4 Y3 Y2 Y1 Core arch CLOCK CYCLE 1 X4opY4 X3opY3 X2opY2 X1opY1 EXECUTE EXECUTE Previous CLOCK CYCLE 1 X2opY2 X1opY1 CLOCK CYCLE 2 X4opY4 X3opY3 Perf Energy SIMD instructions compute multiple operations per instruction *Graphics not representative of actual die photo or relative size 34
Multivláknové procesory Vlákno (thread) je posloupnost instrukcí vyžadující určitý adresový prostor a čas CPU. Vlákna jsou (oproti procesům) lehká, přepnutí kontextu je rychlejší, kopíruje se méně dat. Vlákna tvořená v rámci procesu sdílí jeho adresový prostor a další prostředky kód, hromadu aj. K vláknu patří jen ukazatele IP a SP (instruction pointer, stack pointer), PSW (program status word) včetně myid a priority, sada registrů a zásobník. Nejčastěji je to programátor, kdo explicitně vlákna vytvoří při paralelizaci programu. Multivláknový provoz (MT - MultiThreading) Časový vlákna se střídají na jednom CPU (TMT) Prostorový vlákna běží paralelně v multiprocesorovém systému se sdílenou pamětí (P procesorů / P vláken) Časoprostorový (na P procesorech běží R vláken a R>P) 35
Multivláknové procesory Podpora více vláken v HW je asi nejzajímavější technika pro překlenutí vysoké latence přístupu do paměti. Musí však existovat dostatek vláken. Doba přepnutí vlákna (přepnutí kontextu) musí být krátká. Na obrázku je porovnání typického výpočtu pro různé architektury: 36
Př. Počet vláken pro TMT Jestliže chceme tolerovat latenci přístupů do paměti (např. L = 70 taktů) multivláknovými CPU, kolik vláken (N) bude třeba pro získání maximální účinnosti, když jedno vlákno běží průměrně R=10 taktů a přepnutí kontextu trvá S = 3 takty? (N 1)R + NS L (N 1)10 + 3N 70 13N 80 N 6,15 N 7 37
Multivláknový procesor Z pohledu HW Prostředky sdílené vlákny: Procesor, cache, prediktory skoků Prostředky replikované pro každé vlákno Sada registrů, PC, SP, PSW, řadič přerušení Je třeba dodat nový HW např. pro výběr vlákna Techniky TMT Hrubý MT Jedno vlákno běží řadu taktů, k přepnutí kontextu dochází pouze při výskytu události s dlouhou latencí, která by vedla k zastavení linky. Jemný MT každém taktu se přepíná na jiné vlákno (prokládání vláken). SMT, souběžný (současný) MT (Simultaneous Multithreading). V každém taktu přepíná kontext několika vláken současně, protože v jednom taktu se zpracovávají instrukce z několika vláken. Hyperthreading (firemní název, Pentium 4) 2 vlákna kombinuje jemný MT (pokud vlákna nejsou pozastavena) a hrubý MT (pokud je jedno vlákno pozastaveno). Nárůst ploch cca 5%, nárůst výkonnosti cca 25%. (4-cestný superskalární CPU, TNT) 38
Multithread, multicore - shrnutí Podpora vícevláknového zpracování (multitasking, multithreading) může mít různou podobu Přepínání úloh pouze z úrovně OS dnes se již samostatně téměř nepoužívá Přepínání s podporou HW CPU nejedná se o paralelní zpracování, úlohy běží v časovém multiplexu (hrubý/jemný MT) Vícecestné procesory souběžný MT, výhradně s HW podporou CPU, paralelní vykonávání instrukcí různých úloh (pokud je to možné sdílení určitých komponent CPU) Vícejádrové procesory (multiprocesory) každé jádro může autonomně spouštět různé úlohy (vlákna nebo i procesy). Běžně se používá v kombinaci s dříve uvedenými přístupy. Komunikace mezi vlákny se provádí přes sdílenou paměť. Programování nejčastěji pomocí OpenMP (C/C++) 39
Ukázka kódu s více vlákny (OpenMP) OpenMP MultiProcessing rozšíření C/C++ o direktivy #pragma omp a další knihovní funkce, umožňující specifikovat, jakým způsobem má být kód paralelizován. 40
Pokračování příště 41
Úvod do paralelních systémů 2. část FIT VUT v Brně
Obsah Paralelní přístup z pohledu praxe Technologické důvody pro zavedení paralelismu Proč nestačí jedno jádro? Moderní procesory přehled vývoje architektur Skalární Superskalární Koncept SIMD vektorové instrukce, MMX, SSE, Architektura VLIW Vícevláknové zpracování Paralelní a distribuované systémy Základní koncepty architektury Propojovací sítě a topologie Vliv architektury paralelního systému na výkonnost Masivně paralelní architektury - GPU Využití grafických čipů pro obecné výpočty (GPGPU) Podrobně je problematika paralelních systémů probírána v magisterských kurzech: Architektura procesorů Architektura a programování paralelních systémů Paralelní a distribuované algoritmy 43
Jak využít n procesorů? Procesory nekomunikují (n krát rychlejší než sekvenční počítač) Mohu spustit současně více různých úloh, každou na jednom procesoru Mohu spustit stejnou úlohu na n procesorech, ale s jinými parametry (např. program pro předpověď počasí s různým nastavením počátečních podmínek zrychlení n-krát oproti sekvenčnímu počítači) procesory komunikují (spolupracují) za účelem vyřešení složité úlohy v rozumném čase, jedná se o paralelní systém Návrh řešení určité úlohy na paralelním systému se nazývá paralelní programování Procesory společně řeší jednu úlohu, musí být vhodně propojeny Někdy je možné dosáhnout větší zrychlení než v předchozím případě! Příklad: paralelní řazení Enumeration sort (pro k prvků) Pokud je k dispozici k 2 procesorů, je časová složitost O(log k) Příklad: paralelní řazení Bucket sort (pro k prvků) Pokud je k dispozici log (k) procesorů, je časová složitost O(k) 44
Paralelní systém základní vrianty Se sdílenou pamětí (shared memory, SM) Obvykle řešeno jako tzv. UMA uniform memory access, kdy latence přístupu do sdílené paměti je stejná u všech procesorů (SMP symetrický multiprocesor). Programování pomocí OpenMP Výhoda: efektivní komunikace Nevýhoda: max. pouze ~ 32 procesorů (v závislosti na použité propojovací síti) S distribuovanou pamětí (distributed memory, DM) Každý procesor má svoji (privátní) paměť Programování (komunikace) pomocí knihovny zasílání zpráv (MPI Message Passing Imterface), případně přes síťové sokety Výhoda: škálovtelnost Nevýhoda: vyšší komunikační režie Se distribuovanou sdílenou pamětí (distributed shared memory, DSM) Obvykle řešeno jako tzv. CC-NUMA (cache coherent non-uniform memory access) 45
Propojení víceprocesorových systémů Komunikace mezi procesory a přístup ke sdíleným prostředkům jsou realizovány přes propojovací sítě např. sběrnice, úplné propojení, Xbar apod. (viz dále) http://www.fujitsu.com/global/services/computing/server/sparcenterprise/technology/performance/crossbar.html 46
Křížový přepínač (X-bar) Propojení 1:1 mezi vstupy a výstupy. Je možné propojit 1 vstup k několika výstupům. Více vstupů k jednomu výstupu se připojit nesmí. Je nutné použít arbitr. Cena: p 2 přepínačů (řešení založeno na multiplexorech) drahé řešení Použití: propojení procesorů s procesory nebo paměťovými moduly Způsob propojení procesorů a typ linek má zásadní vliv na výkonnost! 47
Zahltit sběrnici není obtížné Uvažme procesory (každý s I-cache a D-cache) propojené navzájem sběrnicí a připojené k paměti Hit rate h i = 98% v I-cache Hit rate h d = 95% v D-cache Procesor má výkonnost 250 MIPS Přístup do D- cache potřebuje 1/3 instrukcí (~ 75 MIPS) Počet výpadků v I-cache 2% x 250 MIPS = 5 M výpadků /s Počet výpadků v D-cache 5% x 75 MIPS = 3,75 M výpadků /s Celkem 8,75 M výpadků/s Při každém výpadku se po sběrnici přenáší blok o velikosti 16B. Potřebná šířka pásma je pro každý procesor 8,75 M výpadků/s x 16B = 140 MB/s Kolik procesorů zahltí sběrnici, která má propustnost 1GB/s? N = 1000 / 140 => 7 procesorů Závěr: Větší počet procesorů nemá smysl propojovat sběrnicí! 48
Přímé propojovací sítě příklady topologií 49
Př. Sečtení k čísel na n procesorech Sekvenční řešení: t s = k - 1 kroků Paralelní řešení (každý procesor má k/n čísel): Hyperkostka: t p = k/n + 2 log 2 n kroků Kruh: t p = k/n + 2n/2 = k/n + n kroků Hyperkostka n = 8 práce jednoho procesoru komunikační režie Kruh n = 8 krok 1 1 2 2 3 krok 1 krok 2 krok 3 výsledek 3 výsledek 4 Pozn.: Operace pošli mezivýsledek a sečti je počítána jako 2 kroky. 50
Př. Sečtení k čísel na n procesorech zrychlení = t s / t p 8 procesorů 9 8 zrychleni_krychle zrychleni_kruh 7 6 5 4 3 2 1 0 0 500 1000 1500 2000 k Je patrný velký vliv komunikační režie na zrychlení pro nízké hodnoty k. 51
Př. Sečtení k čísel na n procesorech k = 2048 100 90 80 70 60 zrychleni_hyperkostka zrychleni_kruh 50 40 k 30 20 10 0 0 200 400 600 800 1000 n U kruhu je patrný velký vliv komunikační režie na zrychlení pro větší počet procesorů. 52
Nejvýkonnější superpočítače (2013) http://www.top500.org/ 53
Vybrané paralelní výpočetní systémy v ČR Výpočetní cluster na FIT VUT v Brně (řízeno systémem SGE) Až 2400 procesů (dle stavu jednotlivých serverů/modulů) V současnosti 102 uzlů, každý vybaven 2x CPU 4-16 jader, 4-256 GB RAM Malý cluster Anselm, VŠB-TU Ostrava (spuštěn 2013), součást projektu IT4Innovations (VUT je účastníkem projektu) Přes 200 uzlů, každý vybaven 2x CPU Intel Sandy Bridge 8-core, 96 GB RAM, některé navíc disponují GPU akcelerátorem Nvidia Tesla Kepler K20 Ve výstavbě je velký cluster dokončení ~ 2015, současný odhad kolem 15. místa v top500 (IT4Innovations, VŠB-TU Ostrava) 54
Graphics Processing Elements (GPU) GPU programovatelná grafická karta (od r. 2001, Nvidia GeForce 3) Tradiční použití GPU grafická pipeline GPU Propustnost 55
General-Purpose Computation on Graphics Hardware (GPGPU) GPGPU provádění obecných výpočtů na GPU (v současnosti velmi populární, vysoký výkon za nízkou cenu) Má smysl pro určité úlohy typu SIMD (statisíce datových položek) rychlé a velké cache, predikce skoků, vysoká výkonnost pro jedno vlákno, podpora přerušení, virtualizace paměti. velké množství ALU zejména operace MAD - vynásob a sečti, FMA (MAD pro FP, jedno zaokrouhlení), mnoho HW vláken, rychlé lokální paměti, špatná podpora větvení, nízký výkon na jedno vlákno. přibližně stejná plocha ve srovnání s CPU http://www.pgroup.com/lit/articles/insider/v2n4a1.htm 56
Vhodné problémy pro GPU 57
Výkonnost GPU ve srovnání s procesory http://michaelgalloy.com/2013/06/11/cpu-vs-gpu-performance.html 58
Př. GeForce GTX 280 SM streaming multiprocessor SFU - Special Function Units TPC -Texture/Proces-sor Cluster 59
Příklad současné GPU 60
Prostředky pro tvorbu aplikací na GPU CUDA (Compute Unied Device Architecture) je knihovna firmy Nvidia určená pro obecné výpočty optimalizované na GPU. Příklad: násobení matic konvenčně a pomocí CUDA C OpenCL platforma pro tvorbu aplikací přenositelných mezi různými architekturami (např. GPU, ARM a další) Méně efektivní, překlad prováděn za běhu automaticky pro danou architekturu 61
Literatura Dvořák, V., Drábek, V.: Architektura procesorů. Studijní opora. FIT VUT v Brně 2006 Dvořák, V.: Architektura a programování paralelních systémů. Skriptum VUT v Brně 2004 Hanáček, P.: Paralelní a distribuované algoritmy. Přednášky FIT VUT v Brně, 2008 Fučík O.: Hardware/Software codesign. Habilitační přednáška, FIT VUT v Brně 2009 Bhandarkar D.: The Dawn of a New Era: Multi-Core Computing. Intel 2006 Pospíchal P.: Akcelerace genetického algoritmu s využitím GPU. Diplomová práce FIT VUT v Brně, 2009 Pozn. Většina obrázků převzata z internetu a uvedených publikací Podrobně je problematika paralelních výpočtů probírána v magisterských kurzech: Architektura procesorů Architektura a programování paralelních systémů Paralelní a distribuované algoritmy 62