TechTalk VampirTrace und Vampir Hans-Peter Kersken, DLR-SC Köln, 19.05.2009
Übersicht <ul><li>HPC </li></ul><ul><li>Warum Performance-Analyse? </li></ul><ul><li>Parallele Programiermodelle </li></ul...
H igh  P erformance  C omputing <ul><li>Anwendung </li></ul><ul><ul><li>Numerische Simulation </li></ul></ul><ul><ul><ul><...
Warum Performance-Analyse? <ul><li>Amdahls Gesetzt </li></ul><ul><ul><li>Skalierbarkeit begrenzt durch sequentiellen Antei...
Parallele Programmiermodelle <ul><li>MPI </li></ul><ul><ul><li>Unabhängige Prozesse </li></ul></ul><ul><ul><li>Kein global...
VampirTrace <ul><li>Bibliothek zum Event-Logging (Tracing) </li></ul><ul><li>BSD-Lizenz </li></ul><ul><li>Integriert in Op...
VampirTrace - Logging-Output <ul><ul><li>Betreten/Verlassen einer Funktion </li></ul></ul><ul><ul><ul><li>Zeitstempel </li...
Vampir <ul><li>Tool zur graphische Darstellung der VampirTrace-Daten </li></ul><ul><ul><li>1995: Vampir, Research Center J...
Vampir-Time-Line-Diagramm
Vampir - Grobes Profil
Vampir – Profiling-Tortendiagramm
Vampir – Prozess-Time-Line
Vampir – Nachrichten-Statistik
Vampir  – Debugging
Vampir -- Overhead
Zusammenfassung <ul><li>Performance Analysis unverzichtbar für  HPC-Anwendungen </li></ul><ul><li>Performance-Analysis-Too...
Quellen und Links <ul><li>VampirTrace & Vampir, 3rd VI-HPS Tuning Workshop, Februrary 2009, Andreas Knüpfer, Jens Dolescha...
Upcoming SlideShare
Loading in …5
×

VampirTrace und Vampir

1,187 views

Published on

TechTalk von Dr. Hans-Peter Kersken über Vampir (DLR Köln-Porz, 19.05.2009)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,187
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Motivation HPC Ziel Ergennisse in kurzer Zeit -&gt; optimale ausnutzung der resoourcen -&gt; hohe performance -&gt; performace analyse -&gt; printf/
  • 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
  • Wann formuliert? Vampir Identifikation von sequentiellen Anteilen Darstellung der Komminkationstruktur Kommunikation Bottle-necks Debugging
  • Andere Ansätze? FH St. Augustin
  • Beispiel für output einblenden
  • VampirTrace und Vampir

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

    ×