Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Katrina Netzel Geändert vor über 10 Jahren
1
Oswald Haan ohaan@gwdg.de
GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan
2
Parallelrechner-Programmierung mit MPI
Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – Parallelrechner-Programmierung mit MPI
3
Parallelrechner-Programmierung mit MPI
Rechenleistung Leistung = Arbeitsmenge pro Zeiteinheit Leistung r eines Rechners: Anzahl von Fließkommaoperationen pro Sekunde Einheit : [flop/s, Kilo-, Mega-, Giga-, Tera-, Peta-flop/s] r ~ τ -1 (τ : Taktzeit der Schaltkreise) 07. – Parallelrechner-Programmierung mit MPI
4
Parallelrechner-Programmierung mit MPI
(Not-)Moore’s Law Moore’s Law (Intel co-founder Gordon E. Moore, 1965) : The number of transistors on integrated circuits doubles approximately every two years (or every 18 months). Not--Moore’s Law is that clock rates do, too Moore’s Law holds (and will for a decade or so) Not--Moore’s Law held until ≈ 2003, then broke down 07. – Parallelrechner-Programmierung mit MPI
5
Entwicklung der Schaltkreisgeschwindigkeit
Hennessy/Patterson: Computer Architecture, 5. Auflage; © Elsevier Inc., All rights reserved 07. – Parallelrechner-Programmierung mit MPI
6
Entwicklung der Rechenleistung
Exaflop/s PetaFlop/s Teraflop/s Gigaflop/s Top500 Liste 6/2013 07. – Parallelrechner-Programmierung mit MPI
7
Parallelrechner-Programmierung mit MPI
Rechenleistung (2) r ~ τ -1 (τ : Taktzeit der Schaltkreise) r ~ n (n : Anzahl der Schaltkreise), wenn n Schaltkreise gleichzeitig an der Rechnung arbeiten können: Parallelverarbeitung 07. – Parallelrechner-Programmierung mit MPI
8
Parallelrechner-Programmierung mit MPI
Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – Parallelrechner-Programmierung mit MPI
9
Parallelität der Hardware
Netzwerk Parallele Rechner (Rechencluster) R1 R2 R3 R4 Parallele Prozessoren (Multiprozessorsysteme) Speicher P1 P2 P3 P4 Parallele funktionale Einheiten (Superskalare Architektur) add 1 2 mult Parallele Segmente in Pipelines (Fließbandverarbeitung) Parallele Bitverarbeitung (64bit-Architektur) … … 07. – Parallelrechner-Programmierung mit MPI
10
Nutzung von Parallelität
Identifizierung von unabhängigen Arbeitsschritten Vektoraddition: c(i) = a(i) + b(i), i = 1 ,4 c(1) = a(1) + b(1) c(2) = a(2) + b(2) c(3) = a(3) + b(3) c(4) = a(4) + b(4) Summe der Vektorelemente s = a(1) + a(2) + a(3) + a(4) s1 = a(1)+a(2) s2 = a(3)+a(4) s = s1 + s2 Zufallszahlen z(i) = a*z(i-1) mod m, i = 1 , 4 z(1) = a*z(0) mod m z(2) = a*z(1) mod m z(3) = a*z(2) mod m z(4) = a*z(3) mod m 07. – Parallelrechner-Programmierung mit MPI
11
Parallelrechner-Programmierung mit MPI
Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – Parallelrechner-Programmierung mit MPI
12
Nutzung von Parallelität
Die parallele Hardware muss durch ein Programm gesteuert werden Programmiermodelle basieren auf einem funktionalen Modell der Hardware zwei unterschiedliche Programmiermodelle für Parallelrechner: Shared memory Message passing Als Vergleich das klassische Programmiermodell für sequentielle Rechner Von Neumann 07. – Parallelrechner-Programmierung mit MPI
13
Programmiermodell: Sequentiell (von Neumann)
Speicher Instruktionen Daten Objekte: Daten, Instruktionen, PZ Operationen: opcode op1, op2,...,re1,re2 Reihenfolge: sequentiell Programmzähler Verarbeitungseinheit (CPU) Instruktionseinheit Recheneinheit 07. – Parallelrechner-Programmierung mit MPI
14
Programmiermodell: shared memory
Mehrere Kontrollflüsse (threads) Objekte: Globale Daten, Instruktionen, Lokale PZs, thread-ID Operationen: opcode op1, op2,...,re1,re2 ununterbrechbare Ops. Reihenfolge: Sequentiell im einzelnen thread, CREW (concurrent read, exclusive write) Speicher Instruktionen Daten PZ0 PZ1 PZ3 VE0 VE1 VE2 07. – Parallelrechner-Programmierung mit MPI
15
Programmiermodell: message passing
Verbindungsnetz Verteilung von Daten und Instruktionen auf mehrere Prozessoren Objekte: Lokale Daten, Instruktionen, Lokale PZs, task-id Operationen: opcode op1, op2,...,re1,re2 send(ad,n,tid), recv(ad,n,tid) Reihenfolge: Synchronisation durch blockierendes recv Puffer Puffer Puffer Speicher Speicher Speicher I D I D I D PZ PZ PZ VE VE VE 07. – Parallelrechner-Programmierung mit MPI
16
Parallelrechner-Programmierung mit MPI
Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – Parallelrechner-Programmierung mit MPI
17
Parallelrechner-Programmierung mit MPI
MIMD Parallelität MIMD = Multiple Instruction Stream -Multiple Data Stream Rechner mit gemeinsamem Speicher Rechner mit verteiltem Speicher Multi-Core CPUs Cluster mit Single-Core CPUs 07. – Parallelrechner-Programmierung mit MPI
18
Hybrid-Systeme:Cluster von SMP-Knoten
Cluster mit Multi-Core CPUs 07. – Parallelrechner-Programmierung mit MPI
19
Kopplung in Systemen mit gemeinsamem Speicher
Bus serialisierter Speicherzugriff nicht skalierbar geringe Latenz Schalter (Hypertransport, Quick Path) simultaner Speicherzugriff (bei günstiger Datenverteilung) skalierbar höhere Latenz 07. – Parallelrechner-Programmierung mit MPI
20
Kopplung in Systemen mit verteiltem Speicher
Schalter Baum 2d Gitter 07. – Parallelrechner-Programmierung mit MPI
21
Parallelrechner-Programmierung mit MPI
Netzparameter Latenz Zeit bis zur Ankunft des ersten bits Bandbreite Datendurchsatz einer Verbindung effektive Bandbreite Bisektionsbreite Minimale Zahl von Verbindungen bei Schnitt durch das Netz - wichtig für Gesamtdurchsatz 07. – Parallelrechner-Programmierung mit MPI
22
Parameter der Kommunikationsleistung
Kommunikatiosnetz-Netz R1 R2 Rn Rechner R hat Rechenleistung Netz hat Latenz und Bandbreite Anzahl von Flops, die in der Latenzzeit ausgeführt werden könnten Anzahl von Flops, die in der Zeit ausgeführt werden könnten, die das Senden von 8 Bytes dauert 𝑟 𝑡𝑙𝑎𝑡 𝑐 𝑡𝑙𝑎𝑡∙𝑟 64∙𝑟/𝑐 07. – Parallelrechner-Programmierung mit MPI
23
Kommunikationsleistung
Latenzzeit Bandbreite Rechen-leistung SGI Altix Numa-Link 1,5 25,60 12,8 19 200 32 NEC Nehalem Infiniband QDR 2,5 40 81 130 Magny-Cours 48 cores: 422 675 Hypertransport 0,1 200 1 core: 8,8 880 2,8 CV-Cluster 1 16 cores: 166 265 07. – Parallelrechner-Programmierung mit MPI
24
Parallelrechner-Programmierung mit MPI
Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – Parallelrechner-Programmierung mit MPI
25
Leistungsfähigkeit von Parallelrechnern
Maßeinheit [flop/s] floating point operations per second Maximal-Leistung 𝑟𝑚𝑎𝑥=𝑝∙𝑛𝑓𝑙∙𝜏-1 𝑝 Anzahl Prozessoren (=Cores) 𝑛𝑓𝑙 Anzahl paralleler Operationen pro Prozessor 𝜏 Zykluszeit für ein Segment der Pipelines 𝑠=𝜏−1 Taktrate des Prozessors ClusterVision MPI-Cluster der GWDG 𝑝=160∗16= 2560, 𝑛𝑓𝑙= 4, 𝑠= 2,4 GHz 𝑟𝑚𝑎𝑥= 24,5 Teraflop/s 07. – Parallelrechner-Programmierung mit MPI
26
Leistungsfähigkeit bei realen Anwendungen
Reduktion der parallelen Effizienz durch Sequentielle Anteile des Programms Ungleiche Lastverteilung Kommunikation von Daten Synchronisation Reduktion der Einzelprozessor-Effizienz durch Hauptspeicherzugriffe Pipeline-Unterbrechungen Nicht-Nutzung paralleler Pipelines 07. – Parallelrechner-Programmierung mit MPI
27
Sequentielle Anteile - Amdahls Gesetz
Jedes Programm hat sequentielle und parallelisierbare Operationen: 𝑁=𝑁𝑠+𝑁𝑝=𝑁∙ 𝜎+𝜋 Ausführungszeit auf p Prozessoren: 𝑇𝑝=𝜏∙ 𝑁𝑠+ 𝑁𝑝 𝑝 = 𝜏∙𝑁 𝜎+ 𝜋 𝑝 Speed Up: 𝑠= 𝑇1 𝑇𝑝 =𝑝∙ 1 1+(𝑝−1)∙𝜎 Effzienz : 𝑒= 𝑠 𝑝 = (𝑝−1)∙𝜎 𝜎½: Sequentieller Anteil, der zu 50% Effizienz (e=0.5) führt 𝜎½= 1 𝑝− für 𝑝= 𝜎½≈0,0004 07. – Parallelrechner-Programmierung mit MPI
28
Verallgemeinerung: Ungleiche Lastverteilung
Prozessor 𝑖,𝑖=1,⋯,𝑝 hat die Last von 𝑁𝑖 Operationen, 𝑁= 𝑖=1 𝑝 𝑁𝑖 Mittlere Last pro Prozessor 𝑛𝑎𝑣= 𝑁 𝑝 Maximale Abweichung Δ= max 𝑖 𝑁𝑖−𝑛𝑎𝑣= 𝜗∙𝑁 Laufzeit 𝑇𝑝= 𝜏∙ max 𝑖 𝑁𝑖=𝜏∙ Δ+𝑛𝑎𝑣 =𝜏∙𝑁 1 𝑝 +𝛿 Effizienz 𝑒= 𝑇1 𝑝𝑇𝑝 = 1 1+𝑝∙𝛿 07. – Parallelrechner-Programmierung mit MPI
29
Parallelrechner-Programmierung mit MPI
Datenkommunikation Interprozessor-Kommunikation erzeugt Blindleistung 𝑁𝑘=𝜅∙𝑁 Anzahl zu kommunizierender bits Ausführungszeiten: 𝑇1= 𝑟 −1 ∙𝑁 𝑇𝑝=𝑁∙ 𝑟 −1 ∙ 𝜎+ 𝜋 𝑝 + 𝑐 −1 ∙𝜅 Effizienz: 𝑒= 𝑇1 𝑝𝑇𝑝 = 1 1+ 𝑝−1 ∙𝜎+𝑟/𝑐∙𝜅 𝑟 in [Gflop/s], 𝑐 in [Gbit/s] 07. – Parallelrechner-Programmierung mit MPI
30
Parallelrechner-Programmierung mit MPI
Synchronisation Abstimmung der Arbeit der Prozessoren: z. B. Warten auf die Beendigung von parallel ausgeführten Teilaufgaben Sequentielle Abstimmung 𝑡𝑠𝑦𝑛𝑐=𝑝∙𝑡𝑙𝑎𝑡 Kaskaden - Abstimmung 𝑡𝑠𝑦𝑛𝑐=ln(𝑝)∙𝑡𝑙𝑎𝑡 Parallelisierungs-Granularität ng : Anzahl parallelisierbarer Operationen zwischen zwei Synchronisationspunkten Voraussetzung für hohe Effizienz: 𝑟 −1 ∙ng/p ≫ 𝑡𝑠𝑦𝑛𝑐 07. – Parallelrechner-Programmierung mit MPI
31
Matrix-Vektor-Multiplikation
07. – Parallelrechner-Programmierung mit MPI
32
Matrix-Vektor-Multiplikation
𝑦=𝐴∙𝑥 𝑦 𝑖 = 𝑗 𝐴𝑖𝑗∙ 𝑥 𝑗 , 𝑖=1,⋯,𝑛 Daten- und Aufgabenverteilung: Jeder der p Prozessoren hat n/p Elemente von 𝑥 und n/p Zeilen von 𝐴, Jeder der p Prozessoren berechnet n/p Elemente von 𝑦 07. – Parallelrechner-Programmierung mit MPI
33
Matrix-Vektor-Multiplikation
Jeder Prozessor berechnet n/p Elemente von 𝑦, mit 2∙ 𝑛 2 /𝑝 Operationen Jeder Prozessor erhält von den 𝑝−1 anderen Prozessoren je 𝑛/𝑝 Elemente von 𝑥 𝑇𝑝= 𝑟 −1 ∙2∙ 𝑛 2 𝑝 + 𝑝−1 ∙ 𝑡𝑙𝑎𝑡+ 𝑐 −1 ∙𝑛/𝑝 𝑒= 𝑇1 𝑝∙𝑇𝑝 = 1 1+𝑝∙ 𝑝−1 2 𝑛 2 ∙𝑟∙𝑡𝑙𝑎𝑡+ 𝑝−1 𝑛 ∙𝑟/𝑐 07. – Parallelrechner-Programmierung mit MPI
34
Matrix-Vektor-Multiplikation
Bedingung für gute Effizienz 𝑝∙ 𝑝−1 2 𝑛 2 ∙𝑟∙𝑡𝑙𝑎𝑡<1 𝑝−1 𝑛 ∙ 𝑟 𝑐 <1 GWDG-Cluster: 𝑟∙𝑡𝑙𝑎𝑡= ⟹ 𝑛 𝑝 > 288 𝑟 𝑐 = ⟹ 𝑛 𝑝 > 256 07. – Parallelrechner-Programmierung mit MPI
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.