praktikum wissenschaftliches rechnen · konzept des praktikums parallelität - ebenen...

75
Konzept des Praktikums Parallelität - Ebenen Klassifikation nach Flynn Vektorrechner - Aufbau Arithm. Operationen Leistungsanalyse Vektorisierte Programme C99 Standard Top500 Liste Vektorrechner Aktuelle Prozessoren Mehr Leistung Literatur Page 1 of 75 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] Dipl.-Inf. Ralf Mundani [email protected] 2. November 2005

Upload: others

Post on 23-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 1 of 75

    PraktikumWissenschaftliches Rechnen

    Praktikum Wissenschaftliches Rechnen

    Performance-optimized Programming

    Scientific Computing in Computer ScienceProf. Dr. H.-J. Bungartz

    Dipl.-Geophys. Markus Brenk,[email protected]. Ralf [email protected]

    2. November 2005

    mailto:[email protected]:[email protected]

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 2 of 75

    PraktikumWissenschaftliches Rechnen

    1. Konzept des Praktikums

    • Einführung und grundlegende Fertigkeiten

    – Laufzeitoptimierung (Pipeline, Cache)

    – Programmieren auf Shared-Memory Rechnern (OpenMP)

    – Programmieren auf Distributed-Memory Rechnern (MPI)

    – vier Ü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/WS05/

    http://www5.in.tum.de/lehre/praktika/wissprak/WS05/

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 3 of 75

    PraktikumWissenschaftliches Rechnen

    2. 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)

    – SSE[1− 3]– . . .

    • Anweisungsebene

    – Superskalarrechner (z. B. Workstation)

    – VLIW-Rechner (very long instruktion word) (z. B. Hitachi-SR)

    – . . .

    ILP – Instruction Level Parallelism

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 4 of 75

    PraktikumWissenschaftliches Rechnen

    • Blockebene (Threads)

    – Shared-Memory-Rechner (z. B. SUN-UltraSparc, SGI-Origin)

    – . . .

    • Prozessebene

    – Distributed-Memory-Rechner (Cray-T3E, IBM-SP)

    – . . .

    • Programmebene

    – Workstation-Cluster

    – Grid-Computer

    – . . .

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 5 of 75

    PraktikumWissenschaftliches Rechnen

    3. 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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 6 of 75

    PraktikumWissenschaftliches Rechnen

    4. Aufbau eines Vektorrechner

    4.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)

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 7 of 75

    PraktikumWissenschaftliches Rechnen

    4.2. Prinzipskizze eines Vektorprozessors

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 8 of 75

    PraktikumWissenschaftliches Rechnen

    4.3. Pipelining

    • Instruktion Pipelining

    Befehlsausführung ohne und mit Pipelining

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 9 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 10 of 75

    PraktikumWissenschaftliches Rechnen

    • Software Pipelining

    Die einzelnen Schleifeniterationen werden überlappt ausgeführt.Jede Zeile entspricht einem VLIW.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 11 of 75

    PraktikumWissenschaftliches Rechnen

    for(i=0;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 12 of 75

    PraktikumWissenschaftliches Rechnen

    5. Arithm. Operationen und Speicherzugriffe

    Bei einem Vektorrechner können nicht nur die arithmetischen Pi-pelines verkettet werden, sondern diese können wiederum mit denLoad- bzw. Store-Pipelines verkettet werden. Somit ist ein kontinu-ierlicher Datenstrom vom Speicher zum Prozessor und zurück reali-sierbar.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↑

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 13 of 75

    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, . . .

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 14 of 75

    PraktikumWissenschaftliches Rechnen

    • Skalarprodukt

    s = s + ai↑· bi↑

    • „Polyadische“ Operationen

    ai = bi + ci · di + ei · fi + gi · hi

    Diese Betrachtung gilt analog für Workstations. Auch hier ist dieSpeicherbandbreite der entscheidende „Bottleneck“ für rechenin-tensive Anwendungen.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 15 of 75

    PraktikumWissenschaftliches Rechnen

    6. 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

    Dmax2

    =1

    2 · τ=

    n1/2(k + (n1/2 − 1)) · τ

    (4)

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 16 of 75

    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 5 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.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 17 of 75

    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· 11 +

    n1/2n

    . (10)

    Im Grenzwert n →∞ gilt

    R∞ =1

    τeff. (11)

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 18 of 75

    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.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 19 of 75

    PraktikumWissenschaftliches Rechnen

    Der maximal erreichbare Speedup für ein vollständig vektori-siertes Programm ist damit

    spmax(n̄) =tscalart(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) =tscalart(n̄)

    =1

    vReff,scalar

    Reff (n̄)+ (1− v)

    −−−−−−−→Reff (n̄)→∞

    1

    1− v. (16)

    Welche Aussage steckt hinter diesem Grenzwert?

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 20 of 75

    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://www.nersc.gov/∼dhb/dhbpapers/twelve-ways.txt

    http://home.austin.rr.com/mccalpin/papers/bandwidth/bandwidth.htmlhttp://www.netlib.org/benchweb/hpc.htmlhttp://www.scl.ameslab.gov/Publications/Gus/TwelveWays.htmlhttp://www.nersc.gov/~dhb/dhbpapers/twelve-ways.txt

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 21 of 75

    PraktikumWissenschaftliches Rechnen

    7. Erstellen vektorisierter Programme

    7.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]

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 22 of 75

    PraktikumWissenschaftliches Rechnen

    7.2. Abhängigkeitsanalyse und Vektorisierung

    • Schleife Ifor(i=0;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 23 of 75

    PraktikumWissenschaftliches Rechnen

    • Schleife IIIfor(i=1;i1;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!

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 24 of 75

    PraktikumWissenschaftliches Rechnen

    • Schleife VIfor(i=L;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 25 of 75

    PraktikumWissenschaftliches Rechnen

    • Summations=a[0];for(i=1;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 26 of 75

    PraktikumWissenschaftliches Rechnen

    7.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.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 27 of 75

    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−2xi = ai + bi · (ai−1 + bi−1 · xi−2)xi = (ai + bi · ai−1) + (bi · bi−1) · xi−2xi = (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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 28 of 75

    PraktikumWissenschaftliches Rechnen

    x1 = a1

    x2 = a2 + b2 · x1x3 = a3 + b3 · (a2 + b2 · x1)x4 = a4 + b4 · x3x3 = 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!

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 29 of 75

    PraktikumWissenschaftliches Rechnen

    7.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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 30 of 75

    PraktikumWissenschaftliches Rechnen

    Beispiel: Matrix-Matrix-Multiplikation

    for(l=0;l

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 31 of 75

    PraktikumWissenschaftliches Rechnen

    7.5. Schleifen Optimierung

    • „loop splitting“for(i=0;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 32 of 75

    PraktikumWissenschaftliches Rechnen

    • „loop collapsing“for(i=0;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 33 of 75

    PraktikumWissenschaftliches Rechnen

    • „inlining“float celsius(float fahr)

    {return ((fahr -32.) * 5./9.);

    }float orginal(int n)

    {...

    for(i=0;i

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 34 of 75

    PraktikumWissenschaftliches Rechnen

    7.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 alpha)

    {x[i] = a[i]+1.;

    }else

    {x[i] = 0.;

    }}

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 35 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 36 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 37 of 75

    PraktikumWissenschaftliches Rechnen

    8. 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

    • . . .

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 38 of 75

    PraktikumWissenschaftliches Rechnen

    9. Top500 Liste

    www http://www.top500.org

    Rang Maschine Anz.Konten

    R∞/GFLOPS

    Rmax/GFLOPS

    1 IBM Blue Gene (DOE) 65536 183500 136800

    2 IBM Blue Gene (IBM) 40960 114688 91290

    3 SGI Altix (NASA) 10160 60960 51870

    4 Earth-Simulator NEC 5120 40960 35860

    5 JS20 Cluster (Barcelo-na SC)

    4800 34406 27450

    6 IBM Blue Gene (Uni.Groningen)

    12288 22938 19940

    http://www.top500.org

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 39 of 75

    PraktikumWissenschaftliches Rechnen

    10. Beispiele Vektorrechner

    10.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 τeffund 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)τeff2

    .n

    1/2

    1/2n°2

    τeff

    n

    2 pipes

    1 pipet(n)

    1/2n°

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 40 of 75

    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?

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 41 of 75

    PraktikumWissenschaftliches Rechnen

    Aufbau der NEC-Vektorrechner

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 42 of 75

    PraktikumWissenschaftliches Rechnen

    • Earth Simulator

    Größe Wert BemerkungR∞ 40.96 TFLOPS 1 GFLOPS · 8 tracks · 8

    procs. · 640 nodesFrequenz 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

    http://www.uni-stuttgart.de/hkw/standort/tecdat.html

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 43 of 75

    PraktikumWissenschaftliches Rechnen

    Aufbau des Earth Simulator

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 44 of 75

    PraktikumWissenschaftliches Rechnen

    10.2. Hitachi SR8000

    • Die Supercomputer von HITACI sind aus RISC2 Prozessorenaufgebaut. Ihr Befehlssatz entspricht dem der IBM PowerPCProzessoren.

    • Es handelt ich um eine doppelt ausgelegte 64-Bit Superskala-rarchitektur.

    • Die Speicherbandbreite beträgt zwei Worte pro Zyklus und Arith-metik-Einheit.

    • Um die Prozessoren effizient zu nutzen, hat HITACI das sogenannte „Pseudo Vektor Processing“ (PVP) entwickelt.

    • PVP ist eine Kombination aus effizientem Datenzugriff (Pre-fetch, Preload) einerseits und effizienter Befehlsbearbeitung(VLIW, Softwarepipelining, „slide registers“ ) andererseits.

    • IA-64 -Architektur von Intel : Explicit Parallel Instruction Com-puting (EPIC) mit Modulo-Scheduled Loop Support

    • Markteinführung: 1998

    2Reduced Instruction Set Computing (im Gegensatz zu CISC ComplexInstruction Set Computing)

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 45 of 75

    PraktikumWissenschaftliches Rechnen

    • Preload

    Direktes Laden aus dem Speicher mit Preloading

    Übersicht Prefetch und Preload

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 46 of 75

    PraktikumWissenschaftliches Rechnen

    11. Informationen aktuellen Prozessoren

    11.1. Intel Pentium 4

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 47 of 75

    PraktikumWissenschaftliches Rechnen

    • MullAdd = 2 FPInst/Zyklus

    • L1: 1 load & 1 store

    Dokumentation:

    www http://www.intel.com/design/Pentium4/documentation.htm

    http://www.intel.com/design/Pentium4/documentation.htm

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 48 of 75

    PraktikumWissenschaftliches Rechnen

    Informationen zu SSE2, Vektorisierung„google“ nach:

    • IA-32 Intel Architecture Optimization

    • Intel C++ Compiler User’s Guide

    Streaming SIMD Extensions data types

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 49 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 50 of 75

    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“

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 51 of 75

    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);}

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 52 of 75

    PraktikumWissenschaftliches Rechnen

    #include

    int sse_add(double ∗ a, double ∗ b, double ∗ c) {__m128d t0,t1;

    t0 = _mm_load_pd(a);t1 = _mm_load_pd(a);t0 = _mm_add_pd(t0,t1);_mm_store_pd(c,t0);

    return(0);}

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 53 of 75

    PraktikumWissenschaftliches Rechnen

    11.2. AMD Opteron

    • 1 Mull-FPInst/Zyklus; 1 Add-FPInst/Zyklus (SSEemuliert)

    • L1: 2 load oder 2 store pro Zyklus

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 54 of 75

    PraktikumWissenschaftliches Rechnen

    Memory Controller in der Northbridge z.B. Intel P4 und I2

    Memory Controller in der CPU integriert → AMD K8

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 55 of 75

    PraktikumWissenschaftliches Rechnen

    Intel P4 Dual-Processor-Board

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 56 of 75

    PraktikumWissenschaftliches Rechnen

    AMD K8Dual-Processor-Board

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 57 of 75

    PraktikumWissenschaftliches Rechnen

    AMD K8Dual-core Opteron

    • Compiler: PGI, GCC-4

    www AMD Core Math Library (ACML)

    http://developer.amd.com/acml.aspx

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 58 of 75

    PraktikumWissenschaftliches Rechnen

    11.3. Intel Itamium2

    Dokumentation:

    www http://www.intel.com/design/itanium/documentation.htm

    http://www.intel.com/design/itanium/documentation.htm

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 59 of 75

    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

    – . . .

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 60 of 75

    PraktikumWissenschaftliches Rechnen

    Cache Hierarchie:

    • 2 Bundles pro Takt

    • 2 loads und 2 stores pro Takt (load 2 Takte Latenz)

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 61 of 75

    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?

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 62 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 63 of 75

    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.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 64 of 75

    PraktikumWissenschaftliches Rechnen

    11.4. IBM Power 4

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 65 of 75

    PraktikumWissenschaftliches Rechnen

    • 2× MullAdd = 4 FPInst/Zyklus

    • L1: 2 loads & 1 store für 2 Pipelines = 1.5 Zugriffe/Zyklus

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 66 of 75

    PraktikumWissenschaftliches Rechnen

    11.5. IBM Power 5 und Blue Gene

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 67 of 75

    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.

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 68 of 75

    PraktikumWissenschaftliches Rechnen

    11.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 collect -h cycles,0,ecstall,0 collect -h ecref,0,ecm collect -h dcr,0,dcrm,0

    er_print test.1.er test.2.er ...

    http://www.rz.rwth-aachen.de/computing/events/material.php

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 69 of 75

    PraktikumWissenschaftliches Rechnen

    # er_print help me(er_print) help

    # show list of experiments(er_print) metric_list

    # show results of experiments(er_print) fsingle

    # write source and compiler infos to file(er_print) scc [[all][pi][...]](er_print) outfile (er_print) source

    --------------------------------------------------------------------------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)--------------------------+-----------------------------------------------

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 70 of 75

    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.--------------------------+-----------------------------------------------

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 71 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 72 of 75

    PraktikumWissenschaftliches Rechnen

    12. 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 . . .

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 73 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 74 of 75

    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

  • Konzept des Praktikums

    Parallelität - Ebenen

    Klassifikation nach Flynn

    Vektorrechner - Aufbau

    Arithm. Operationen

    Leistungsanalyse

    Vektorisierte Programme

    C99 Standard

    Top500 Liste

    Vektorrechner

    Aktuelle Prozessoren

    Mehr Leistung

    Literatur

    Page 75 of 75

    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

    Konzept des PraktikumsParallelität - EbenenKlassifikation nach FlynnVektorrechner - AufbauWas ist ein Vektorrechner?Prinzipskizze eines VektorprozessorsPipelining

    Arithm. OperationenLeistungsanalyseVektorisierte ProgrammeDaumenregeln für VektorisierungAbhängigkeitsanalyse und VektorisierungVektorisierung rekursiver ProblemeVektorisierung über die Zahl der ProblemeSchleifen OptimierungVektorbefehle mit Fortran90 und Octave

    C99 StandardTop500 ListeVektorrechnerVektorrechner - NEC-SXHitachi SR8000

    Aktuelle ProzessorenIntel Pentium 4AMD OpteronIntel Itamium2IBM Power 4IBM Power 5 und Blue GeneSun Ultra Sparc III

    Mehr LeistungLiteratur