Pokročilé architektury počítačů

Podobné dokumenty
Architektury VLIW M. Skrbek a I. Šimeček

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

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

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

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

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

Základní komunikační operace

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

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

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

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

Princip funkce počítače

Charakteristika dalších verzí procesorů v PC

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

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

Procesy a vlákna (Processes and Threads)

Paralelní programování

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

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

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

4. Úvod do paralelismu, metody paralelizace

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

Architektura Pentia úvod

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

IB109 Návrh a implementace paralelních systémů. Kolektivní komunikační primitava. RNDr. Jiří Barnat, Ph.D.

Paralelní programování

Pokročilé architektury počítačů

Pohled do nitra mikroprocesoru Josef Horálek

Pokročilé architektury počítačů

Pokročilé architektury počítačů

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

Paralelní programování

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

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

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

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

Pokročilé architektury počítačů

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

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

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Architektura procesorů PC shrnutí pojmů

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

Řízení IO přenosů DMA řadičem

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Struktura a architektura počítačů (BI-SAP) 7

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

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

Martin Lísal. Úvod do MPI

Pokročilé architektury počítačů

Charakteristika dalších verzí procesorů Pentium

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

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

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

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

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

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

Architektura Intel Atom

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

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

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

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

Operace ALU. INP 2008 FIT VUT v Brně

Architektura počítače

LabView jako programovací jazyk II

Adresní mody procesoru

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Vláknové programování část I

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

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Principy počítačů a operačních systémů

Pokročilé architektury počítačů

Operační systémy. Přednáška 2: Procesy a vlákna

Architektura procesoru ARM

Management procesu I Mgr. Josef Horálek

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

Využijte plný výkon procesorů s více jádry v LabVIEW 8.5

Principy operačních systémů. Lekce 6: Synchronizace procesů

Strojový kód. Instrukce počítače

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

Pokročilé architektury počítačů

Ukázka zkouškové písemka OSY

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Systém řízení sběrnice

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

Paralelní výpočty ve finančnictví

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

Paralelní programování

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

Počítač jako prostředek řízení. Struktura a organizace počítače

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

Procesor z pohledu programátora

Systém adresace paměti

Cache paměť - mezipaměť

Y36SAP

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

Transkript:

Pokročilé architektury počítačů Úvod část I. Paralelizmus na úrovni instrukcí, vláken, programů a dat; Časový a prostorový paralelizmus; Datová a řídicí závislost; Bernsteinovy podmínky paralelizmu; České vysoké učení technické, Fakulta elektrotechnická A4M36PAP Pokročilé architektury počítačů Ver.1.00 1

Paralelizmus na úrovni instrukcí Paralelizmus na nejnižší úrovni bit-level parallelism (šířka slova; součet dvou 64-bitových čísel v 32-bit mikroproc., zběrnice,..) Paralelizmus na úrovni instrukcí Instruction level parallelism Zřetězení (pipelining) časový paralelizmus (sekvenční instr. proud) Superskalární vykonávání (v širším smyslu) prostorový paralelizmus Zřetězení: Předpokládejme, že vykonání instrukce můžeme rozdělit do 5 stupňů: IF ID EX MEM WB IF Instruction Fetch, ID Instr. decode (and Operand Fetch), MEM Memory Access, EX Execute, WB Write Back a dále = max { i } k i=1, kde i je čas šíření (propagation delay) v i-tém stupni. A4M36PAP Pokročilé architektury počítačů 2

Paralelizmus na úrovni instrukcí - zřetězení IF I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 ID I1 I2 I3 I4 I5 I6 I7 I8 I9 EX I1 I2 I3 I4 I5 I6 I7 I8 MEM I1 I2 I3 I4 I5 I6 I7 ST I1 I2 I3 I4 I5 I6 Čas vykonání n instrukcí k-stupňové pipeline: T k = k. + (n 1) Předpoklad: ideálně vyvážená pipeline Zrychlení: 1 2 3 4 5 6 7 8 9 10 S k T T 5 1 k nk k ( n 1) lim S n k k čas A4M36PAP Pokročilé architektury počítačů 3

