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

Slides:



Advertisements
Ähnliche Präsentationen
Message Passing Interface (MPI)
Advertisements

Parallel and Cluster Computing
KA – Rechnerarchitektur I ____________________________________________________________________________________________ ____________________________________________________________________________________________.
PC-Cluster.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
2.5 Vektorrechner & Multimedia-Erweiterungen
Moore's Law - /TU Freiberg/Internet Multimedia/Konrad Froitzheim
Zentraleinheit CPU, Motherbord, RAM
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Kapitel 3 5 Rechnerorganisation
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
OpenMP Präsentation im Rahmen des Seminars
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 14.1.
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 3. Quartal 2002.
Vorlesung: 1 Betriebssysteme IV 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebssysteme IV 2. Quartal 2003.
Studiengang Informatik FHDW
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
Seminar: Verteilte Datenbanken
Von: Antoni Gazali Clarkson Laryea
AMDs Next Generation Die Hammer Familie Eine Kurzpräsentation von Frank Grümmert bei Herrn Prof. Dr.-Ing. Risse für das RST-Labor.
Was sind Cluster und wie sind sie aufgebaut
Inhalt Der Cell Prozessor Aufbau des Cells Platine Block Diagramm
Matrix Multiplication on CUDA
Die in der Hand (oben) gehaltene Siliziumscheibe ist unten vergrößert und mit farbigem Licht ausgeleuchtet abgebildet. Man erkennt Reihen integrierter.
Rechneraufbau & Rechnerstrukturen, Folie 13.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 13.
Rechneraufbau & Rechnerstrukturen, Folie 0.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Übersicht.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
mittels Systemanalyse
Duo- und Quad Prozessor-Architektur
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Programmierung paralleler Algorithmen mit MPI
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Allgemeine Datentypen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI – Oswald Haan
3.4 CPU-Chips und Busse CPU-Chips
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Anwendung von Microcontollern
Multiprozessoren: Herausforderung für die Software
Systemsoftware und Betriebssysteme
JAVA/DSM A Platform for Heterogeneous Computing Serge F. Possono M. Technische Universität Muenchen (TUM) Lehr- und Forschungseinheit Informatik X Rechnertechnik.
Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Anforderungen an Automotive Bussysteme
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Clustering Clustering mit openMosix von Christian Wiese Stefan Krause.
Parallele Algorithmen I Basistechniken
Software Engineering SS04 Paralleles Programmieren FH Aachen, Prof. Dr.-Ing. Michael Trautwein Andrej Kühnal, Perez-Otuno Rodrigo.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Punkt-zu-Punkt-Kommunikation Oswald Haan
Institute for Software Science – University of ViennaP.Brezany Parallele und verteilte Systeme Peter Brezany Institut für Softwarewissenschaften Universität.
Bulk Synchronous Parallel Computing

Dr. Klaus Ruhlig Technology & Product Consulting Sun Microsystems, München Skalierbare Rechnerarchitekturen für ein DWH: Eine vergleichende Analyse.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Vom HW-Automaten zum Prozessor
CSL211 Computer Architecture
Shared Memory Programmierung: Grundlagen
 Präsentation transkript:

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

Parallelrechner-Programmierung mit MPI Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

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

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

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

Parallelrechner-Programmierung mit MPI Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

Parallelrechner-Programmierung mit MPI Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

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

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

Parallelrechner-Programmierung mit MPI Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

Hybrid-Systeme:Cluster von SMP-Knoten Cluster mit Multi-Core CPUs 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

Kopplung in Systemen mit verteiltem Speicher Schalter Baum 2d Gitter 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

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 202 500 130 Magny-Cours 48 cores: 422 1 002 000 675 Hypertransport 0,1 200 1 core: 8,8 880 2,8 CV-Cluster 1 16 cores: 166 166 000 265 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

Parallelrechner-Programmierung mit MPI Übersicht Rechenleistung Parallelität Programmiermodelle Parallelrechner Parallelisierungseffizienz 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

Sequentielle Anteile - Amdahls Gesetz Jedes Programm hat sequentielle und parallelisierbare Operationen: 𝑁=𝑁𝑠+𝑁𝑝=𝑁∙ 𝜎+𝜋 Ausführungszeit auf p Prozessoren: 𝑇𝑝=𝜏∙ 𝑁𝑠+ 𝑁𝑝 𝑝 = 𝜏∙𝑁 𝜎+ 𝜋 𝑝 Speed Up: 𝑠= 𝑇1 𝑇𝑝 =𝑝∙ 1 1+(𝑝−1)∙𝜎 Effzienz : 𝑒= 𝑠 𝑝 = 1 1+(𝑝−1)∙𝜎 𝜎½: Sequentieller Anteil, der zu 50% Effizienz (e=0.5) führt 𝜎½= 1 𝑝−1 für 𝑝=2560 𝜎½≈0,0004 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

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

Matrix-Vektor-Multiplikation 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI

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

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

Matrix-Vektor-Multiplikation Bedingung für gute Effizienz 𝑝∙ 𝑝−1 2 𝑛 2 ∙𝑟∙𝑡𝑙𝑎𝑡<1 𝑝−1 𝑛 ∙ 𝑟 𝑐 <1 GWDG-Cluster: 𝑟∙𝑡𝑙𝑎𝑡=166000 ⟹ 𝑛 𝑝 > 288 𝑟 𝑐 =256 ⟹ 𝑛 𝑝 > 256 07. – 09. 04. 2014 Parallelrechner-Programmierung mit MPI