Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Oswald Haan ohaan@gwdg.de GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan ohaan@gwdg.de.

Ähnliche Präsentationen


Präsentation zum Thema: "Oswald Haan ohaan@gwdg.de GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan ohaan@gwdg.de."—  Präsentation transkript:

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


Herunterladen ppt "Oswald Haan ohaan@gwdg.de GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan ohaan@gwdg.de."

Ähnliche Präsentationen


Google-Anzeigen