Paralelizmus na úrovni instrukcí - zřetězení Neredukuje čas vykonání individuální instrukce, právě naopak.. Hazardy: Strukturální (řešeny duplikací), datové (důsledek datových závislostí) a řídicí (instrukce měnící PC)... Hazardy způsobují (mohou způsobovat) pozastavení vykonávání (stall) nebo vyprázdnění pipeline Pozn. : Hlubší pipeline (více stupňů) znamená méně hradel v každém stupni a tím pádem možnost zvýšit pracovní frekvenci procesoru.., avšak více stupňů znamená i vyšší režii (nutnost lépe řadit instrukce do pipeline) A4M36PAP Pokročilé architektury počítačů 4

Paralelizmus na úrovni instrukcí zřetězení + superskalárnost Zřetězené superskalární vykonávání: IF ID EX MEM WB IF ID EX MEM WB N IF ID EX MEM WB S k k T1 nnk, N lim S T k ( n 1) n k, N Nk Sekvenční instrukční proud Datové závislosti jsou dynamicky zjišťovány hardwarem (vs. softwarem při kompilaci -> staticky: WLIV) k, N A4M36PAP Pokročilé architektury počítačů 5

Paralelizmus na úrovni instrukcí Podporované techniky ILP pro zvýšení stupně paralelizmu: Předání výsledků uvnitř pipeline (forwarding) Vykonávání mimo pořadí (out-of-order execution) Přejmenovávání registrů (register renaming) Spekulativní vykonávání (speculative execution) Předpovídání větvení (branch prediction) VLIW (Very Long Instruction Word) a EPIC MIMD na nejnižší úrovni Detailněji v přednáškách č. 05 až 08 A4M36PAP Pokročilé architektury počítačů 6

Paralelizmus na úrovni vláken Multithreading vícero vláken sdílí funkční jednotky procesoru (jádra) snaha využít nevyužité v porovnání s multiprocessingem Zvyšuje propustnost celého systému, ne individuálního vlákna Procesor (jádro) musí uchovávat stav každého vlákna přepínaní kontextu (kopie pracovních registrů - RF, GPR, PC, ) Podpora virtuální paměti Schopnost přepínání vláken rychle vs. přepínání procesů Multithreading: temporální (nebo také prokládaný interleaved) jemnozrnný hrubozrnný simultánní (nebo také hyperthreading Intel) vždy jemnozrnný A4M36PAP Pokročilé architektury počítačů 7

Paralelizmus na úrovni vláken 4-cestný superskalární procesor (TLP -> ILP): využité sloty vertikální nevyužití horizontální x x x x x x x x x x x x + x x x x o o o x x x x x x x x + + + x x x x x x o o o x x x x x + + o o o o o o o o o o x x o o + + + + + x x x x x x o o o x o o o x x x o o o x x x x x o o o o + + + x x + + + + + + + o o x x + + + + čas čistě superskalární hrubozrnný multithreading jemnozrnný multithreading simultánní multithreading A4M36PAP Pokročilé architektury počítačů 8

Paralelizmus na úrovni vláken Čistě superskalární limitován nedostatkem ILP, dlouhé prostoje při výběru instrukcí a dat z paměti (instruction L2 cache miss) Hrubozrnný MT dlouhé prostoje odstraněny přepínáním vláken; prázdné cykly (start-up perioda) a nevyužití všech prostředků (výkonných jednotek) zůstává; Jemnozrnný MT přepínaní v každém cyklu; nevyužití všech prostředků zůstává; pozastavená vlákna jsou ignorována; Simultánní MT přepínaní v každém cyklu; souběžné vykonávání více než jednoho vlákna; využití všech prostředků je dáno požadavky vláken A4M36PAP Pokročilé architektury počítačů 9

Paralelizmus na úrovni úloh TLP (Task-level parallelism) také též funkční nebo řídicí paralelizmus softwarový pohled multiprocessing jako podpora TLP softwarový (multitasking) i hardwarový pohled (symetrický / asymetrický; těsně / volně vázaný,..) - HW prostředky jsou pro vlákna rozděleny, avšak SMT možný (procesor Intel Core i7-980x: 6 jader, 2 vlákna/jádro simultánně) TLP: SPMD program: if CPU_ID == 0 then do task "A" else if CPU_ID == 1 then do task "B" end if Každý procesor (jádro) rozpozná své ID a vykoná pouze svou část programu A4M36PAP Pokročilé architektury počítačů 10

