This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 1 of 41
PraktikumWissenschaftliches Rechnen
Praktikum Wissenschaftliches Rechnen
Performance-optimized Programming
Scientific Computing in Computer ScienceProf. Dr. H.-J. Bungartz
• Das Programm wird in mehrere Threads aufgeteilt.
• Die Threads werden auf unterschiedlichen Prozessoren parallelausgeführt.
Problem:
• Alle Prozessoren greifen auf den gemeinsamen Speicher zuund legen Kopien in ihrem Cache an.
• Wird ein Datum im Cache verändert, so ist das System nichtmehr konsistent.
Durch eine „write-through“ Strategie, bei der eine Änderung im Ca-che zu einer Änderung im Hauptspeicher führt, kann das Systemkonsistent gehalten werden. Ein solch hoher Aufwand führt zu Leis-tungseinbußen!Deutlich weniger Aufwand hat die „write-back“ Strategie, die inkon-sistente Zustände erlaubt.Liefert ein Lesezugriff immer den Wert des zeitlich letzten Schreib-zugriffs auf das entsprechende Datum, so wird das Speichersystemals cache-kohärent bezeichnet.
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 7 of 41
PraktikumWissenschaftliches Rechnen
Das Cache-Kohärenzprotokoll legt den Umfang der Inkonsistenz festund sichert die Kohärenz.Es gibt zwei prinzipielle Ansätze für Cache-Kohärenzprotokolle:
• write-update: Beim Verändern einer Kopie in einem Cache müs-sen alle Kopien in anderen Caches ebenfalls verändert werden.
• write-invalidate: Vor dem Verändern einer Kopie in einem Cachemüssen alle Kopien für ungültig erklärt werden.
Üblicherweise wird bei SMP’s „bus-snooping“ mit Write-invalidate-Cache-Kohärenzprotokoll im Write-back-Verfahren angewandt.Beispiel: MESI-Protokoll
Exclusive modified Die Cache-line wurde geändert und befindet sichausschließlich in diesem Cache.
Exclusive unmodified Die Cache-line wird nur gelesen und befindetsich ausschließlich in diesem Cache.
Shared unmodified Kopien der Cache-line befinden sich für Lesezu-griffe im mehr als einem Cache.
Invalid Die Cache-line ist ungültig.
Nomenklatur: CC-UMA, CC-NUMA
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 8 of 41
PraktikumWissenschaftliches Rechnen
Erweiterung des MESI-Protokolls: MOESI (z.B. AMD Opteron)
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 9 of 41
PraktikumWissenschaftliches Rechnen
3. Bemerkungen zu Distributed-Shared-Memory (DSM)
• Die Prozessoren besitzen einen gemeinsamem Adressraum aberlokalen Speicher.
• Die Cache-Kohärenz wird über directory tables gesichert. Da-ten: write-back, write-invalidate; Directory: write-through, write-update.
• Leichte Portierbarkeit von SMP’s auf DSM’s.
• Der gemeinsame virtuelle Speicher wird in Seiten aufgeteilt.Diese Seiten können ihren physikalischen Speicherort wech-seln.
• Problem: Programmierer hat kaum Kontrolle über die Kommu-nikation.
• Problem: Das „Wandern“ der Seiten kann zu Seitenflattern (thra-shing) führen.
• Eine Variante ist Software basiertes DSM-System (z. B. Rthreads).
!$OMP END WORKSHARE [NOWAIT]z. B. array assignment, intrinsic funktions, where statenent
• Kurzformenz.B. #pragma omp parallel forMöglich, wenn nur eine „paralleles Objekt“ in der parallelen Regionenthalten ist.
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 19 of 41
PraktikumWissenschaftliches Rechnen
4.10. OpenMP - schedule Clause
• schedule (static[,chunk])Die Iterationen werden gleichmäßig in Blöcken (chunks) derGröße chunk reihum auf die Threads aufgeteilt. Default-Wertfür chunk ist die Anzahl der Iterationen dividiert durch die An-zahl der Threads.
• schedule (dynamic [,chunk])Die Iterationen werden in Blöcken (chunks) der Größe chunkauf die Threads aufgeteilt. Der Thread, der seinen Block abge-arbeitet hat, bekommt einen neuen zugewiesen. Default-Wertfür chunk ist 1.
• schedule (guided [,chunk])Die Iterationen werden in Blöcken (chunks) auf die Threads auf-geteilt, deren Größe exponentiell abnimmt. Mit chunk wird dieminimale Blockgröße angegeben. Default-Wert für chunk ist 1.
• schedule (runtime)Das Schleifen-Scheduling kann zur Laufzeit durch die Umge-bungsvariable OMP_SCHEDULEfestgelegt werden.
• Die Voreinstellungen sind implementationsabhängig. Meist istschedule (static) voreingestellt
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 20 of 41
PraktikumWissenschaftliches Rechnen
4.11. OpenMP - single /master and Synchronization Constructs
Zuerst zwei Work Sharing Constructs:
• single Construct#pragma omp single [clause[[,]clause]...] newlinestructured-blockSynchronisation am Ende des Blocks!
• master Construct#pragma omp master newlinestructured-blockKeine Synchronisation am Ende des Blocks!
#pragma omp flush(ticket)} while (ticket < me);work(me);ticket++;
#pragma omp flush(ticket)fprint("%d \n",me);
}}
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 24 of 41
PraktikumWissenschaftliches Rechnen
4.12. OpenMP - Variable scoping clauses and directives
• Normalerweise sind alle Variablen shared.
• Globale Variablen sind shared (Fortran: Common-Blöcke, Va-riable mit dem save-Attribut, Modul-Variable; C: Variable, derenGeltungsbereich sich auf die ganze Quelldatei erstreckt, Varia-ble mit dem static oder extern Attribut), falls sie nicht als thread-private vereinbart sind.
• Ausnahme: Die Schleifenindizes von parallelisierten Zählschlei-fen sind private.
• threadprivat DirectiveGlobale Variablen werden durch threadprivat privatisiert. Siekönnen durch die copyin Klausel initialisiert werden.
Data-Sharing Attribute Clauses
• privates. Beispiele
• shareds. Beispiele
• reduktions. Beispiele
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 25 of 41
PraktikumWissenschaftliches Rechnen
• defaultVerändert die Standardeinstellungen.
• firstprivate
init=10.2;#pragma omp parallel for privat(init, value)for (i=0; i<n; i++)
{value=get_val( init ,i);. . .
}
init=10.2;#pragma omp parallel for firstprivat(init) \
privat(value)for (i=0; i<n; i++)
{value=get_val(init,i);. . .
}
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 26 of 41
PraktikumWissenschaftliches Rechnen
init=10.2;#pragma omp parallel for firstprivat(init) \
privat(value)for (i=0; i<n; i++)
{value=get_val(init,i);. . .
}printf("%f",value);
• lastprivate
init=10.2;#pragma omp parallel for firstprivat(init) \
lastprivat(value)for (i=0; i<n; i++)
{value=get_val(init,i);. . .
}printf("%f",value);
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 27 of 41
PraktikumWissenschaftliches Rechnen
4.13. OpenMP - Runtime library
In OpenMPstehen einige Funktionen zur Verfügung, mit denen dieparallele Programmausführung zur Laufzeit gesteuert werden kann.Diese Funktionen werden nicht als Pragma angegeben, daher sollte#ifdef verwendet werden um eine fehlerfreie sequenzielle Über-setzung zu gewährleisten. Beispiele sind:
• omp_set_num_threads(int num_threads )
• omp_get_num_threads()
• . . .
• omp_set_num_dynamic()
• . . .
• Lock FunctionsMutex Operationen zum Steuerung kritischer Abschnitte im Ei-genbau.
Der Anteil q der m Operationen eines Problems wird auf p Prozes-soren gelöst. Die restlichen Operationen werden sequenziell gelöst.Damit ergibt ich der Speedup nach Amdahl zu
sp(p, q) =t1tp
=mR1
m·qp·R1
+ m(1−q)R1
=1
q 1p
+ (1− q)−−−→p→∞
1
1− q, (1)
wenn t1 die sequenzielle Ausführungszeit, tp parallele Ausführungs-zeit und R1 die Performance des einzelnen Prozessors ist.Was macht Amdahl falsch?
• Parallele Programme besitzen andere Datenstrukturen und Al-gorithmen.
• Es existiert ein paralleler Overhead (Synchronisation, Kommu-nikation, . . . )
• Die Vektorlänge sinkt mit 1/p.
In [1] finden sich dazu ausführliche Betrachtungen.
Skizze der Matrix-Matrix-Multiplikation mit „Cache Blocking“
⇒ c muß nun für jeden „Cache-fill“ geladen werden
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 39 of 41
PraktikumWissenschaftliches Rechnen
Einschub Cache-Organisation:
• Direct-Mapped-Cache
– Hauptspeicher ist in Blöcke von der Größe des Caches auf-geteilt.
– Die Reihenfolge der Cache-lines im Cache entspricht derim HS.
– Damit ist die Position einer Cache-line durch die Blocknum-mer gegeben.
• full-associative-Cache
– Jede Cache-line kann beliebig im Cache abgelegt werden.
– Um eine Cache-line zu finden, müssen gleichzeitig alle Po-sitionen (voll assoziative) in einem Takt verglichen werden.
• n-way-associative-Cache
– n-facher Direct-Mapped-Cache.
Wie muss ein Cache-Blockling-Algorithmus bei einem Direct-Mapped-Cache bzw. einem n-way-associative-Cache verändertwerden?
Details zur Cache-Optimierung finden sich in [2] und [1].
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 40 of 41
PraktikumWissenschaftliches Rechnen
Literatur
[1] SCHÖNAUER, W.: Scientific Supercomputing. Karlsruhe : Schö-nauer, 2000. – Bem: Anwendungs bezogenes Vorlesungsskript,das lange Zeit handschriftlich (?!) im Web zufinden war. Sehrempfehlenswert! . – ISBN 3–00–005484–7
[2] DOWD, Kevin ; SEVERANCE, Charles: High Performance Compu-ting. O’Reilly, 1998. – Bem: Ein Buch für Praktiker! OptimierterSpeicherzugriff, Schleifen-Optimierung und Benchmarking sindnur einige Themen aus dem breiten Vorrat, den dieses Buch be-reit hällt. – ISBN 3–931216–76–4
[3] CHANDRA, R. ; DAGUM, L. ; KOHR, D. ; MAYDAN, D. ; MCDONALD,J. ; R.MENON: Parallel Programming in OpenMP. Morgan Kauf-mann Publishers, 2001. – Bem: Einziges Lehrbuch und überallerwähntes Standardwerk.. – ISBN 1–55860–671–8
[4] UNGERER, Th.: Parallelrechner und parallele Programmierung.Berlin : Spektrum, 1997. – Bem: Das Buch gibt einen weitreich-nenden Überblick. Es schliest die Lücke zwischen theoretischenKonzepten einerseits und einer Handware bezogenen Betrach-tung andererseits hin zur praktischen Anwendung. Es handeltsich um ein klassisches Lehrbuch. – ISBN 3–8274–0231–X
Multiprozessorsysteme
SMP
DSM Bemerkungen
OpenMP
Amdahl Parallel
Blocking
Literatur
Page 41 of 41
PraktikumWissenschaftliches Rechnen
[5] MÄRTIN, Ch.: Rechnerachitekturen. Leibzig : Fachbuchverlag,2001. – Bem: Wer über die Inhalte des Praktikums hinaus anRechnerarchitektur interresiert ist, findet hier ein Lehrbuch, dassich auch sehr gut als Nachschlagewerk eignet. – ISBN 3–446–21475–5