TechTalk VampirTrace und Vampir Hans-Peter Kersken, DLR-SC Köln, 19.05.2009
Übersicht HPC Warum Performance-Analyse? Parallele Programiermodelle VampirTrace  Vampir Beispiele
H igh  P erformance  C omputing Anwendung Numerische Simulation Physik Chemie Ingenieurwissenschaften Wirtschaft Animationsfilme Nutzung großer Mengen an Ressourcen Prozessoren (Knoten, Cores) 10 2 -10 5 Hauptspeicher  2-8GB pro Prozess Platteplatz  1PByte Hohe Kosten
Warum Performance-Analyse? Amdahls Gesetzt Skalierbarkeit begrenzt durch sequentiellen Anteil Sequentielle Anteile Globale Operationen Sequentielle Algorithmen Wartezeiten durch ungleiche Lastverteilung Speedup
Parallele Programmiermodelle MPI Unabhängige Prozesse Kein globales Speichermodell Kommunikation-Bibliothek Kommunikation und Lastverteilung muss explizit programmiert werden API MPI_Send(buff, cnt, type, dest, tag, comm) MPI_Recv(buff, cnt, type, src, tag, status) MPI_Reduce(send_buf, recv_buf, cnt, type, MPI_SUM, 0, comm) MPI_Barrier(comm) OpenMP Parallelität durch Threads Global-addressierbarer Speicher Automatische Lastverteilung API #pragma omp for private i for (i=0; i <n; i++){   a[i] += b[i] * c[i]; }
VampirTrace Bibliothek zum Event-Logging (Tracing) BSD-Lizenz Integriert in Open MPI Tools Vampir Scalasca TAU Open SpeedShop Microsoft Windows Compute Cluster Environment Entwickler TU Dresden FZ Jülich University of Oregon Lawrence Livermore National Lab  Automatisches Tracing von Ein- und Austritt in Funktionen MPI-Kommunikation OpenMPI-Events Pthread Funktionen Tracing von Benutzer-Definierten Events #include &quot;vt_user.h&quot; VT_USER_START(&quot;name&quot;); ... VT_USER_END(&quot;name&quot;); Tracing -Output im OpenTraceFormat Trace-File Format API
VampirTrace - Logging-Output Betreten/Verlassen einer Funktion Zeitstempel Prozess-Id Funktions-Id Senden/Empfangen von  P2P Nachrichten (MPI) Zeitstempel  Sender Empfänger Länge Tag  Communicator Kollektive Kommunikation (MPI Zeitstempel  Root-Knoten Länge Communicator Hardware-Performance-Counter Zeitstempel Prozess-ID Zähler-ID Wert
Vampir Tool zur graphische Darstellung der VampirTrace-Daten 1995: Vampir, Research Center Jülich 1996: Kommerzieller Vertrieb durch Pallas/Intel (bis2005) 1997: Vampir, TU Dresden 2005: GWT-TUD GmbH 2006:  VampirServer (Vampir NG)  Master/Slave-Architektur Darstellung von Laufzeitverhalten (Time-Line) MPI-Kommunikation Berechnungen Speicherzugriffe Cache-Misses Floating-Point-Performance Statistik MPI-Nachrichten Performance-Counter Profiling
Vampir-Time-Line-Diagramm
Vampir - Grobes Profil
Vampir – Profiling-Tortendiagramm
Vampir – Prozess-Time-Line
Vampir – Nachrichten-Statistik
Vampir  – Debugging
Vampir -- Overhead
Zusammenfassung Performance Analysis unverzichtbar für  HPC-Anwendungen Performance-Analysis-Tools für Profiling und Tracing Nachteile Laufzeit-Overhead Datenvolumen Vermeide printf-Tracing/Timing Fehleranfällig und zeitaufwändig zu implementieren
Quellen und Links VampirTrace & Vampir, 3rd VI-HPS Tuning Workshop, Februrary 2009, Andreas Knüpfer, Jens Doleschal http://www.vampir.eu http://www.tu-dresden.de/zih/vampirtrace

VampirTrace und Vampir

  • 1.
    TechTalk VampirTrace undVampir Hans-Peter Kersken, DLR-SC Köln, 19.05.2009
  • 2.
    Übersicht HPC WarumPerformance-Analyse? Parallele Programiermodelle VampirTrace Vampir Beispiele
  • 3.
    H igh P erformance C omputing Anwendung Numerische Simulation Physik Chemie Ingenieurwissenschaften Wirtschaft Animationsfilme Nutzung großer Mengen an Ressourcen Prozessoren (Knoten, Cores) 10 2 -10 5 Hauptspeicher 2-8GB pro Prozess Platteplatz 1PByte Hohe Kosten
  • 4.
    Warum Performance-Analyse? AmdahlsGesetzt Skalierbarkeit begrenzt durch sequentiellen Anteil Sequentielle Anteile Globale Operationen Sequentielle Algorithmen Wartezeiten durch ungleiche Lastverteilung Speedup
  • 5.
    Parallele Programmiermodelle MPIUnabhängige Prozesse Kein globales Speichermodell Kommunikation-Bibliothek Kommunikation und Lastverteilung muss explizit programmiert werden API MPI_Send(buff, cnt, type, dest, tag, comm) MPI_Recv(buff, cnt, type, src, tag, status) MPI_Reduce(send_buf, recv_buf, cnt, type, MPI_SUM, 0, comm) MPI_Barrier(comm) OpenMP Parallelität durch Threads Global-addressierbarer Speicher Automatische Lastverteilung API #pragma omp for private i for (i=0; i <n; i++){ a[i] += b[i] * c[i]; }
  • 6.
    VampirTrace Bibliothek zumEvent-Logging (Tracing) BSD-Lizenz Integriert in Open MPI Tools Vampir Scalasca TAU Open SpeedShop Microsoft Windows Compute Cluster Environment Entwickler TU Dresden FZ Jülich University of Oregon Lawrence Livermore National Lab Automatisches Tracing von Ein- und Austritt in Funktionen MPI-Kommunikation OpenMPI-Events Pthread Funktionen Tracing von Benutzer-Definierten Events #include &quot;vt_user.h&quot; VT_USER_START(&quot;name&quot;); ... VT_USER_END(&quot;name&quot;); Tracing -Output im OpenTraceFormat Trace-File Format API
  • 7.
    VampirTrace - Logging-OutputBetreten/Verlassen einer Funktion Zeitstempel Prozess-Id Funktions-Id Senden/Empfangen von P2P Nachrichten (MPI) Zeitstempel Sender Empfänger Länge Tag Communicator Kollektive Kommunikation (MPI Zeitstempel Root-Knoten Länge Communicator Hardware-Performance-Counter Zeitstempel Prozess-ID Zähler-ID Wert
  • 8.
    Vampir Tool zurgraphische Darstellung der VampirTrace-Daten 1995: Vampir, Research Center Jülich 1996: Kommerzieller Vertrieb durch Pallas/Intel (bis2005) 1997: Vampir, TU Dresden 2005: GWT-TUD GmbH 2006: VampirServer (Vampir NG) Master/Slave-Architektur Darstellung von Laufzeitverhalten (Time-Line) MPI-Kommunikation Berechnungen Speicherzugriffe Cache-Misses Floating-Point-Performance Statistik MPI-Nachrichten Performance-Counter Profiling
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    Vampir –Debugging
  • 15.
  • 16.
    Zusammenfassung Performance Analysisunverzichtbar für HPC-Anwendungen Performance-Analysis-Tools für Profiling und Tracing Nachteile Laufzeit-Overhead Datenvolumen Vermeide printf-Tracing/Timing Fehleranfällig und zeitaufwändig zu implementieren
  • 17.
    Quellen und LinksVampirTrace & Vampir, 3rd VI-HPS Tuning Workshop, Februrary 2009, Andreas Knüpfer, Jens Doleschal http://www.vampir.eu http://www.tu-dresden.de/zih/vampirtrace

Hinweis der Redaktion

  • #3 Motivation HPC Ziel Ergennisse in kurzer Zeit -&gt; optimale ausnutzung der resoourcen -&gt; hohe performance -&gt; performace analyse -&gt; printf/
  • #4 Definition HPC wieviel cores hat case oder der jülicher rechner Hohe Kosten Beschaffung Betrieb (Energieverbrauch und (wie viel?)  Effiziente Nutzung der Ressourcen erforderlich  Paralleles Rechnen  Performance-Analyse
  • #5 Wann formuliert? Vampir Identifikation von sequentiellen Anteilen Darstellung der Komminkationstruktur Kommunikation Bottle-necks Debugging
  • #7 Andere Ansätze? FH St. Augustin
  • #8 Beispiel für output einblenden