Paralelizmus na úrovni úloh TLP MPMD program: rozdělení programu na moduly (vzájemně komunikující!) náročné vědecké aplikace, ale také klient-server aplikace; Klíčové prvky: komunikace mezi uzly (z hardwarové stránky) nebo procesy či vlákny (ze softwarové stránky) vzájemná synchronizace Podle míry komunikace se HPC programy spouštějí na: těsně vázaných procesorech (MPP) volně vázaných procesorech (Cluster, Grid) Běh nezávislých programů A4M36PAP Pokročilé architektury počítačů 11

Paralelizmus na úrovni dat identické operace nad množinou dat (SIMD) rozdělení dat jednotlivým uzlům (procesům): for i from lower_limit to upper_limit do a[i] = b[i] + c[i] Každý procesor (jádro) má jiný dolní a horní limit = pracuje s jinými daty paralelizmus explicitně vyjádřen (OpenMP), implicitní (kompilátory) podpora programovacími jazyky A4M36PAP Pokročilé architektury počítačů 12

Závislosti v programech Podmínkou paralelního vykonání více programových segmentů nezávislost od ostatních segmentů Vyjádření závislostních relací teorie grafů Uzly příkazy (segmenty) Hrany (vždy orientované) relace mezi uzly Analýza grafu zjištění existence paralelizmu Tři typy závislostí: Datová indikuje vztahy následnosti mezi příkazy Zdrojová zdroje daného systému (konflikty sdílených zdrojů registry, paměť, ALU, FPU, procesory ) Řídicí pořadí vykonávání příkazů se nedá určit před spuštěním programu (podmíněné skoky, iterace) A4M36PAP Pokročilé architektury počítačů 13

Datová závislost Datová: Toková závislost (true dependency) Toková antizávislost (anti-dependency) Výstupní závislost (output dependency) Vstupně-výstupní závislost Neznámá závislost Na úrovni instrukcí při realizaci pipeline Při návrhu paralelního programu Toková závislost (Read-after-Write: RAW) S1 S2: S2 je tokově závislý od S1 pokud vykonávací cesta z S1 do S2 a nejméně jeden výstup S1 se přivádí do S2. Zápis: O(S1) I(S2), S1-> S2 Toková antizávislost (Write-After-Read: WAR) S1 S2: I(S1) O(S2), S1-> S2 Výstupní závislost (Write-after-Write: WAW) S1 S2: O(S1) O(S2), S1->S2 (vytvářejí tu samou výstupní proměnnou) A4M36PAP Pokročilé architektury počítačů 14

Datová závislost V/V Vstupně-výstupní závislost S1 S2 když oba V/V příkazy (read, write) se odkazují ne tentýž soubor (ne proměnnou) Neznámá závislost závislostní relace se nedá určit Index proměnné je sám indexován Proměnná se objevuje více než jednou s indexy, které mají rozdílné koeficienty smyčkové proměnné Index v smyčkové proměnné je nelineární Apod. A4M36PAP Pokročilé architektury počítačů 15

Datová závislost P1: C = D*E P2: M = G+C P3: A = B+C P4: M = A+M P5: F = G/E P2 + Případně je možné k šipkám místo značek psát: WAW, RAW, WAR, I/O P1 + P4 P5 P3 + Plné čáry datová závislost, Přerušované zdrojová A4M36PAP Pokročilé architektury počítačů 16

Datová závislost P1: C = D*E P2: M = G+C P3: A = B+C P4: M = A+M P5: F = G/E Pamatujte, že tohle nemusí být jen jedna operace.. Dívejme se obecněji..! P2 + P3 Případně je možné k šipkám místo značek psát: WAW, RAW, WAR, I/O + P1? + P4 P5 Plné čáry datová závislost, Přerušované zdrojová A4M36PAP Pokročilé architektury počítačů 17

