praktikum wissenschaftliches rechnen · konzept des praktikums parallelität - ebenen...
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
Dipl.-Geophys. Markus [email protected]. Ralf [email protected]
26. Oktober 2006
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 2 of 79
PraktikumWissenschaftliches Rechnen
1. Ziel des Praktikums
HLRB II
Highend CPUs
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 3 of 79
PraktikumWissenschaftliches Rechnen
2. Konzept des Praktikums
• Einführung und grundlegende Fertigkeiten
– Laufzeitoptimierung (Pipeline, Cache)
– Programmieren auf Shared-Memory Rechnern (OpenMP)
– Programmieren auf Distributed-Memory Rechnern (MPI)
– fünf Übungsblätter; teilweise theoretische Aufgaben; engeVorgaben
• Projekt orientierte Aufgabe(n)
– freie Aufgabenstellung; Vertiefung und Anwendung des Er-lernten; wenig Vorgaben; eigenverantwortliche Arbeiten
www http://www5.in.tum.de/lehre/praktika/wissprak/WS06/
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 4 of 79
PraktikumWissenschaftliches Rechnen
3. Ebenen der Parallelität
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.
32(proc.) · 8(ref.) ∗ 4cycles(bbt.) ⇒ 1024banks(SSRAM)
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 8 of 79
PraktikumWissenschaftliches Rechnen
5.2. Prinzipskizze eines Vektorprozessors
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 9 of 79
PraktikumWissenschaftliches Rechnen
5.3. Pipelining
• Instruktion Pipelining
Befehlsausführung ohne und mit Pipelining
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 10 of 79
PraktikumWissenschaftliches Rechnen
• 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
t(n) = T · τ = (k + (n− 1) + s) · τ = (n + n1/2)τ (7)
• 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
– (1− v) ·m der Anteil an skalaren Operationen.
Mit der Ausführungszeit
t(n̄, v) =mv
Reff (n̄)+
m(1− v)
Reff,scalar
(15)
und (14) ergibt sich
sp(n̄, v) =tscalar
t(n̄)=
1
vReff,scalar
Reff (n̄)+ (1− v)
−−−−−−−→Reff (n̄)→∞
1
1− v. (16)
Welche Aussage steckt hinter diesem Grenzwert?
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 21 of 79
PraktikumWissenschaftliches Rechnen
Links zum Thema Leistungsbewertung:
www http://home.austin.rr.com/mccalpin/papers/bandwidth/bandwidth.html
www http://www.netlib.org/benchweb/hpc.html
www http://www.scl.ameslab.gov/Publications/Gus/TwelveWays.html
www http://crd.lbl.gov/ dhbailey/dhbpapers/twelve-ways.pdf
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 22 of 79
PraktikumWissenschaftliches Rechnen
8. Erstellen vektorisierter Programme
8.1. Daumenregeln für Vektorisierung
Richlinien für Schleifen:
• Einfache Schleifen
• Felder und invariante Ausdrücke auf der Rechten Seite benut-zen
• Nur Zuweisungen benutzen
Vermeide folgende Schleifenkörper:
• Funktionsaufrufe
• Nicht vektorisierbare Operationen
• Vektorisierbare Ausdrücke mit verschiedenen Datentypen
• Datenabhängige Abbruchbedingungwhile(a[i]<0.0)
{a[i]=b[i] * c[i];i++;
}
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 23 of 79
PraktikumWissenschaftliches Rechnen
8.2. Abhängigkeitsanalyse und Vektorisierung
• Schleife Ifor(i=0;i<n;i++)
{a[i]=b[i]+c[i];
}Keine Abhängigkeiten zwischen den einzelnen Iterationen ⇒kann optimal in einer Pipeline ausgeführt werden.
• Schleife IIfor(i=0;i<n-1;i++)
{c[i]=c[i] * c[i];d[i]=d[i] * d[i+1];
}Es werden nur „alte“ Werte benutzt ⇒ volle Vektorisierung!
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 24 of 79
PraktikumWissenschaftliches Rechnen
• Schleife IIIfor(i=1;i<n;i++)
{c[i]=c[i] * c[i-1];
} REKURSION! ci−1 ist beim Zugriff noch in der Pipeline ⇒keine Vektorisierung!
• Schleife IVfor(i=n;i>1;i--)
{c[i]=c[i] * c[i-1];
}Keine Rekursion!
• Schleife Vfor(i=n-1;i>0;i--)
{c[i]=c[i] * c[i+1];
}REKURSION! ci+1 ist beim Zugriff noch in der Pipeline ⇒ keineVektorisierung!
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 25 of 79
PraktikumWissenschaftliches Rechnen
• Schleife VIfor(i=L;i<n;i++)
{c[i]=c[i] * c[i-L];
}Vektorisierbar, wenn L ≥ vrl oder „sichere Vektorregisterlän-ge“ mit Compilerdirektive angeben.
• Berechnet der folgende Code den Mittelwert zweier benachbar-ter Elemente?for(i=1;i<n;i++)
{b[i]=(b[i]+b[i-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 26 of 79
PraktikumWissenschaftliches Rechnen
• Summations=a[0];for(i=1;i<n;i++)
{s=s+a[i];
}Umsetzung zu Vektorcode:b[0]=a[0];for(i=1;i<n;i++)
{b[i]=b[i-1]+a[i];
}s=b[n-1];Rekursion! Lösung:„Wheel Method“
21x , x , x , x3 4
a ,a ,... an21
Wheel-Method: Vektorisierung der Summation
www http://docs.cray.comSuche nach „S-2312-36“.
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 27 of 79
PraktikumWissenschaftliches Rechnen
8.3. Vektorisierung rekursiver Probleme
• Summation ohne Hardwareunterstützung
����
����
����
Cascade-Method: Vektorisie-rung der Summation
– „divide and conquer“ Stra-tegie: Addiere die zweiteHälfte des Vektors zur Ers-ten.
– Setze dieses Prinzip jeweilsmit der ersten Hälfte fort,
– bis das erste Element dieSumme enthält.
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 28 of 79
PraktikumWissenschaftliches Rechnen
• Lineare Rekursion erster Ordnung
x1 = a1; xi = ai + bi · xi−1 , i = 2 . . . n (17)
– „recursive doubling“ (vorgestellt von H.S. Stone 1975) z. B.beschrieben in [1]⇒ Nicht effizient!
– „cyclic reduction“ (vorgestellt von R.W. Hockney) und z. B.in [2] beschrieben
xi = ai + bi · xi−1 ; xi−1 = ai−1 + bi−1 · xi−2
xi = ai + bi · (ai−1 + bi−1 · xi−2)
xi = (ai + bi · ai−1) + (bi · bi−1) · xi−2
xi = (a(1)i ) + (b
(1)i ) · xi−2
◦ Idee: Bilde Paare und setze die erste Gleichung in dieZweite ein und berechne die Koeffizienten.
◦ Dies ergibt n/2 neuen Gleichung. Bilde wieder Paareund verfahre wie im ersten Schritt.
◦ Dies ergibt n/4 neuen Gleichung, bilde wieder Paare . . .◦ Nachteile: 1) ≈ 2.5-facher Aufwand; 2) Speicherzugriff
mit Stride 2,4,8
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 29 of 79
PraktikumWissenschaftliches Rechnen
x1 = a1
x2 = a2 + b2 · x1
x3 = a3 + b3 · (a2 + b2 · x1)
x4 = a4 + b4 · x3
x3 = a3 + b3 · (a4 + b4 · x3)
· · ·
...
Schema der „cyclic reduction“ (Reduktion und Rücksubstitution)
– „partition method“ vorgestellt in [3] z. B. in [4] beschrieben⇒ Meist effizienteste Methode!
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 30 of 79
PraktikumWissenschaftliches Rechnen
8.4. Vektorisierung über die Zahl der Probleme
• Problemstellung 1: Algorithmus besitzt Rekursion
• Problemstellung 2: Daten mit kleiner Vektorlänge
• Soll eine große Anzahl dieser Aufgaben bearbeitet werden, sokönnen beide Problemstellungen durch umsortieren der Datengelöst werden.
54
32
12
34
n
5
98741 2 3
65
98741 2 3
65
98741 2 3
65
98741 2 3
65
98741 2 3
65
12
34
n
5
n+11 2n+1
Vektorisierung über die Zahl der Probleme
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 31 of 79
PraktikumWissenschaftliches Rechnen
Beispiel: Matrix-Matrix-Multiplikation
for(l=0;l<n;l++){for(i=0;i<m;i++){for(j=0;j<m;j++){s=0.0;for(k=0;k<m;k++){s+=a[l,i,k] * b[l,k,j];
}c[l,i,j]=s;
}}
}
for(i=0;i<m;i++){for(j=0;j<m;j++){for(l=0;l<n;l++){s[l]=0.0;
}for(k=0;k<m;k++){for(l=0;l<n;l++){s[l]+=a[i,k,l] * b[k,j,l];
}}
for(l=0;l<n;l++){c[i,j,l] = s[l];
}}
}
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 32 of 79
PraktikumWissenschaftliches Rechnen
8.5. Schleifen Optimierung
• „loop splitting“for(i=0;i<n;i++)
{d[i]=d[i-1] * e[i];f[i]=f[i]+c[i-1];
}
for(i=0;i<n;i++){
d[i]=d[i-1] * e[i];}
for(i=0;i<n;i++){
f[i]=f[i]+c[i-1];}
• „loop interchange“for(k=0;k<m;k++)
{for(i=0;i<n;i++)
{c[i,k]=a[i,k] * b[i,k];
}}
for(i=0;i<n;i++){
for(k=0;k<m;k++){
c[i,k]=a[i,k] * b[i,k];}
}
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 33 of 79
PraktikumWissenschaftliches Rechnen
• „loop collapsing“for(i=0;i<n;i++)
{for(k=0;k<m;k++)
{c[i,k]=a[i,k] * b[i,k];
}}
for(k=0;k<n * m;k++){
c[1,k]=a[1,k] * b[1,k];}
• „loop unrolling“for(i=0;i<3;i++)
{for(k=0;k<m;k++)
{c[i,k]=a[i,k] * b[i,k];
}}
for(k=0;k<m;k++){
c[0,k]=a[0,k] * b[0,k];c[1,k]=a[1,k] * b[1,k];c[2,k]=a[2,k] * b[2,k];
}
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 34 of 79
PraktikumWissenschaftliches Rechnen
• „inlining“float celsius(float fahr)
{return ((fahr -32.) * 5./9.);
}float orginal(int n)
{...
for(i=0;i<n;i++){
a[i]=celsius(b[i]);}
}
• „intrinsic funktion“for(i=1;i<n;i++)
{a[i]=sin(b[i])+c[i];
}
Ein ausführliches Kapitel über Schleifen-Optimierung findet sich z.B.in [5].
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 35 of 79
PraktikumWissenschaftliches Rechnen
8.6. Vektorbefehle mit Fortran90 und Octave
Die Programmiersprache Fortran90 und die vektoroptimierte Skript-sprache Oktave enthalten Befehle zum erstellen von vektorisiertenProgrammen.
• Allgemein: Vektor Notation
Fortran90: a[start:stop:inkr] = ...
Octave: a[start:inkr:stop] = ...
• Problem: Bedingung in einer Schleifefor(i=1;i<n;i++)
{a[i] = sqrt(b[i]) * c[i];if (a[i] > alpha)
{x[i] = a[i]+1.;
}else
{x[i] = 0.;
}}
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 36 of 79
PraktikumWissenschaftliches Rechnen
• Lösung 1: Maskierte Operationen
Fortran90:m = a .gt. alphaap = pack (a,mask=m)a = unpack (ap,mask=m,field=b)
Octave: Kein Befehl um Masken zu erzeugen!
Fortran90-Befehl: PACK
Fortran90-Befehl: UNPACK
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 37 of 79
PraktikumWissenschaftliches Rechnen
• Lösung 2: gather/scatter
gather: b = a[Index]
scatter: a[index] = b
Fortran90: Kein Befehl um einen Indexvektor zu erzeugen!
Octave: Index= find (Bedingung)
Indirekte Adressierung: GATHER
Indirekte Adressierung: SCATTER
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 38 of 79
PraktikumWissenschaftliches Rechnen
9. C99 Standard
• restrict Qualifier ⇒ nur über den entsprechend qualifiziertenPointer kann auf ein Objekt zugegriffen werden.
• Variable-length Arrays
• inline Keyword
• _Complex und _Boolean Datentyp
• Macros mit variabler Zahl an Parametern
• . . .
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 39 of 79
PraktikumWissenschaftliches Rechnen
10. Top500 Liste
www http://www.top500.org
Rang Maschine Anz.Konten
R∞/GFLOPS
Rmax/GFLOPS
1 IBM Blue Gene (DOE) 131072 367000 280600
2 IBM Blue Gene (IBM) 40960 114688 91290
3 IBM ASC Purple(DOE) 12208 92781 75760
4 SGI Altix (NASA) 10160 60960 51870
5 Itanium2 Cluster (CEA) 8704 55705 42900
8 IBM Blue Gene (FZJ) 16348 45875 37330
10 Earth-Simulator NEC 5120 40960 35860
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 40 of 79
PraktikumWissenschaftliches Rechnen
11. Beispiele Vektorrechner
11.1. Beispiel für einen Vektorrechner NEC-SX
• 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
RV triad = 4000 MFLOPS2
5= 1600 MFLOPS .
Für die Addition ergibt sich
Radd = 2000 MFLOPS1
2= 1000 MFLOPS
Warum?
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 42 of 79
PraktikumWissenschaftliches Rechnen
Aufbau der NEC-Vektorrechner
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 43 of 79
PraktikumWissenschaftliches Rechnen
• Earth Simulator
Größe Wert BemerkungR∞ 40.96 TFLOPS 1 GFLOPS · 8 tracks · 8
procs. · 640 nodes
Frequenz 500MHz τ = 2nsec
Anz. Prozesso-ren
5120 640 8P.-Knoten
Netzwerk Crossbar640x640
Leistungsbedarf 1.2 MW = 640 ·20 kW
Uni Stuttgart: 18 MW 1
1http://www.uni-stuttgart.de/hkw/standort/tecdat.html
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 44 of 79
PraktikumWissenschaftliches Rechnen
Aufbau des Earth Simulator
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 45 of 79
PraktikumWissenschaftliches Rechnen
12. SGI Altix (LRZ)
Größe Wert BemerkungR∞ 26.2 TFLOPS 3.2 GFLOPS · 2 pipes · 256
procs. · 16 nodes
Frequenz 1.6GHz
Anz. Prozesso-ren
4096
Netzwerk NUMAlink
2D-Torus (16 no-des)
node intern: (thin out) fattree
Leistungsbedarf 1.0 MW
www http://www.lrz-muenchen.de/services/compute/hlrb/hardware/hardware.html
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 46 of 79
PraktikumWissenschaftliches Rechnen
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 47 of 79
PraktikumWissenschaftliches Rechnen
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 48 of 79
PraktikumWissenschaftliches Rechnen
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 49 of 79
PraktikumWissenschaftliches Rechnen
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 50 of 79
PraktikumWissenschaftliches Rechnen
13. Informationen aktuellen Prozessoren
13.1. Intel Pentium 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 51 of 79
PraktikumWissenschaftliches Rechnen
• MullAdd = 2 FPInst/Zyklus
• L1: 1 load & 1 store
Dokumentation:
www http://www3.intel.com/cd/ids/developer/asmo-na/eng/dc/pentium4/index.htm
www http://www.intel.com/design/archives/processors/
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 52 of 79
PraktikumWissenschaftliches Rechnen
Informationen zu SSE2, Vektorisierung„google“ nach:
• IA-32 Intel Architecture Optimization
• Intel C++ Compiler User’s Guide
Streaming SIMD Extensions data types
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 53 of 79
PraktikumWissenschaftliches Rechnen
Intel Compiler Pragmas für IA-32 Vektorisierung:
• #pragma vector always ⇒ Vektorisierung unabhängig von derEffizienzeinschätzung des Compilers.
• #pragma ivdep ⇒ Vektorisierung unabhängig von der Abhän-gigkeitsanalyse den Compilers#pragma vector always#pragma ivdepfor(i=1;i<n;i++)
{c[i]=s * c[i+k];
}
• . . .
SSE Intrinsic Functions:„google“ nach:
• Intel „How to Use Intrinsics“
• „Introduction to SSE Programming“
• „SSE2 Optimization“
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 54 of 79
PraktikumWissenschaftliches Rechnen
Format der SSE2 Intrinsic Functions:
• __m128i; __m128d; //16-byte-aligned
• __m128d _mm_instr _pd(__m128d a, __m128d b)
• suffixes:
– ps,pd → packed single- und double-precision floating pointFunktionen
– ss,sd → scalar single- und double-precision floating pointFunktionen
– pi,pu, si,su, epi,epu→ entsprechende signed und unsigned(extended precision) integer Funktionen
• alle Funktionen findet man in der „Intel C++ Intrinsics Refe-rence“ im „Intel C++ Compiler User’s Guide“
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 55 of 79
PraktikumWissenschaftliches Rechnen
Beispiel Code mit SSE2 Intrinsic Functions:
#define AllignData(data) (void ∗)(((int)data + 15)&∼ 0x0F)
int main() {int dim = 2;double ∗ a, ∗ b, ∗ c, ∗ tptr;
tptr = (double ∗) malloc((dim+2) ∗sizeof(double));a = AllignData(tptr);...sse_add(a,b,c);
return(0);}
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 56 of 79
PraktikumWissenschaftliches Rechnen
#include <emmintrin.h>
int sse_add(double ∗ a, double ∗ b, double ∗ c) {__m128d t0,t1;
t0 = _mm_load_pd(a);t1 = _mm_load_pd(b);t0 = _mm_add_pd(t0,t1);_mm_store_pd(c,t0);
return(0);}
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 57 of 79
PraktikumWissenschaftliches Rechnen
13.2. AMD Opteron
• 1 Mull-FPInst/Zyklus; 1 Add-FPInst/Zyklus (SSEemuliert)
• L1: 2 load oder 2 store pro Zyklus
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 58 of 79
PraktikumWissenschaftliches Rechnen
Memory Controller in der Northbridge z.B. Intel P4 und I2
Memory Controller in der CPU integriert → AMD K8
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 59 of 79
PraktikumWissenschaftliches Rechnen
Intel P4 Dual-Processor-Board
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 60 of 79
PraktikumWissenschaftliches Rechnen
AMD K8Dual-Processor-Board
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 61 of 79
PraktikumWissenschaftliches Rechnen
AMD K8Dual-core Opteron
• Compiler: PGI, GCC-4
www AMD Core Math Library (ACML)
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 62 of 79
PraktikumWissenschaftliches Rechnen
13.3. Intel Itamium2
Dokumentation:
www http://www.intel.com/design/archives/processors/itanium/index.htm
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 63 of 79
PraktikumWissenschaftliches Rechnen
Instruction Bundle:
• Bundles: eine Gruppe von Befehlen bildet das Befehlswort (VLIW)
• drei Befehle und das Template bilden ein 128-bit Bundle
• Das Template gibt den Typ des jeweiligen Befehls an
(M) Memory
(I) Complex Integer
(A) Simple Integer
(F) Floating Point
(B) Branch
– . . .
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 64 of 79
PraktikumWissenschaftliches Rechnen
Cache Hierarchie:
• 2 Bundles pro Takt
• 2 loads und 2 stores pro Takt (load 2 Takte Latenz)
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 65 of 79
PraktikumWissenschaftliches Rechnen
Software Pipelining und Loop Unrolling:
L1:Ld4 r4=[r5],4;; cycle 0 load postinc 4Add r7=r4, r9;; cycle 2St4 [r6]=r7,4 cycle 3 store postinc 4Br.cloop L1;; cylce 3
Zweifaches Loop UnrollingL1:
ld4 r4=[r5],4;; cycle 0ld4 r14=[r5],4;; cycle 1add r7=r4,r9;; cycle 2add r17=r14,r9 cycle 3st4 [r6]=r7,4;; cycle 3st4 [r16]=r17,4 cycle 4br.cloop L1;; cycle 4
Weiter: Zwei loads im ersten Takt ⇒ Takt 1 ist wieder leer ⇒ 4-fachunrollingWas ist das Problem?
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 66 of 79
PraktikumWissenschaftliches Rechnen
Modulo Schedule Loop (Software Pipelining)
Stage A: ld4 r4=[r5],4Stage B: -- //empty stageStage C: add r7=r4,r9Stage D: st4 [r6]=r7,4
Jede Stufe der Pipeline ist II (Initiation Interval) Takte lang.
AA
AA
BB
B
CC
CC
DD
DD
B
II
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 67 of 79
PraktikumWissenschaftliches Rechnen
Rotating Register:V irtualRegister = PhysicalRegister−RegisterRotationBase(RRB)
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
r2r1r0
numberregistervirtual
Anmerkung: Die leere Stufe wurde vernachläßigt.
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 68 of 79
PraktikumWissenschaftliches Rechnen
13.4. IBM Power 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 69 of 79
PraktikumWissenschaftliches Rechnen
• 2× MullAdd = 4 FPInst/Zyklus
• L1: 2 loads & 1 store für 2 Pipelines = 1.5 Zugriffe/Zyklus
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 70 of 79
PraktikumWissenschaftliches Rechnen
13.5. IBM Power 5 und Blue Gene
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 71 of 79
PraktikumWissenschaftliches Rechnen
• PowerPC 440 (700MHz) dual-core
• 2.8GFLOPS × 2× 16× 32× 64 ≈ 183.5TFLOPS
• Warum „nur“ 700MHz CPU?
• Jeder Core verbraucht nur ca. ein Watt. Das spart Strom, Küh-lung und Platz. 64 Racks verbrauchen 1.8 MW.
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 72 of 79
PraktikumWissenschaftliches Rechnen
13.6. Sun Ultra Sparc III
• MullAdd = 2 FPInst/Zyklus
• Speicherzugriffe ??
www HPC-Kursmaterialien / Course Material
Sun Compilerflags:
-xOn, -xarch, -xchip, -cache-xprefetch, -fsimple, -xinline, -xcrossfile, -xipo-xprofile, -xlibmil, -xlibmopt-ftrap, -fns-dalign, -xmemalign, -xsafe=mem-xdepend, -xvector, -fsingle, -xsfpconst, -xbuiltin
compiler option -g
collect -h cycles,0,insts,0 <exe>collect -h cycles,0,ecstall,0 <exe>collect -h ecref,0,ecm <exe>collect -h dcr,0,dcrm,0 <exe>
er_print test.1.er test.2.er ...
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 73 of 79
PraktikumWissenschaftliches Rechnen
# er_print help me(er_print) help
# show list of experiments(er_print) metric_list
# 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)--------------------------+-----------------------------------------------
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 74 of 79
PraktikumWissenschaftliches Rechnen
-o experimentfile + Output file
--------------------------+------------------------------------------------d directory + Output directory--------------------------+------------------------------------------------g experimentgroup + Output file group--------------------------+------------------------------------------------L size + Output file size limit [MB]--------------------------+------------------------------------------------F on | off + Follow descendant processes--------------------------+-----------------------------------------------
HW COUNTERS---------------------------------------------------------------------------h cycles,0,insts,0 + Cycle count, instruction count
+ 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,ecstall,0 + L2 cache stall cycles.--------------------------+-----------------------------------------------
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 75 of 79
PraktikumWissenschaftliches Rechnen
-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
to be continued . . .
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 77 of 79
PraktikumWissenschaftliches Rechnen
Literatur
[1] SCHÖNAUER, W.: Scientific Computing on Vector Computers.Amsterdam : North-Holland, 1987
[2] HOCKNEY, R.W. ; JESSHOPE, C.R.: Parrallel Computers 2. AdamHilger, 1988. – Bem: Ein Klassiker!
[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