Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan

Ähnliche Präsentationen


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

1 GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan

2 Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz Parallelrechner-Programmierung mit MPI207. –

3 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 MPI3

4 07. – Parallelrechner-Programmierung mit MPI4 (Not-)Moores Law Moores 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--Moores Law is that clock rates do, too Moores Law holds (and will for a decade or so) Not--Moores Law held until 2003, then broke down

5 Entwicklung der Schaltkreisgeschwindigkeit 07. – Parallelrechner-Programmierung mit MPI5 Hennessy/Patterson: Computer Architecture, 5. Auflage; © Elsevier Inc., All rights reserved

6 Entwicklung der Rechenleistung 07. – Parallelrechner-Programmierung mit MPI6 Gigaflop/s Teraflop/s PetaFlop/s Exaflop/s Top500 Liste 6/2013

7 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 MPI7

8 Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz Parallelrechner-Programmierung mit MPI807. –

9 Parallelität der Hardware Parallele Prozessoren (Multiprozessorsysteme) Parallele funktionale Einheiten (Superskalare Architektur) Parallele Segmente in Pipelines (Fließbandverarbeitung) Parallele Bitverarbeitung (64bit-Architektur) R1R2R3R4 Netzwerk add 1 add 2 mult 1 mult 2 … … Parallele Rechner (Rechencluster) P1P2P3P4 Speicher 07. – Parallelrechner-Programmierung mit MPI9

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 MPI10

11 Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz Parallelrechner-Programmierung mit MPI1107. –

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 MPI12

13 Programmiermodell: Sequentiell (von Neumann) Parallelrechner-Programmierung mit MPI13 Instruktionen Daten Programmzähler Speicher Verarbeitungseinheit (CPU) InstruktionseinheitRecheneinheit Objekte: Daten, Instruktionen, PZ Operationen: opcode op1, op2,...,re1,re2 Reihenfolge: sequentiell 07. –

14 Programmiermodell: shared memory Parallelrechner-Programmierung mit MPI14 Instruktionen Daten PZ0 Speicher 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) PZ3PZ1 VE0VE1VE2 07. –

15 Programmiermodell: message passing 07. – Parallelrechner-Programmierung mit MPI15 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 I D PZ Speicher VE Puffer Verbindungsnetz I D PZ Speicher VE Puffer I D PZ Speicher VE Puffer

16 Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz Parallelrechner-Programmierung mit MPI1607. –

17 MIMD Parallelität Parallelrechner-Programmierung mit MPI17 MIMD = Multiple Instruction Stream -Multiple Data Stream Rechner mit gemeinsamem Speicher Rechner mit verteiltem Speicher Multi-Core CPUs Cluster mit Single-Core CPUs 07. –

18 Hybrid-Systeme:Cluster von SMP-Knoten Parallelrechner- Programmierung mit MPI – Cluster mit Multi-Core CPUs

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 Parallelrechner-Programmierung mit MPI1907. –

20 Kopplung in Systemen mit verteiltem Speicher 07. – Parallelrechner-Programmierung mit MPI20 Schalter Baum 2d Gitter

21 Netzparameter 07. – Parallelrechner-Programmierung mit MPI21 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

22 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 Parameter der Kommunikationsleistung 07. – Parallelrechner-Programmierung mit MPI22 Kommunikatiosnetz- Netz R1R2 Rn

23 Kommunikationsleistung 07. – Parallelrechner-Programmierung mit MPI23 LatenzzeitBandbreite Rechen- leistung SGI Altix Numa-Link1,525,6012, NEC Nehalem Infiniband QDR2, Magny-Cours Infiniband QDR2, cores: Magny-Cours Hypertransport0, core: 8,88802,8 CV-Cluster Infiniband QDR cores:

24 Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz Parallelrechner-Programmierung mit MPI2407. –

25 Leistungsfähigkeit von Parallelrechnern 07. – Parallelrechner-Programmierung mit MPI25

26 Leistungsfähigkeit bei realen Anwendungen Reduktion der parallelen Effizienz durch 1.Sequentielle Anteile des Programms 2.Ungleiche Lastverteilung 3.Kommunikation von Daten 4.Synchronisation Reduktion der Einzelprozessor-Effizienz durch 1.Hauptspeicherzugriffe 2.Pipeline-Unterbrechungen 3.Nicht-Nutzung paralleler Pipelines 07. – Parallelrechner-Programmierung mit MPI26

27 Sequentielle Anteile - Amdahls Gesetz 07. – Parallelrechner-Programmierung mit MPI27

28 Verallgemeinerung: Ungleiche Lastverteilung 07. – Parallelrechner-Programmierung mit MPI28

29 Datenkommunikation 07. – Parallelrechner-Programmierung mit MPI29

30 Synchronisation 07. – Parallelrechner-Programmierung mit MPI30

31 Matrix-Vektor-Multiplikation 07. – Parallelrechner-Programmierung mit MPI31

32 Matrix-Vektor-Multiplikation 07. – Parallelrechner-Programmierung mit MPI32

33 Matrix-Vektor-Multiplikation 07. – Parallelrechner-Programmierung mit MPI33

34 Matrix-Vektor-Multiplikation 07. – Parallelrechner-Programmierung mit MPI34


Herunterladen ppt "GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan"

Ähnliche Präsentationen


Google-Anzeigen