Bersteinovy podmínky paralelizmu Určují kdy se mohou vykonat dva procesy paralelně v smyslu prostorového paralelizmu (proces softwarová entita zodpovídající abstrakci programového fragmentu na různých úrovních zpracování) I vstupní množina procesu ( proměnné potřebné k vykonání procesu) O výstupní množina procesu (generované procesem) Procesy Pi a Pj můžeme vykonat paralelně (Pi Pj) pokud: [I(Pi) O(Pj)] [O(Pi) I(Pj)] [O(Pi) O(Pj)] = Ø P1 P2 Pk tehdy a jen tehdy, pokud Pi Pj pro i j Komutativnost platí (Pi Pj = Pj Pi) Tranzitivnost neplatí (Pi Pj Pj Pk neimplikuje Pi Pk) Asociativnost platí ([Pi Pj] Pk = Pi [Pj Pk]) A4M36PAP Pokročilé architektury počítačů 18

Bersteinovy podmínky paralelizmu Prog. fragment P1: C = D*E P2: M = G+C P3: A = B+C P4: M = A+M P5: F = G/E Všechny dvojice P1 P4, P1 P5 P2 P3, P2 P5 P3 P5 P4 P5 x Všechny trojice P1 P4 P5 P2 P3 P5 x x x Bersteinovy podmínky jsou nutnými podmínkami paralelizmu, ne však postačujícími Před vykonáním Pj musejí být všechny předchozí závislé (i nepřímo) Pi (i<j) vykonány! Pokud Pi Pj současně, nebo v libovolném pořadí Nemůžeme vykonat postupnost: 1. P1 P4 P5 2. P2 P3 Můžeme však: 1. P1 2. P2 P3 3. P4 P5 Nebo: 1. P1 2. P2 P3 P5 3. P4 Nebo: 1. P1 P5 2. P2 P3 3. P4 A4M36PAP Pokročilé architektury počítačů 19

Bersteinovy podmínky paralelizmu Prog. fragment P1: C = D*E P2: M = G+C P3: A = B+C P4: M = A+M P5: F = G/E E E G B M G D + + + P1 P2 P3 P4 M G M D E P1 + P2 + P3 + P4 G E P5 P5 čas sekvenčně: 5 kroků F M A F paralelně: 3 kroky A4M36PAP Pokročilé architektury počítačů 20

Úvodní příklad 1. a = 1 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Realizujme program na dvou-procesorovém systému obsahujícím dvou-cestné procesory schopné vydávat jednu instrukci přístupu do paměti a jednu aritmetickou operaci za jeden cyklus. Latence komunikace mezi procesory nechť je L=2 cykly. Komunikace je neblokující. A4M36PAP Pokročilé architektury počítačů 21

Úvodní příklad 1. a = 1 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Označení uzlu V;d delay 1;1 2;1 3;1 4;1 6;1 8;1 7;1 12;1 9;1 10;1 11;1 5;1 Váha uzlu je mírou množství práce přiřazené tomuto uzlu. Nejjednodušší mírou je počet instrukcí (příp. doba vykonání uzlu - počet cyklů). A4M36PAP Pokročilé architektury počítačů 22

1. a = 1 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Úvodní příklad 1;1 2;1 3;1 4;1 6;1 8;1 7;1 9;1 10;1 L 12;1 11;1 Procesor 1 Procesor 2 L 5;1 P1 M memory C compute S send R receive P2 M C S R M C S R 3 4 2 3 5 3 1 8 3 3 9 7 12 9 10 9 6 9 9 11 A4M36PAP Pokročilé architektury počítačů 23

1. a = 1 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Úvodní příklad 1;1 2;1 3;1 3 ;1 4;1 6;1 8;1 7;1 9;1 10;1 12;1 11;1 Procesor 1 Procesor 2 5;1 Duplikace uzlů může přinést značné zrychlení.. P1 P2 M C S R M C S R 3 4 2 3 1 8 5 7 9 10 12 9 9 6 9 9 11 A4M36PAP Pokročilé architektury počítačů 24

1. a = 1 A 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Úvodní příklad 1;1 2;1 3;1 3 ;1 4;1 6;1 8;1 7;1 12;1 9;1 10;1 D C B G H 11;1 E Procesor 1 Procesor 2 F 5;1 P1 P2 M C S R M C S R 3 4 2 3 1 8 5 7 9 10 12 9 9 6 9 9 11 A4M36PAP Pokročilé architektury počítačů 25

