Úvod do paralelních systémů



Podobné dokumenty
Charakteristika dalších verzí procesorů v PC

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

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

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Vícejádrový procesor. Dvě nebo více nezávislých jader Pro plné využití. podporovat multihreading

Charakteristika dalších verzí procesorů Pentium

Pokročilé architektury počítačů

Procesor. Procesor FPU ALU. Řadič mikrokód

Architektury VLIW M. Skrbek a I. Šimeček

PROCESOR. Typy procesorů

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

Úvod do architektur personálních počítačů

Cache paměť - mezipaměť

Představení a vývoj architektur vektorových procesorů

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Pohled do nitra mikroprocesoru Josef Horálek

Architektura Intel Atom

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Technické prostředky počítačové techniky

Výstavba PC. Vývoj trhu osobních počítačů

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Pokročilé architektury počítačů

Roman Výtisk, VYT027

Architektury CISC a RISC, uplatnění v personálních počítačích

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Výkonnost mikroprocesoru ovlivňují nejvíce dvě hlediska - architektura mikroprocesoru a tzv. taktovací frekvence procesoru.

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

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

Operač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

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

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

MIKROPROCESOR. (c) Ing. Josef Varačka. Title: XI 28 11:40 (1 of 8)

Architektura počítače

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

Přednáška #12: Úvod do paralelních počítačů. Paralelní počítače a architektury

ARCHITEKTURA PROCESORŮ

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

Povídání na téma. SUPERPOČÍTAČE DNES A ZÍTRA (aneb krátký náhled na SC) Filip Staněk

Hlavní využití počítačů

Vlastnosti mikroprocesorů Josef Horálek

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Pokročilé architektury počítačů

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

PROCESORY. Typy procesorů

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

PV109: Historie a vývojové trendy ve VT

ORGANIZAČNÍ A VÝPOČETNÍ TECHNIKA

Pokročilé architektury počítačů

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

Intel Pentium D (1) Intel Pentium D (4) Intel Pentium Extreme Edition (1) Intel Pentium D (5)

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Nvidia CUDA Paralelní programování na GPU

Architektura počítačů

MSP 430F1611. Jiří Kašpar. Charakteristika

Intel Itanium. Referát. Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky

Identifikátor materiálu: ICT-1-08

ARCHITEKTURA PROCESORŮ

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

Intel Procesor a jeho konstrukce. Vývojové typy, činnost procesoru

Paměť počítače. 0 (neprochází proud) 1 (prochází proud)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 TECHNICKÉ VYBAVENÍ POČÍTAČŮ

Intel Pentium D (1) Intel Pentium D (4) Intel Pentium Extreme Edition (1) Intel Pentium D (5)

Struktura a architektura počítačů

Řetězené zpracování. INP 2008 FIT VUT v Brně

Paměti Josef Horálek

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Co je grafický akcelerátor

Princip funkce počítače

Profilová část maturitní zkoušky 2014/2015

Architektura procesoru ARM

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

Luděk Matyska. Jaro 2015

Architektura procesorů PC shrnutí pojmů

Kvantitativní principy návrhu počítačů

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Operace ALU. INP 2008 FIT VUT v Brně

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Referát (pokročilé architektury počítačů)

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

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Cache paměti (2) Cache paměti (1) Cache paměti (3) Cache paměti (4) Cache paměti (6) Cache paměti (5) Cache paměť:

Procesy a vlákna (Processes and Threads)

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

Profilová část maturitní zkoušky 2015/2016

Operační systémy. Přednáška 8: Správa paměti II

Nvidia CUDA Paralelní programování na GPU

Vyuºití GPGPU pro zpracování dat z magnetické rezonance

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Transkript:

Ú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