+ All Categories
Home > Documents > Paralelní programování

Paralelní programování

Date post: 07-Feb-2016
Category:
Upload: kasia
View: 49 times
Download: 0 times
Share this document with a friend
Description:
Paralelní programování. Úvod. Paralelismus. 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. Proč zvyšovat výkon?. Moorův zákon: - PowerPoint PPT Presentation
28
Paralelní programování Úvod
Transcript
Page 1: Paralelní programování

Paralelní programování

Úvod

Page 2: Paralelní programování

Paralelismus

• 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

Page 3: Paralelní programování

Proč zvyšovat výkon?

• 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

Page 4: Paralelní programování

Skutečný průběh Zdvojnásobení každých:12 měsíců24 měsíců

Page 5: Paralelní programování

Počet tranzistorů vs. výkon

Page 6: Paralelní programování

Počet tranzistorů vs. výkon

Page 7: Paralelní programování

Frekvence

• Posledních 10 let se drží okolo 3Ghz

• Růst se neočekává

• Rychlost elektronů je konečná

• Tranzistory mají konečnou velikost

Page 8: Paralelní programování

Výkon pořád roste

Page 9: Paralelní programování

Kapacita × zpoždění

• průměr 1m• délka 1200km• kapacita

• 160 000 000 litrů/den

• zpoždění (latency)• 12 dní

• propustnost?• odezva?

Page 10: Paralelní programování

Terminologie

• 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

Page 11: Paralelní programování

Terminologie

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

Page 12: Paralelní programování

Paralelizace – HW

• 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)

Page 13: Paralelní programování

Single Instruction, Single Data

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

Page 14: Paralelní programování

Multiple Instruction, Single Data

• 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

Page 15: Paralelní programování

Single Instruction, Multiple Data

• 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];}

Page 16: Paralelní programování

Multiple Instruction, Multiple Data

• 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

Page 17: Paralelní programování

CPU vs. GPU

• 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

Page 18: Paralelní programování

Exotický HW

• 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

• ...

Page 19: Paralelní programování

Koncepty

• 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

Page 20: Paralelní programování

Amdahlův zákon

• – podíl programu, který nelze paralelizovat• – podíl programu, který lze paralelizovat• t – celková doba výpočtu• p – počet procesorů

• Dva pohledy

Page 21: Paralelní programování

Amdahlův zákon

Zrychlení

𝑓 𝑝

Page 22: Paralelní programování

Amdahlův zákon

Page 23: Paralelní programování

Gustafsonův zákon

Page 24: Paralelní programování
Page 25: Paralelní programování

Možnosti paralelizace

• Nízko úrovňové (fine grained)• pipelining, multithreading, a podobné vychytávky• pomáhá při běžných operacích• neřešíme

• Vyšší úroveň• použití více jader / procesorů

• pod 60% nezajímavé• paralelizace algoritmu

• zvyšujeme • využití speciálního HW (GPU)

Page 26: Paralelní programování

Co musíme vyřešit

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

Page 27: Paralelní programování

Předmět PP

• 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

Page 28: Paralelní programování

Recommended