1. a = 1 2. b = 2 3. c = 3 4. d = 4 5. e = 5 6. f = a*b 7. g = c*d 8. h = b c 9. i = a+h 10. b = g+e 11. c =b*i 12. j = a*i Úvodní příklad B;2 E;2 A;1 G;1 7;1 C;2 F;2 D;1 H;1 Procesor 1 Procesor 2 Zrnové balení může přinést značné zjednodušení rozvrhování při zachování zrychlení.. P1 P2 C S R C S R B B A C C E E G F F D C C C H C A4M36PAP Pokročilé architektury počítačů 26

Úvodní příklad č.2 Mějme tři ekvivalentní procesory. T1 T2 T3 T4 T5 T6 T7 T8 3 5 7 3 6 8 7 5 T beg T1,T4 T1,T5 T2,T6 T3,T7 T4,T8 T5,T8 2 6 2 5 3 1 T1 T2 T3 T4 T5 T8 T6 T end T7 Jak rozdělíme jednotlivé úkoly těmto třem procesorům??? A4M36PAP Pokročilé architektury počítačů 27

Úvodní příklad č.2 Mějme tři ekvivalentní procesory. T1 T2 T3 T4 T5 T6 T7 T8 3 5 7 3 6 8 7 5 T beg T1,T4 T1,T5 T2,T6 T3,T7 T4,T8 T5,T8 2 6 2 5 3 1 T1;3 T2;5 T3;7 S R Ganttův diagram: T4;3 T5;6 C T3 T7 T8;5 T6;8 T7;7 S R C T2 T4 T6 S = 44 / 16 = 2,75 T end S R C T1 T5 T8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A4M36PAP Pokročilé architektury počítačů 28

Paměťové architektury paralelních počítačů Systémy se sdílenou pamětí (SMS) schopnost přistoupit do celé paměti všem procesorům (globální adresní prostor), sdílení paměťových zdrojů, komunikace paměť-cpu geometricky narůstá při zvyšování počtu CPU, taktéž zachování paměťové koherence UMA (Uniform Memory Access) shodný čas přístupu do paměti, SMP (Symetric Multiprocessor), CC-UMA (Cache Coherent UMA) NUMA (Non-Uniform) různý čas přístupu; spojením několika SMP kdy jeden SMP uzel může přímo přistupovat do paměti jiného; když zachováva Cache Coherency CC-NUMA CPU CPU CPU CPU UMA Paměť CPU CPU CPU CPU CPU CPU CPU CPU Paměť Paměť NUMA, RMA (Remote Memory Access) DSM (Distributed Shared Memory) DGAS (D. Global Address Space) A4M36PAP Pokročilé architektury počítačů 29

Paměťové architektury paralelních počítačů Systémy s distribuovanou pamětí (DMS) vlastní lokální paměťový prostor, vlastní fyzická paměť; komunikace a synchronizace zajištěna na úrovni programátora; škálovatelnost se zvětšujícím se počtem CPU; NORMA (No RMA) CPU Paměť CPU Paměť CPU Paměť Propojovací síť Hybridní (distribuovaná + sdílená) CPU CPU CPU CPU Paměť CPU CPU CPU CPU Paměť CPU CPU CPU CPU Paměť Propojovací síť A4M36PAP Pokročilé architektury počítačů 30

Programovací modely Abstrakce nad hardwarem a paměťovou architekturou; Není nutně svázáno s konkrétní architekturou.. Sdílená paměť úlohy sdílejí společný adresní prostor, asynchronní čtení a zápis; zámky, semafory,..; není potřebná explicitní komunikace při vyměňování dat; Kde jsou uložena data, se kterými procesor pracuje? Vlákna Posix Threads (Pthreads) velmi explicitní paralelizmus program musí být navržen paralelně ; OpenMP paralelizmus vyjádřen direktivy. A4M36PAP Pokročilé architektury počítačů 31

Programovací modely Posílání správ výměna dat posíláním a přijímáním zpráv; také pro SMS nejen DMS; Jaká musí být maximální latence komunikace, aby se nedegradoval výkon? Datově paralelní zaměřujeme se na paralelní vykonávaní operací nad datovými množinami; vhodné jak pro SMS tak DMS; podpora jak v jazycích (HPF High Performance Fortran) tak direktivách kompilátoru (OpenMP), Hybridní kombinace předchozích obyčejně vedoucí na SPMD (Single Program Multiple Data), pro náročné aplikace MPMD. A4M36PAP Pokročilé architektury počítačů 32

