Shared Memory Programmierung: Grundlagen

Slides:



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

Die SX-Series: Eine Erfolgsstory mit Fortsetzung
14 Parallele Rechner 14.1 Parallele Rechner - Einführung 14.2 Leistung
Parallel and Cluster Computing
KA – Rechnerarchitektur I ____________________________________________________________________________________________ ____________________________________________________________________________________________.
C Tutorium – Semaphoren –
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
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
W. Oberschelp G. Vossen Kapitel 7.
OpenMP Präsentation im Rahmen des Seminars
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 14.1.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 8.1.
Rechneraufbau & Rechnerstrukturen, Folie 10.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 10.
Studiengang Informatik FHDW
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
8 Speicherverwaltung Lücke zwischen Verarbeitungsgeschwindigkeit des Prozessors und Zugriffsgeschwindigkeit auf RAM-Speicher Grundprinzip zur Überbrückung:
Von: Antoni Gazali Clarkson Laryea
EPIC, IA-64 und Itanium Eine Kurzpräsentation von Jan Hübbers bei Prof. Dr.-Ing. Risse im Fach Labor Rechnerstrukturen an der Hochschule Bremen
Inhalt Der Cell Prozessor Aufbau des Cells Platine Block Diagramm
Matrix Multiplication on CUDA
< Best practices >
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
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
Duo- und Quad Prozessor-Architektur
F.Ladstätter und R.Elsässer VP Wissenschaftliches Arbeiten und Präsentation 13. Dezember 2001.
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Clustering mittels Grafikprozessor
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
3.4 CPU-Chips und Busse CPU-Chips
IT für Führungskräfte Zentraleinheiten Gruppe 2 - CPU.
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
Oswald Haan GWDG – Kurs Parallelrechner-Programmierung mit MPI Grundlagen der Parallelverarbeitung Oswald Haan
Multiprozessoren: Herausforderung für die Software

Rechnersysteme: Halbzeit Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Daten und Information.
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
Christoph Kessler, IDA, Linköpings universitet, Feb Sprachentwurf und Compiler-Techniken zur explizit-parallelen Programmierung nach dem BSP-Modell.
Rechnerarchitekturen
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
Moderne Rechner-Architekturen
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Parallele Algorithmen I Basistechniken
Software Engineering SS04 Paralleles Programmieren FH Aachen, Prof. Dr.-Ing. Michael Trautwein Andrej Kühnal, Perez-Otuno Rodrigo.
Institute for Software Science – University of ViennaP.Brezany Parallele und verteilte Systeme Peter Brezany Institut für Softwarewissenschaften Universität.
Bulk Synchronous Parallel Computing
2.3 Implementierung von Prozessen

Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Dr. Klaus Ruhlig Technology & Product Consulting Sun Microsystems, München Skalierbare Rechnerarchitekturen für ein DWH: Eine vergleichende Analyse.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Paralleleles Rechnen auf Grafikkarten Einführung Christian Schwarz.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Blowfish mit CUDA Dominik Oepen Inhalt ● Blowfish Grundlagen ● Implementierungsdetails ● Performance ● Fazit.
VHDL-Modellierung der Pipeline eines DLX-Prozessors
CPU Furkan Dogan.
Vom HW-Automaten zum Prozessor
Neuronale Netze und Parallelrechner
Shared Memory Programmierung: Übungen
Shared Memory Programmierung: OpenMP
 Präsentation transkript:

Shared Memory Programmierung: Grundlagen Architektur Programmiermodell Sprachmittel Shared Memory Programmierung: Grundlagen

Klassifikation von Parallelrechnern MIMD SIMD Shared Memory Distributed Memory Array Processor Vector Processor Shared Memory Programmierung: Grundlagen

Flynn – Taxonomie: Kontrollfluß SISD : Single Instruction Stream – Single Data Stream eine Instruktion nach der anderen operiert auf jeweils einem Datenwert SIMD : Single Instruction Stream – Multiple Data Stream eine Instruktion nach der anderen operiert auf jeweils mehreren Datenwerten MIMD : Multiple Instruction Stream – Multiple Data Stream mehrere Instruktion operieren gleichzeitig auf eigenen Datenwerten Shared Memory Programmierung: Grundlagen

SISD Rechner-Klassifikation nach Flynn IE RE Single Instruction Stream Abstrakte Beschreibung von Datenverarbeitung: Rechenwerke führen Instruktionen auf Daten aus Sequentieller Rechner : IE + RE IE RE Single Instruction Stream Single Data Stream SISD Shared Memory Programmierung: Grundlagen

