gwdg – kurs parallelrechner-programmierung mit mpi grundlagen der parallelverarbeitung oswald haan...
TRANSCRIPT
GWDG – KursParallelrechner-Programmierung mit MPI
Grundlagen der Parallelverarbeitung
Oswald [email protected]
Parallelrechner-Programmierung mit MPI 2
Übersicht
• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz
07. – 09. 04. 2014
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
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
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
Parallelrechner-Programmierung mit MPI 6
Entwicklung der Rechenleistung
07. – 09. 04. 2014
Gigaflop/s
Teraflop/s
PetaFlop/s
Exaflop/s
Top500 Liste 6/2013
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
Parallelrechner-Programmierung mit MPI 8
Übersicht
• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz
07. – 09. 04. 2014
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
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
Parallelrechner-Programmierung mit MPI 11
Übersicht
• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz
07. – 09. 04. 2014
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
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
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
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
Parallelrechner-Programmierung mit MPI 16
Übersicht
• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz
07. – 09. 04. 2014
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
Parallelrechner-Programmierung mit MPI 18
Hybrid-Systeme:Cluster von SMP-Knoten
07. – 09. 04. 2014
Cluster mit Multi-Core CPUs
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
Parallelrechner-Programmierung mit MPI 20
Kopplung in Systemen mit verteiltem Speicher
07. – 09. 04. 2014
• Schalter
• Baum
• 2d Gitter
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
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 ∙𝑟 /𝑐
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
Parallelrechner-Programmierung mit MPI 24
Übersicht
• Rechenleistung• Parallelität• Programmiermodelle• Parallelrechner• Parallelisierungseffizienz
07. – 09. 04. 2014
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
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
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
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
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
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
Parallelrechner-Programmierung mit MPI 31
Matrix-Vektor-Multiplikation
07. – 09. 04. 2014
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
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
Parallelrechner-Programmierung mit MPI 34
Matrix-Vektor-Multiplikation
Bedingung für gute Effizienz
•
GWDG-Cluster: • •
07. – 09. 04. 2014