Návrh paralelního programu - rozvrhování Rozvrhování (Scheduling) Zdroj: http://shmu.sk A4M36PAP Pokročilé architektury počítačů 33

Návrh paralelního programu - rozvrhování Rozvrhování (Scheduling) Pohled shora (funkční dekompozice): Cílem je rozdělit program do množiny paralelně proveditelných úloh s ohledem na vzájemnou komunikaci; možno aplikovat rekurentně Atmosférický model Klimatický model Pevninský model Hydrologický model Oceánský model A4M36PAP Pokročilé architektury počítačů 34

Návrh paralelního programu - rozvrhování Rozvrhování (Scheduling) Spekulativní dekompozice Předvýpočet čas T1 Ano IF Ne čas T2 Větev A Větev B A4M36PAP Pokročilé architektury počítačů 35

Návrh paralelního programu - rozvrhování Rozvrhování (Scheduling) Spekulativní dekompozice Ano IF Předvýpočet Ne čas T1 Předvýpočet Větev A Větev B čas T2 Větev A Větev B A4M36PAP Pokročilé architektury počítačů 36

Návrh paralelního programu - rozvrhování Rozvrhování (Scheduling) Pohled zdola: Cílem je seskupit sekvenčně prováděné instrukce, příkazy, programové fragmenty bez návaznosti na jiné (jedna linie toku instrukcí) zrnové balení na nejnižší úrovni, a pak příp. pokračovat podle určité strategie v zrnovém balení s ohledem na komunikaci (viz úvodní příklady). Cílem mít co největší soudržnost a co nejmenší spřaženost. Kompilátor vs. programátor. Zohlednění paměťové architektury. Homogenní vs. heterogenní počítačový systém. Scheduling také jako algoritmus přidělování zdrojů systému (množství úloh a málo CPU..). A4M36PAP Pokročilé architektury počítačů 37

Úvodní příklad č.2 rozvrhování / mapování / vyvažování zátěže Mějme tři ekvivalentní procesory. T1 T2 T3 T4 T5 T6 T7 T8 3 5 7 3 6 8 7 5 T beg T1,T4 T1,T5 T2,T6 T3,T7 T4,T8 T5,T8 T1;3 T4;3 T5;6 T2;5 T3;7 2 6 2 5 3 1 S R Ganttův diagram: C T3 T7 T8;5 T6;8 T7;7 S R C T2 T4 T6 T end S = 44 sec / 16 sec = 2,75 S R C T1 T5 T8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A4M36PAP Pokročilé architektury počítačů 38

Úvodní příklad č.2 rozvrhování / mapování / vyvažování zátěže Mějme tři ekvivalentní procesory. T1 T2 T3 T4 T5 T6 T7 T8 3 5 7 3 6 8 7 5 T beg T1,T4 T1,T5 T2,T6 T3,T7 T4,T8 T5,T8 T1;3 T4;3 T5;6 T2;5 T3;7 2 6 2 5 3 1 S Ganttův diagram: R C Job 1 T8;5 T6;8 T7;7 S R C Job 2 T end S = 44 sec / 16 sec = 2,75 S R C Job 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A4M36PAP Pokročilé architektury počítačů 39

Rozvrhování Scheduling jako algoritmus přidělování zdrojů systému rozhodování, která úloha na kterém CPU a kdy First-come-first-serve (čekání na ostatní způsobuje prostoje), Gang scheduling (problémem jsou I/O a blokující komunikace), Paired gang scheduling. I/O Počet CPU < počet úloh => nemohou všechny běžet současně A4M36PAP Pokročilé architektury počítačů 40

Návrh paralelního programu - rozčleňování Rozčleňování (Partitioning) Doménová dekompozice Ostření Jak na to? A4M36PAP Pokročilé architektury počítačů 41

Návrh paralelního programu - rozčleňování Rozčleňování (Partitioning) Doménová dekompozice Jak se obraz zaostřuje? Konvoluce Jak paralelně? vlákno 1 vlákno 2 vlákno 3 A co konflikty při přístupu do paměti? K pixelům na rozhraní přistupují obě vlákna A4M36PAP Pokročilé architektury počítačů 42

Návrh paralelního programu - rozčleňování Rozčleňování (Partitioning) Doménová dekompozice Může to dopadnout i takto: Co je špatně? A4M36PAP Pokročilé architektury počítačů 43

