Ziel des Praktikums Konzept des Praktikums Parallelität - Ebenen Klassifikation nach Flynn Vektorrechner - Aufbau Arithm. Operationen Leistungsanalyse Vektorisierte Programme C99 Standard Top500 Liste Vektorrechner SGI Altix (LRZ) Aktuelle Prozessoren Mehr Leistung Literatur Page 1 of 79 Praktikum Wissenschaftliches Rechnen Praktikum Wissenschaftliches Rechnen Performance-optimized Programming Scientific Computing in Computer Science Prof. Dr. H.-J. Bungartz Dipl.-Geophys. Markus Brenk [email protected]Dr. Ralf Mundani [email protected]26. Oktober 2006
79
Embed
Praktikum Wissenschaftliches Rechnen · Konzept des Praktikums Parallelität - Ebenen Klassifikation nach Flynn Vektorrechner - Aufbau Arithm. Operationen Leistungsanalyse Vektorisierte
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
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 1 of 79
PraktikumWissenschaftliches Rechnen
Praktikum Wissenschaftliches Rechnen
Performance-optimized Programming
Scientific Computing in Computer ScienceProf. Dr. H.-J. Bungartz
Parallele Programme lassen sich nach der Granularität ihre Paral-lelität klassifizieren und Rechnertypen gegenüberstellen, welchendurch ihre Hardware die entsprechende Ebene unterstützen.
• Suboperationsebene
– Vektorrechner(z. B. NEC-SX,Cray-SV)
– Feldrechner (z. B.MasPar-Rechner)
– Cell-Processor
– SSE[1− 4]
– . . .
• Anweisungsebene
– Superskalarrechner (z. B. Workstation/PC)
– VLIW-Rechner (very long instruktion word) (z. B. Itanium)
– . . .
ILP – Instruction Level Parallelism
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 5 of 79
PraktikumWissenschaftliches Rechnen
• Blockebene (Threads)
– Shared-Memory-Rechner (z. B. SUN-UltraSparc, SGI-Altix)
– . . .
• Prozessebene
– Distributed-Memory-Rechner (Cray-T3E, IBM-SP)
– . . .
• Programmebene
– Workstation-Cluster
– Grid-Computer
– . . .
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 6 of 79
PraktikumWissenschaftliches Rechnen
4. Klassifikation nach Flynn
• Betrachte: Befehlsstrom und Datenstrom
• Ein Rechner bearbeitet zu einem Zeitpunkt einen oder mehrereBefehle
• Ein Rechner bearbeitet zu einem Zeitpunkt einen oder mehrereDatenwert
SISD SIMDEinprozessorsystem Vektorrechner
Feldrechner
MISD MIMDleer Multiprozessorsysteme
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 7 of 79
PraktikumWissenschaftliches Rechnen
5. Aufbau eines Vektorrechner
5.1. Was ist ein Vektorrechner?
• Einen Rechner mit pipelineartig aufgebautem/n Rechenwerk/en,der Arrays von Gleitpunktzahlen verarbeitet.
• Vektor = Array (Feld) von Gleitpunktzahlen.
• Vektorbefehle werden auf ganze Vektoren angewendet, die inVektorregistern gespeichert sind.
• Ein Vektorrechner enthält neben der Vektoreinheit auch nocheine oder mehrere Skalareinheiten. Dort werden die skalarenBefehle parallel zu den Vektorbefehlen ausgeführt.
• Ein „klassischer“ Vektorrechner besitzt keinen Cache. Die Da-ten werden über Load- bzw. Store-Pipelines direkt in die Vektor-register geladen. Der dazu erforderliche schnelle Zugriff auf denHauptspeicher wird durch Speicherverschränkung (interleavedmemory) realisiert.
Beispiel: CRAY T90 32 doppelt ausgelegten Prozessoren mitzwei Load-Pipelines, einer Store-Pipeline und einer i/o Einheitdie auf den Speicher zugreifen.
• Arithmetisches Pipelining Beispiel: Addition in vier Schritten
– Ein Paar Gleitpunktzahlen aus dem Vektorregister laden,
– die Exponenten vergleichen und eine der Mantissen ver-schieben,
– die ausgerichtetem Mantissen addieren und
– das Ergebnis normalisieren und in ein Register zurückschrei-ben.
Zeitl. Verlauf einer Vektoroperation in einer Pipeline
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 11 of 79
PraktikumWissenschaftliches Rechnen
• Software Pipelining
Die einzelnen Schleifeniterationen werden überlappt ausgeführt.Jede Zeile entspricht einem VLIW.
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 12 of 79
PraktikumWissenschaftliches Rechnen
for(i=0;i<n;i++){
a[i]=b[i]+c;}
Bei einer Pipeline mit k Stufen wird nach einer Einschwingzeit, abdem Systemzyklus k zu jedem Takt ein Ergebnis geliefert.
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 13 of 79
PraktikumWissenschaftliches Rechnen
6. Arithm. Operationen und Speicherzugriffe
Bei einem Vektorrechner können die arithmetischen Pipelines ver-kettet werden, diese wiederum können mit den Load- bzw. Store-Pipelines verkettet werden. Somit ist ein kontinuierlicher Datenstromvom Speicher zum Prozessor und zurück realisierbar.Können die Daten in der beschriebenen Weise geladen, verarbeitetund gespeichert werden, so erreicht der Rechner seine maximaleLeistung. Ob diese erreicht wird hängt von der Speicherbandbreite,also von der Anzahl der vorhandenen L/S-Pipelines und von der Zahlder benötigten Speicherzugriffe ab.Für technische Anwendungen können folgende Operationen unter-schieden werden:
• Dyadische Operationen (MUL/ADD)
ai↓
= bi↑
+· ci↑
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 14 of 79
PraktikumWissenschaftliches Rechnen
• Triadische Operationen (MUL&ADD)
– „Vector Triad“
ai↓
= bi↑
+ ci↑· di↑
– „Linked Triad“
ai↓
= bi↑
+ s · di↑
– „Repeated Contracting Vector Triad“
ai = ai{
imRegister
gehalten
+ (ci↑· di↑)j , j = 1, 2, . . .
– „Repeated Contracting Linked Triad“
ai = ai{
imRegister
gehalten
+ (s · di↑)j , j = 1, 2, . . .
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 15 of 79
PraktikumWissenschaftliches Rechnen
• Skalarprodukt
s = s + ai↑· bi↑
• „Polyadische“ Operationen
ai = bi + ci · di + ei · fi + gi · hi
Diese Betrachtung gilt analog für Workstations/PCs. Auch hier ist dieSpeicherbandbreite in der Regel der entscheidende „Bottleneck“ fürrechenintensive Anwendungen.
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 16 of 79
PraktikumWissenschaftliches Rechnen
7. Leistungsanalyse - Maßzahlen eines Vektorrech-ners
• Der Durchsatz D einer Pipeline mit k Stufen und dem Taktzy-klus τ ergibt sich, bei der Verarbeitung von n Elementen überden Zeitraum t = T · τ , zu
D =n
T · τ. (1)
Mit
T = k + (n− 1) (2)
ergibt sich
D =n
(k + (n− 1)) · τ=
1
( kn
+ (1− 1n)) · τ
−→n→∞
1
τ. (3)
Damit ist der maximale Durchsatz einer Pipeline Dmax = 1τ.
• Die Hälfte des maximalen Durchsatzes wird bei der Vektorlängen := n1/2 erreicht. n1/2 wird als „Half-performance length“ bezeichnet.Mit
Dmax
2=
1
2 · τ=
n1/2
(k + (n1/2 − 1)) · τ(4)
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 17 of 79
PraktikumWissenschaftliches Rechnen
folgt
n1/2 = k − 1 . (5)
Neben der Einschwingzeit muss auch die Startzeit s betrachtetwerden. In der Startzeit werden Vektorbefehle decodiert, Adres-sen für das erste und letzte Feld der Vektoren berechnet, dieOperanden geladen usw. . Damit wird (2) zu
T = k + (n− 1) + s . (6)
In der Praxis wird die Startzeit und die Einschwingzeit unterder „Half-performance length“ zusammengefasst. Für die Aus-führungszeit t(n) ergibt sich
• Ein Blick auf Abschnitt 6 zeigt, dass nicht immer in jedem Zyklusalle benötigten Daten zu Verfügung stehen, bzw. in einem Zy-klus zwei Operationen ausgeführt werden (vgl. Chaining oderSuperskalar-Architektur). Deshalb ist es sinnvoll die effektiveZykluszeit τeff und die ideale Zykluszeit τideal einzuführen. Esgilt
τideal =
{τ , dyadischeOperationτ2
, triadischeOperation.
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 18 of 79
PraktikumWissenschaftliches Rechnen
Die effektive Zykluszeit τeff ist abhängig von der arithm. Opera-tion und der Systemarchitektur. Somit kann aus dem Verhältnisder beiden Werte auf die Effizienz der Architektur geschlossenwerden. Daher ergibt sich der Architekturwirkungsgrad ηa zu
ηa =τideal
τeff
. (8)
• Die Floatingpoint-Leistung (Performance) R eines (Vektor-)Rech-ners ist
R =Zahl der Floatingpoint-Operationen
Ausführungszeit. (9)
Wird die effektive Zykluszeit berücksichtigt, ergibt sich mit (7)
R(n) =n
(n + n1/2)τeff
=1
τeff
· 1
1 +n1/2
n
. (10)
Im Grenzwert n →∞ gilt
R∞ =1
τeff
. (11)
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 19 of 79
PraktikumWissenschaftliches Rechnen
Der Grenzwert R∞ wird als „Real Peak Performance“ bezeich-net. R∞ kann in der Praxis nicht gemessen werden daher ist essinnvoll die „Maximal Performance“ Rmax als maximal gemes-sene Leistung einzuführen. Dabei muss n � n1/2 gelten. Damitist τeff mit
τeff =1
R∞≈ 1
Rmax
(12)
gegeben. Die Leistung wird normalerweise in FLOPS und dieZykluszeit in nsec angegeben.
• Amdahl’sches Gesetz für Vektorisierung
Ein Programm mit insgesamt m Operationen wird auf einemVektorrechner ausgeführt. Für skalare Operationen ergibt sichdie mittlere Leistung Reff,scalar. Für Vektoroperationen mit dermittleren Vektorlänge n̄ ergibt sich die Leistung Reff (n̄). Die Zeitdas vollständige Programm vektoriell bzw. skalar auszuführenist durch
t(n̄) =m
Reff (n̄)bzw. tscalar =
m
Reff,scalar
(13)
gegeben.
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 20 of 79
PraktikumWissenschaftliches Rechnen
Der maximal erreichbare Speedup für ein vollständig vektori-siertes Programm ist damit
spmax(n̄) =tscalar
t(n̄)=
Reff (n̄)
Reff,scalar
. (14)
Leider besitzt jedes Programm einen Anteil an skalaren Opera-tionen. Es sei
– v ·m der Anteil an vektorisierbaren Operationen und
• Die Supercomputer von NECsind aus „klassischen“ Vektor-Pro-zessorelementen aufgebaut.
• Jeder Prozessor ist achtfach Ausgelegt, d. h. jeder Prozessorliefert in einem Zyklus acht Ergebnisse („pipeline tracking“ ). DieAusführungszeit einer Pipeline ist nach (7) durch
t(n) = (n + n1/2)τeff
gegeben. Dies ist eine Geradengleichung mit der Steigung τeff
und dem „y-Achsen-Abschnitt“ τeff · n1/2. Für eine doppelt aus-geführte Pipeline gilt
t(n) = (n
2+ n1/2)τeff
t(n) = (n + 2 · n1/2)τeff
2.
n1/2
1/2n°2
τeff
n
2 pipes
1 pipet(n)
1/2n°
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 41 of 79
PraktikumWissenschaftliches Rechnen
• NECist es gelungen das Problem großer n1/2 bei Pipeline-Ver-vielfachung durch einen „gepipelineten“ Startup zu umgehen.
• Die NEC-SX5 besitzt eine Load-Pipeline und eine Load/Store-Pipeline. Allerdings kann Load und Store nicht parallel ausge-führt werden.
load
load
load
load load
load
storestore
Beispiel: Vektor-Triade
Damit ergibt sich für die maximal zu erwartende Leistung beider Vektortriade
# show results of experiments(er_print) fsingle <function>
# write source and compiler infos to file(er_print) scc [[all][pi][...]](er_print) outfile <file_name>(er_print) source <function>
--------------------------------------------------------------------------OPTIONS (collect)--------------------------+------------------------------------------------p on | off | hi | lo + Clock profiling--------------------------+------------------------------------------------H on | off + Heap tracing--------------------------+------------------------------------------------m on | off + MPI tracing--------------------------+------------------------------------------------h counter0,0,counter1,0 + Hardware Counters--------------------------+------------------------------------------------j on | off + Java profiling--------------------------+------------------------------------------------S on | off | seconds + Periodic sampling (default interval: 1 sec)--------------------------+-----------------------------------------------
+ The quotient is the CPI rate+ (clocks per instruction)+ The optimum would be 0.25.+ The Mhz rate of the CPU multiplied with+ the instruction count divided by the+ cycle count gives the MIPS rate.
--------------------------+------------------------------------------------h fpadd,0,fpmul,0 + Floating point additions and multiplications
+ The sum divided by the runtime in Âs gives+ the Mflop/s rate
--------------------------+------------------------------------------------h cycles,0,dtlbm,0 + Cycle count, data translation look-aside
+ buffer (DTLB) misses+ A high rate of DTLB misses indicates an+ unpleasant memory access pattern of the+ program. Large pages might help (Solaris 9)
-h cycles,0,dcstall,0 + L1 plus L2 cache stall cycles--------------------------+------------------------------------------------h ecref,0,ecm + L2 cache references and misses--------------------------+------------------------------------------------h dcr,0,dcrm,0 + L1 cache read references and read misses--------------------------+------------------------------------------------h dcw,0,dcwm,0 + L1 cache write references and write misses--------------------------+-----------------------------------------------
scc class_listb[asic] -- show basic messages from all classesv[ersion] -- show version messagesw[arn] -- show warning messagespa[rallel] -- show parallelization messagesq[uery] -- show questions from the compilerl[oop] -- show loop transformation messagespi[pe] -- show pipelining messagesi[nline] -- show inlining messagesm[emops] -- show messages about memory operationsf[e] -- show front-end messagesc[g] -- show code generator messagesall -- show all messagesnone -- do not show messages
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 76 of 79
PraktikumWissenschaftliches Rechnen
14. Vier Wege zu mehr Leistung
• Reduktion der Zykluszeit⇒ Technologie abhängig
• Pipelining⇒ Instruktionen und Arithmetische Operationen
• Parallele Einheiten im Prozessor⇒ MULL&ADD, multi tracked units
• Externer Parallelismus⇒ Shared Memory Computer und Distributed Memory Compu-ter
[3] VAN DER VORST, H.A. ; DEKKER, K.: Vectorization of linesr re-currence relations. In: SIAM J. Sci. Stat. Comput. 10 (1989), Nr.1, S. 27–35
[4] 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
[5] 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
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 78 of 79
PraktikumWissenschaftliches Rechnen
[6] 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
[7] 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
[8] LEISS, E. L.: Parallel and Vector Computing. New York : McGraw-Hill, 1995. – Bem: Gute Bücher zur Parallelen Programierungsind schwer zu finden. Dies ist ein gutes Buch und wurde vor-allem wegen der Beiträge zum Vector Computing in diese Listeaufgenommen. – ISBN 0–07–037692–1
[9] SANDERS, P. ; WORSCH, Th.: Parallele Programmierung mit MPI.Berlin : Logos, 1997. – Bem: Das Buch wurde als Begleitheftzu einem Praktikum konzipiert. Es beitet eine praxisbezogeneEinführung in das Message Passing Interface MPI. – ISBN 3–931216–76–4
Ziel des Praktikums
Konzept des Praktikums
Parallelität - Ebenen
Klassifikation nach Flynn
Vektorrechner - Aufbau
Arithm. Operationen
Leistungsanalyse
Vektorisierte Programme
C99 Standard
Top500 Liste
Vektorrechner
SGI Altix (LRZ)
Aktuelle Prozessoren
Mehr Leistung
Literatur
Page 79 of 79
PraktikumWissenschaftliches Rechnen
[10] BUNGARTZ, H-J.: Numerische Simulation als interdisziplinäreHerausforderung. Springer, 2002. – Bem: Dieses einmaligeWerk richtet sich vornehmlich an das gewählte Fachpublikum.Der geneigte Leser findet in diesem Band vorzügliche Beiträgeaus dem Gebiet der numerischen Simulation. Das Buch kann inder Abteilung SgS eingesehen werden, da es leider nicht denWeg in den Buchhandel fand