Paralelní programování

Post on 07-Feb-2016

49 views 0 download

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

transcript

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:• „... 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

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

Počet tranzistorů vs. výkon

Počet tranzistorů vs. výkon

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

Výkon pořád roste

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?

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

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í

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)

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č

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

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

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

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

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

• ...

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

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

Amdahlův zákon

Zrychlení

𝑓 𝑝

Amdahlův zákon

Gustafsonův zákon

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)

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í

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