Návrh paralelního programu - rozčleňování Rozčleňování (Partitioning) Doménová dekompozice Jak dopadl chrám sv.víta na dvou-jádrovém CPU? Proč narůstá? Jak by graf pokračoval? Počet vláken A4M36PAP Pokročilé architektury počítačů 44

Návrh paralelního programu - rozčleňování Rozčleňování (Partitioning) Doménová dekompozice Množina dat je rozdělena jednotlivým procesům A = (a 0, a 1,, a n 1 ) n prvků P = (q 0, q 1,, q p 1 ) p procesů Blokové mapování: proces 1 proces 3 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 proces 0 proces 2 A4M36PAP Pokročilé architektury počítačů 45

Návrh paralelního programu - rozčleňování Cyklické mapování: proces 1 proces 3 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 proces 0 proces 2 Blokově-cyklické: proces 1: proces 3: a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 proces 0: proces 2: A4M36PAP Pokročilé architektury počítačů 46

Který způsob je nejvýhodnější? Závisí od charakteru řešené úlohy.. (může ovlivnit přesnost nebo dobu výpočtu) N i 1 10 i 1 1 10 i 10 1 2 i 10 Návrh paralelního programu - rozčleňování 1 2 i 1 2 i 1 i N 1 2 i N i 1 ( N 1 i 1) 1.6449340578301865, 1.6449340667482264 2 V závislosti na zvoleném mapování bude výsledek někde mezi.. (typ double) Doba výpočtu - Výpočet nad některými skupinami elementů může vyžadovat větší počet iterací pro dosažení konvergence A4M36PAP Pokročilé architektury počítačů 47

Návrh paralelního programu - rozčleňování Kombinování funkční a doménové dekompozice: Atmosférický model Dolní troposféra nad Pacifikem Středozemní moře Severní moře Pevninský model Západní Evropa Hydrologický model Oceánsky model A4M36PAP Pokročilé architektury počítačů 48

Návrh paralelního programu komunikace Přímá komunikace mezi procesy (vlákny) může být programátorovi skryta (závisí na modelu: sdílená paměť, datově paralelní model, vlákna, posílání správ..). Cena komunikace. Zpoždění (Latency) a šířka pásma (Bandwidth) mnoho malých správ dominance latence.., málo velkých všímáme si víc šířky pásma.. Synchronní a asynchronní komunikace. Point-to-point (Unicast) a kolektivní komunikace; Kolektivní: Broadcast (one-to-all) šíření jeden uzel posílá svá data všem, Multicast (one-to-many), Scatter rozesílání různé údaje z jednoho uzlu do všech ostatních, Gather opak scatter, Reduction redukce sesbírání dat ze všech uzlů do jednoho, a další.. (Allreduce, Allgather, AlltoAll) -> Kolektivní kom.: vždy blokující. A4M36PAP Pokročilé architektury počítačů 49

Návrh paralelního programu komunikace Broadcast (source = 1): proces 0 proces 1 proces 2 proces 3 7 před 7 7 7 7 po Reduce (destination = 1, operation +): proces 0 proces 1 proces 2 proces 3 2 7 1 3 před 13 po A4M36PAP Pokročilé architektury počítačů 50

Návrh paralelního programu komunikace Scatter (source = 1): proces 0 proces 1 proces 2 proces 3 1 2 5 7 před 1 2 5 7 po A4M36PAP Pokročilé architektury počítačů 51

Návrh paralelního programu komunikace Gather (destination = 1) proces 0 proces 1 proces 2 proces 3 2 7 1 3 před 2 7 1 po 3 A4M36PAP Pokročilé architektury počítačů 52

All to All: Návrh paralelního programu komunikace proces 0 proces 1 proces 2 proces 3 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 před 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 po A4M36PAP Pokročilé architektury počítačů 53

Návrh paralelního programu komunikace Blokující komunikace point-to-point bez užití mezipaměti Posílající proces Přijímající proces Posílající proces Přijímající proces Posílající proces Přijímající proces če ka jíc í požadavek potvrzení data data data Posílající proces čeká až bude přijímající proces připraven Přijímající proces běží naprázdno Optimální situace; po dobu komunikace však zůstávají procesory nevyužity A4M36PAP Pokročilé architektury počítačů 54

