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

34
GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan [email protected]

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

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

GWDG – KursParallelrechner-Programmierung mit MPI

Grundlagen der Parallelverarbeitung

Oswald [email protected]

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

Parallelrechner-Programmierung mit MPI 2

Übersicht

• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 407. – 09. 04. 2014

(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

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

Parallelrechner-Programmierung mit MPI 5

Entwicklung der Schaltkreisgeschwindigkeit

07. – 09. 04. 2014

Hen

ness

y/Pa

tter

son:

Com

pute

r Arc

hite

ctur

e, 5

. Aufl

age;

© E

lsev

ier I

nc.,

2011

.Al

l rig

hts

rese

rved

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

Parallelrechner-Programmierung mit MPI 6

Entwicklung der Rechenleistung

07. – 09. 04. 2014

Gigaflop/s

Teraflop/s

PetaFlop/s

Exaflop/s

Top500 Liste 6/2013

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

Parallelrechner-Programmierung mit MPI 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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 8

Übersicht

• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 9

Parallelität der Hardware

Parallele Prozessoren(Multiprozessorsysteme)

Parallele funktionale Einheiten(Superskalare Architektur)

Parallele Segmente in Pipelines(Fließbandverarbeitung)

Parallele Bitverarbeitung(64bit-Architektur)

R1 R2 R3 R4

Netzwerk

add1

add2

mult1

mult2

… …

Parallele Rechner(Rechencluster)

P1 P2 P3 P4

Speicher

07. – 09. 04. 2014

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

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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 11

Übersicht

• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz

07. – 09. 04. 2014

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

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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 13

Programmiermodell: Sequentiell (von Neumann)

Instruktionen

Daten

Programmzähler

Speicher

Verarbeitungseinheit (CPU)

Instruktionseinheit Recheneinheit

Objekte:Daten, Instruktionen, PZ

Operationen:opcode op1, op2,...,re1,re2

Reihenfolge:sequentiell

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 14

Programmiermodell: shared memory

Instruktionen

Daten

PZ0

SpeicherMehrere Kontrollflüsse (threads)

Objekte:Globale Daten, Instruktionen, Lokale PZs, thread-ID

Operationen:opcode op1, op2,...,re1,re2ununterbrechbare Ops.

Reihenfolge:Sequentiell im einzelnen thread, CREW (concurrent read, exclusive write)

PZ3PZ1

VE0 VE1 VE2

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 15

Programmiermodell: message passing

07. – 09. 04. 2014

Verteilung von Daten und Instruktionen auf mehrere Prozessoren

Objekte:Lokale Daten, Instruktionen, Lokale PZs, task-id

Operationen:opcode op1, op2,...,re1,re2send(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

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

Parallelrechner-Programmierung mit MPI 16

Übersicht

• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 17

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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 18

Hybrid-Systeme:Cluster von SMP-Knoten

07. – 09. 04. 2014

Cluster mit Multi-Core CPUs

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

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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 20

Kopplung in Systemen mit verteiltem Speicher

07. – 09. 04. 2014

• Schalter

• Baum

• 2d Gitter

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

Parallelrechner-Programmierung mit MPI 21

Netzparameter

07. – 09. 04. 2014

• LatenzZeit bis zur Ankunft des ersten bits

• BandbreiteDatendurchsatz einer Verbindung

• effektive Bandbreite

• BisektionsbreiteMinimale Zahl von Verbindungen bei Schnitt durch

das Netz - wichtig für Gesamtdurchsatz

latt

c

dat

lateff

nct

cc

1

1

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

22

Rechner R hat RechenleistungNetz 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. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

Kommunikatiosnetz-Netz

R1 R2 Rn

𝑟𝑐𝑡 𝑙𝑎𝑡

𝑡 𝑙𝑎𝑡 ∙𝑟

64 ∙𝑟 /𝑐

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

Parallelrechner-Programmierung mit MPI 23

Kommunikationsleistung

07. – 09. 04. 2014

Latenzzeit

BandbreiteRechen-leistung

SGI AltixNuma-Link 1,5 25,60 12,8 19 200 32

NEC NehalemInfiniband QDR 2,5 40 81 202 500 130

Magny-Cours Infiniband QDR 2,5 40

48 cores:422 1 002 000 675

Magny-CoursHypertransport 0,1 200

1 core:8,8 880 2,8

CV-ClusterInfiniband QDR 1 40

16 cores:166 166 000 265

seclatt sGbitc / sGFlopr / rtlat cr /64

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

Parallelrechner-Programmierung mit MPI 24

Übersicht

• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 25

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 Taktrate des Prozessors

ClusterVision MPI-Cluster der GWDG 2560, 4, 2,4 GHz 24,5 Teraflop/s

Leistungsfähigkeit von Parallelrechnern

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 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 Pipelines07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 27

Jedes Programm hat sequentielle und parallelisierbare Operationen:

Ausführungszeit auf p Prozessoren:

Speed Up: Effzienz :

: Sequentieller Anteil, der zu 50% Effizienz (e=0.5) führt

für

Sequentielle Anteile - Amdahls Gesetz

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 28

Prozessor hat die Last von Operationen,

Mittlere Last pro Prozessor Maximale Abweichung Laufzeit

Effizienz

Verallgemeinerung: Ungleiche Lastverteilung

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 29

Datenkommunikation

Interprozessor-Kommunikation erzeugt BlindleistungAnzahl zu kommunizierender bitsAusführungszeiten:

Effizienz: in [Gflop/s], in [Gbit/s]

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 30

Synchronisation

Abstimmung der Arbeit der Prozessoren:z. B. Warten auf die Beendigung von parallel ausgeführten Teilaufgaben Sequentielle Abstimmung Kaskaden - Abstimmung

Parallelisierungs-Granularität ng :Anzahl parallelisierbarer Operationen zwischen zwei Synchronisationspunkten

Voraussetzung für hohe Effizienz:

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 31

Matrix-Vektor-Multiplikation

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 32

Matrix-Vektor-Multiplikation

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. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 33

Matrix-Vektor-Multiplikation

Jeder Prozessor berechnet n/p Elemente von , mit Operationen Jeder Prozessor erhält von den anderen Prozessoren je Elemente von

07. – 09. 04. 2014

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

Parallelrechner-Programmierung mit MPI 34

Matrix-Vektor-Multiplikation

Bedingung für gute Effizienz

GWDG-Cluster: • •

07. – 09. 04. 2014