SIMD Rechner-Klassifikation nach Flynn (2) IE RE1 RE2 RE3 Parallelrechner 1 : IE + RE1 + RE2 + RE3 + ... IE RE1 RE2 RE3 Single Instruction Stream Multiple Data Streams SIMD Shared Memory Programmierung: Grundlagen

MIMD Rechner-Klassifikation nach Flynn (3) IE1 RE1 IE2 RE2 IE3 RE3 Parallelrechner 2 : IE1 + RE1 + IE2 + RE2 + IE3 + RE3 + ... IE1 RE1 IE2 RE2 IE3 RE3 Multiple Instruction Streams Multiple Data Streams MIMD Shared Memory Programmierung: Grundlagen

... SIMD-Rechner 1: Feldrechner IE P P P S S S globaler Speicher Beispiele: ICL DAP (Distributed Array Processor) (4096 1bit Proz.) Thinking Machine CM2, CM5 (1bit Proz., 32bit Proz.) MassPar (4bit Proc.) jeder RISC-Prozessor mit 2 Fließkomma-Einheiten (Pentium4) Shared Memory Programmierung: Grundlagen

SIMD-Rechner 2: Vektorrechner globaler Speicher IE RE: Pipeline mit unabhängigen Segmenten - Fließbandverarbeitung Beispiele: Cray T90, J90, SV1 NEC SX4 jeder RISC-Prozessor mit mehrstufigen Fließkomma- Einheiten (Pentium4) Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen SIMD Parallelität Single Instruction Stream - Multiple Data Stream Vektor-Rechner Feld-Rechner Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen MIMD Parallelität Multiple Instruction Stream - Multiple Data Stream Rechner mit gemeinsamem Speicher Rechner mit verteiltem Speicher Shared Memory Programmierung: Grundlagen

Hybrid-Systeme: Cluster von SMP-Knoten Shared Memory Programmierung: Grundlagen

Kopplung in Systemen mit gemeinsamem Speicher Bus serialisierter Speicherzugriff nicht skalierbar geringe Latenz Schalter simultaner Speicherzugriff (bei günstiger Datenverteilung) skalierbar höhere Latenz Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen Cache - Kohärenz P0 : Lese a P0 : schreibe a P1 : Lese b P1 : Lese a Speicher a b c d a b c d Cache a b c d a b c d a b c d a b c d CPU a b a Shared Memory Programmierung: Grundlagen

IBM p690 mit 32 Power4 Prozessoren Shared Memory Programmierung: Grundlagen

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 Shared Memory Programmierung: Grundlagen

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 Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen Beispielprogramm Sequentiell 1 s = 0 2 call work1(a) 3 s = s + a 4 call work2(b) 5 s = s + b 6 stop Parallel 1 s = 0 2 wenn tid = 0 PZ = 5 3 wenn tid = 1 PZ = 8 4 PZ = 10 5 call work1(a) 6 s = s + a 7 PZ = 10 8 call work2(b) 9 s = s + b 10 stop thread0 : 1 - 2 - 5 - 6 - 7 – 10 thread1 : 1 - 2 - 3 - 8 - 9 - 10 Instruktionsfolge: Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen race condition 6-1 lade s -> reg 6 s = s + a 6-2 reg = reg + a 6-3 speichere reg -> s thread0 thread1 6-1 6-2 6-3 9-1 9-2 9-3 s = a + b thread0 thread1 6-1 9-1 6-2 9-2 6-3 9-3 s = b thread0 thread1 6-1 9-1 6-2 9-2 9-3 6-3 s = a Zeit Shared Memory Programmierung: Grundlagen

Shared Memory Programmierung: Grundlagen Barriere Voraussetzung: bar = bar + 1 ist ununterbrechbar bar = bar - 1 ist ununterbrechbar bar = 0 bei Programmstart nt = Zahl der Threads ist bekannt bar = bar + 1 wenn bar < nt PZ = 2 bar = bar -1 wenn bar > 0 PZ = 4 Shared Memory Programmierung: Grundlagen

Sprachmittel zur Erleichterung der shared memory Programmierung Erzeugung und Kontrolle von threads Synchronisation von threads mutual exclusion (mutex) Private Speicherbereiche Standardisierte Sprachmittel: Posix threads OpenMP Shared Memory Programmierung: Grundlagen