Návrh paralelního programu komunikace Dead-lock při point-to-point P0: P1: blokující komunikaci send() send() bez užití mezipaměti. recieve() recieve() Řešením je užití mezipamětí.. Aplikační mezipaměť (application buffer) a systémová mezipaměť (system buffer) (skrytá programátorovi). Procesor 0 Proces A Procesor 1 Proces B Send Data Recv Data System buffer System buffer A4M36PAP Pokročilé architektury počítačů 55

Návrh paralelního programu komunikace Blokující komunikace Odesílání je ukončeno (návrat z rutiny), až když je aplikační buffer opět možné volně použít (systémový buffer nemusí být použit v tom případě je odesílání implementováno jako synchronní). Synchronní odesílání vše jako předchozí + dokončeno přijímání. Bufferované odesílání data jsou nakopírována do odesílacího buffru použití při nedostatku prostoru v systémovém buffru. Přijímání blokuje, dokud data nejsou přijata v aplikačním buffru Neblokující komunikace Odesílaní program pokračuje bez čekání; aplikační buffer je možné použít až po jeho uvolnění nutno testovat!!! Synchronní odesílaní test je úspěšný až po přijetí dat. Bufferované odesílání nutno testovat Přijímání program pokračuje bez čekání; nutno testovat A4M36PAP Pokročilé architektury počítačů 56

Návrh paralelního programu Virtuální topologie Virtuální topologie: Výhodné při specifických požadavcích na komunikaci. Definují sousednost procesů (uzlů) sousedící procesy mohou navzájem přímo komunikovat. Implementace může (závislé na implementaci) optimalizovat proces mapování procesů na fyzické uzly systému A4M36PAP Pokročilé architektury počítačů 57

Návrh paralelního programu synchronizace Bariéra (Barrier) - každá úloha se zastaví na bariéře, pokračuje se když všechny dosáhnou bariéry, - nová iterace v datově paralelní smyčce.. Mutex / Lock / Semaphore - konflikty přístupu do společné paměti. Operátory synchronní komunikace. A4M36PAP Pokročilé architektury počítačů 58

Úkol k zamyšlení Je daný program. Třeba využít maximální stupeň paralelizmu mezi 16 instrukcemi, předpokládejme, že konflikty mezi zdroji a funkčními jednotkami nejsou možné. Všechny instrukce se vykonávají za jeden strojový cyklus. Zanedbávají se všechny ostatní režie. a) Nakreslit programový graf se 16 uzly za účelem vizualizace vztahů mezi těmito 16 instrukcemi. b) Použít troj-cestný superskalární procesor na vykonání tohoto programu za minimální čas. Procesor může za jeden strojový cyklus vydávat jednu instrukci přístupu do paměti (Load nebo Store, ale ne obě), jednu instrukci Add/Sub a jednu instrukci Mul. c) Program realizovat na dvoj-procesorovém systému, přičemž každý procesor je troj-cestný superskalární procesor. Program rozčlenit na dvě vyvážené poloviny. Vypracovat optimální rozvržení paralelního vykonání rozděleného programu dvěma procesory v minimálním čase. A4M36PAP Pokročilé architektury počítačů 59

Úkol k zamyšlení 1: Load R1, A /R1 Mem(A)/ 2: Load R2, B /R2 Mem(B)/ 3: Mul R3, R1, R2 /R3 (R1) x (R2)/ 4: Load R4, D /R4 Mem(D)/ 5: Mul R5, R1, R4 /R5 (R1) x (R4)/ 6: Add R6, R3, R5 /R6 (R3) + (R5)/ 7: Store X, R6 /Mem(X) (R6)/ 8: Load R7, C /R7 Mem(C)/ 9: Mul R8, R7, R4 /R8 (R7) x (R4)/ 10: Load R9, E /R9 Mem(E)/ 11: Add R10, R8, R9 /R10 (R8) + (R9)/ 12: Store Y, R10 /Mem(Y) (R10)/ 13: Add R11, R6, R10 /R11 (R6) + (R10)/ 14: Store U, R11 /Mem(U) (R11)/ 15: Sub R12, R6, R10 /R12 (R6) (R10)/ 16: Store V, R12 /Mem(V) (R12)/ A4M36PAP Pokročilé architektury počítačů 60