94
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 94 Praktikum Wissenschaftliches Rechnen Praktikum Wissenschaftliches Rechnen Performance-optimized Programming Scientific Computing in Computer Science Prof. Dr. H.-J. Bungartz Dipl.-Geophys. Markus Brenk [email protected] Dr. Ralf Mundani [email protected] Dipl.Ing. Ioan Muntean [email protected] 19. November 2007

Praktikum Wissenschaftliches Rechnen · der „Half-performance length“ zusammengefasst. Für die Aus-führungszeit t(n) ergibt sich t(n) = T˝= (k+ (n 1) + s) ˝= (n+ n 1=2)˝

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 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 94

    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]. Ioan [email protected]

    19. November 2007

    mailto:[email protected]:[email protected]:[email protected]

  • 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 94

    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 94

    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; enge

    Vorgaben

    • 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/WS07/

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

  • 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 94

    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 94

    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 94

    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 94

    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 94

    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 94

    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 94

    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 94

    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 94

    PraktikumWissenschaftliches Rechnen

    for(i=0;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 13 of 94

    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 94

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

  • 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 94

    PraktikumWissenschaftliches Rechnen

    – „Repeated Contracting Linked Triad“

    ai = ai{imRegister

    gehalten

    + (s · di↑

    )j , j = 1, 2, . . .

    • 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 94

    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.

  • 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 94

    PraktikumWissenschaftliches Rechnen

    Mit

    Dmax2

    =1

    2 · τ=

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

    (4)

    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)

  • 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 94

    PraktikumWissenschaftliches Rechnen

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

    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)

  • 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 94

    PraktikumWissenschaftliches Rechnen

    • 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/2n

    . (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 20 of 94

    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∞≈ 1Rmax

    (12)

    gegeben. Die Leistung wird normalerweise in FLOPS und dieZykluszeit in nsec angegeben.

    • Amdahl’sches Gesetz für VektorisierungEin 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 LeistungReff (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 21 of 94

    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,scalarReff (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 22 of 94

    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

    http://home.austin.rr.com/mccalpin/papers/bandwidth/bandwidth.htmlhttp://www.netlib.org/benchweb/hpc.htmlhttp://www.scl.ameslab.gov/Publications/Gus/TwelveWays.htmlhttp://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 23 of 94

    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]

  • 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 94

    PraktikumWissenschaftliches Rechnen

    8.2. Abhängigkeitsanalyse und Vektorisierung

    • Schleife Ifor(i=0;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 25 of 94

    PraktikumWissenschaftliches Rechnen

    • Schleife IIIfor(i=1;i1;i--){c[i]=c[i]*c[i-1];

    }Keine Rekursion!

  • 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 94

    PraktikumWissenschaftliches Rechnen

    • 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!

    • Schleife VIfor(i=L;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 27 of 94

    PraktikumWissenschaftliches Rechnen

    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

  • 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 94

    PraktikumWissenschaftliches Rechnen

    • Summations=a[0];for(i=1;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 29 of 94

    PraktikumWissenschaftliches Rechnen

    www http://docs.cray.comSuche nach „S-2312-36“.

    http://docs.cray.com

  • 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 94

    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 31 of 94

    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 Paare

    und verfahre wie im ersten Schritt.◦ Dies ergibt n/4 neuen Gleichung, bilde wieder Paare . . .

  • 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 94

    PraktikumWissenschaftliches Rechnen

    ◦ Nachteile: 1) ≈ 2.5-facher Aufwand; 2) Speicherzugriffmit 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 33 of 94

    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!

  • 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 94

    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 35 of 94

    PraktikumWissenschaftliches Rechnen

    Beispiel: Matrix-Matrix-Multiplikation

    for(l=0;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 36 of 94

    PraktikumWissenschaftliches Rechnen

    8.5. Abhängigkeitsanalyse

    Si: A = C - ASii: A = B + CSiii: B = A + C

    • echet Abhängigkeit (true dependence)

    • Gegenabhängigkeit (anti dependence)

    • Ausgabeabhängigkeit (output dependence)

    Siii bzgl. Sii für A

    Siii bzgl. Sii für B

    Sii bzgl. Si für A

    • S2 zeigt eine true dependence bzgl. S1, S2 δ S2,wenn OUT(S1) ∩ IN(S2) 6= ∅;å S2 benutzt das Ergebniss von S1

    • S2 zeigt eine anti dependence bzgl. S1, S2 δ−1 S2,wenn IN(S1) ∩ OUT(S2) 6= ∅;å werden S2 und S1 vertauscht, so wird S1 fälschlicher Weisedas Ergebniss von S2 benutzen

    • S2 und S1 zeigen eine output dependence, S2 δO S2,wenn OUT(S1) ∩ OUT(S2) 6= ∅;å werden S2 und S1 vertauscht, so enthält die Zuweisungsva-riable bei Wiederverwendung den falschen Wert

  • 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 94

    PraktikumWissenschaftliches Rechnen

    8.6. Abhängigkeiten in Schleifen

    • Man unterscheidet loop-independet dependence und loop-carrieddependence.

    – Ergibt sich eine Abhängigkeit zwischen zwei Anweisungenauserhalb einer Schleife, oder zeigt sich die Abhängigkeitinnerhalb einer Iteration der Schleife, so spricht man voneiner loop-independet dependence.

    – Eine loop-carried dependence ergibt sich aus zwei Anwei-sungen (dabei kann es sich auch um dieselbe Codezeilehandeln), die in unterschiedlichen Iterationen der Schleifeausgeführt werden.

    for(i=0;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 38 of 94

    PraktikumWissenschaftliches Rechnen

    • Distanzvektor und Richtungsvektor

    Die Vektoren i = (i1, . . . , id) und j = (j1, . . . , jd), deren Elemen-te die Werte der Schleifenvariblen eines d-fach geschachteltenSchleifenblocks für zwei unteschiedliche Zustände beinhalten,werden als Iterationsvektoren (iteration vectors) bezeichent.

    Aus der Differenz der Iterationsvektoren ergibt sich der Distanz-vektor ∆k = ik − jk, k = 1, . . . , d.

    Der Richtungsvektor (direction vector) D(i, j) ist ein Vektor mitd Elementen, die die Werte annehmen können.Dabei ergibt sich das Element D(i, j)k zu

    , wenn ∆s > 0 gilt.

  • 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 94

    PraktikumWissenschaftliches Rechnen

    Die Anweisung S2 hat eine loop-carried dependence bzgl. derAnweisung S1 falls:

    1. S1 auf die Speicherstellen M in der Iteration i und S2 diesel-be Spreicherstelle M in der Iteration j, und

    2. D(i, j) zumindest ein Element sich von = unterscheidet,und daraus das erste den Wert < enthält.

    Die Anweisung S2 hat eine loop-independet dependence bzgl.der Anweisung S1 falls:

    1. S1 auf die Speicherstellen M in der Iteration i und S2 diesel-be Spreicherstelle M in der Iteration j, und

    2. alle Einträge in D(i, j) sind identisch mit =, und3. die Auswertung von S2 erfolgt im Programmcode nach S1.

  • 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 94

    PraktikumWissenschaftliches Rechnen

    for I1 := 1 to u1for I2 := 1 to u2...for Id := 1 to ud......A(a0+a1∗I1+· · ·+ad∗Id)...A(b0+b1∗I1+· · ·+bd∗Id)

    endfor...

    endforendfor

    Betrachen wir nun einen Schleifenblock Lmit d geschachtelten Schlei-fen, der die Anweisungen S1(I) . . . SN(I) einhält, wobei I = (I1, . . . , Id)den Indexvektor der verschiedenen Schleifendurchläufe repräsen-tiert. Wir nehmen an, dass jede dieser Anweisungen Sr(I) eine Zu-weisung enthält. Somit bezieht sich die Anweisung Sr(i) auf die An-weisung Sr in der Iteration i = (i1, . . . , id). A ist ein ein-dimensionalesArray.

    Wir benutzen zudem die folgende Notation: Für jede Ganze Zahl qgilt q+ = max(q, 0) q− = max(−q, 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 41 of 94

    PraktikumWissenschaftliches Rechnen

    Theorem 1. Betrachtet werden die Anweisungen Sr und St imSchleifenblock L, dabei sei A(f(I)) eine Variable aus der Anwei-sung Sr und A(g(I)) eine Variable aus St, wobei zumindest auf eineder beiden Variablen schreibend zugegriffen wird.

    f(I) = a0 +d∑

    k=1

    akIk (18)

    g(I) = b0 +d∑

    k=1

    bkIk (19)

    Gilt Sr δ St und geht die Abhängigkeit von A(f(I)) und A(g(I)) aus,so gelten die folgenden zwei Bedingungen:

    Bed. 1. Der größte gemeinsame Teiler ggT (a1, . . . , ad, b1, . . . , bd)ist ein Teiler von b0 − a0; Ist b0 − a0 = 0 so ist diese Bedingungautomatisch erfüllt.

  • 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 94

    PraktikumWissenschaftliches Rechnen

    Bed. 2. Es existiert ein Parameter λ mit 1 ≤ λ ≤ d für r ≥ t und1 ≤ λ ≤ d+ 1 für r < t wobei gilt

    −bλ −λ−1∑k=1

    (ak − bk)−uk − (a−λ + bλ)+(uλ − 1)−

    d∑k=λ+1

    (a−k + b+k )uk

    ≤ b0 − a0 ≤

    −bλ +λ−1∑k=1

    (ak − bk)+uk + (a+λ − bλ)+(uλ − 1) +

    d∑k=λ+1

    (a+k + b−k )uk

    mit ud+1 = ad+1 = bd+1 = 0.

    • Theorem 1. gilt für die echte Abhängigkeit als auch für die Anti-abhängigkeit und die Ausgabeabhängigkeit.

    • Die zwei Bedingungen aus Theorem 1. sind notwendig abernicht hinreichend für Nachweis der Abhängigkeit Sr δ St

  • 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 94

    PraktikumWissenschaftliches Rechnen

    Beispiel: 1

    for(ii=0;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 44 of 94

    PraktikumWissenschaftliches Rechnen

    Theorem 2. Bed. 1. und Bed. 2 aus Theorem 1. sind notwendigund hinreichend, falls für eine positive ganze Zahl q existiert für die

    ak = qαk , bk = qβk mit αk, βk ∈ {−1, 0, 1} für alle k = 1, . . . , d

    gilt.

    Beispiel: 2

    for(i1=0;i1

  • 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 94

    PraktikumWissenschaftliches Rechnen

    for(i1=0;i1

  • 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 94

    PraktikumWissenschaftliches Rechnen

    for(i1=0;i1

  • 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 94

    PraktikumWissenschaftliches Rechnen

    8.7. Schleifen Optimierung

    • „loop splitting“for(i=0;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 48 of 94

    PraktikumWissenschaftliches Rechnen

    • „loop collapsing“for(i=0;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 49 of 94

    PraktikumWissenschaftliches Rechnen

    • „inlining“float celsius(float fahr){return ((fahr -32.)*5./9.);

    }float orginal(int n){

    ...for(i=0;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 50 of 94

    PraktikumWissenschaftliches Rechnen

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

    }}

  • 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 94

    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 52 of 94

    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 53 of 94

    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 54 of 94

    PraktikumWissenschaftliches Rechnen

    10. Top500 Liste

    www http://www.top500.org

    Nicht aktuell!

    Rang Maschine Anz.Konten

    R∞/GFLOPS

    Rmax/GFLOPS

    1 IBM Blue Gene (DOE) 131072 367000 2806002 IBM Blue Gene (IBM) 40960 114688 912903 IBM ASC Purple(DOE) 12208 92781 757604 SGI Altix (NASA) 10160 60960 518705 Itanium2 Cluster (CEA) 8704 55705 429008 IBM Blue Gene (FZJ) 16348 45875 3733010 Earth-Simulator NEC 5120 40960 35860

    http://www.top500.org

  • 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 94

    PraktikumWissenschaftliches Rechnen

    11. Beispiele Vektorrechner

    11.1. Beispiel für einen Vektorrechner NEC-SX

    • Die Supercomputer von NEC sind 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)τ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 56 of 94

    PraktikumWissenschaftliches Rechnen

    • NEC ist 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 = 4000MFLOPS2

    5= 1600MFLOPS .

    Für die Addition ergibt sich

    Radd = 2000MFLOPS1

    2= 1000MFLOPS

    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 57 of 94

    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 58 of 94

    PraktikumWissenschaftliches Rechnen

    • Earth Simulator

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

    procs. · 640 nodesFrequenz 500MHz τ = 2nsecAnz. 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

  • 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 94

    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 60 of 94

    PraktikumWissenschaftliches Rechnen

    12. SGI Altix (LRZ)

    Größe Wert BemerkungR∞ 26.2 TFLOPS 3.2 GFLOPS · 2 pipes · 256

    procs. · 16 nodesFrequenz 1.6GHzAnz. Prozesso-ren

    4096

    Netzwerk NUMAlink2D-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

    http://www.lrz-muenchen.de/services/compute/hlrb/hardware/hardware.htmlhttp://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 61 of 94

    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 62 of 94

    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 63 of 94

    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 64 of 94

    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 65 of 94

    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 66 of 94

    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/

    http://www3.intel.com/cd/ids/developer/asmo-na/eng/dc/pentium4/index.htmhttp://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 67 of 94

    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 68 of 94

    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

  • 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 94

    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 70 of 94

    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 71 of 94

    PraktikumWissenschaftliches Rechnen

    #include

    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 72 of 94

    PraktikumWissenschaftliches Rechnen

    13.2. AMD Opteron

    • 1 Mull-FPInst/Zyklus; 1 Add-FPInst/Zyklus (SSE emuliert)

    • 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 73 of 94

    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 74 of 94

    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 75 of 94

    PraktikumWissenschaftliches Rechnen

    AMD K8 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 76 of 94

    PraktikumWissenschaftliches Rechnen

    AMD K8 Dual-core Opteron

    • Compiler: PGI, GCC-4

    www AMD Core Math Library (ACML)

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

  • 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 94

    PraktikumWissenschaftliches Rechnen

    13.3. Intel Itamium2

    Dokumentation:

    www http://www.intel.com/design/archives/processors/itanium/index.htm

    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 78 of 94

    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 79 of 94

    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 80 of 94

    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 81 of 94

    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 82 of 94

    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 83 of 94

    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 84 of 94

    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 85 of 94

    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 86 of 94

    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 87 of 94

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

  • 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 88 of 94

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

  • 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 89 of 94

    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 90 of 94

    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 91 of 94

    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 92 of 94

    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 93 of 94

    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 94 of 94

    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

    Ziel des PraktikumsKonzept 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 ProblemeAbhängigkeitsanalyseAbhängigkeiten in SchleifenSchleifen OptimierungVektorbefehle mit Fortran90 und Octave

    C99 StandardTop500 ListeVektorrechnerVektorrechner - NEC-SX

    SGI Altix (LRZ)Aktuelle ProzessorenIntel Pentium 4AMD OpteronIntel Itamium2IBM Power 4IBM Power 5 und Blue GeneSun Ultra Sparc III

    Mehr LeistungLiteratur