1 Hochleistungsrechnen mit Windows

Transcrição

1 Hochleistungsrechnen mit Windows
Hochleistungsrechnen mit Windows
Verifikations- und Analyseprogramme
Christian Terboven
Rechen- und Kommunikationszentrum
RWTH Aachen
1
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Agenda
•
Intel Threading Tools: ThreadChecker
•
AMD CodeAnalyst: Performanceanalyse
•
Intel VTune: Performanceanalyse
2
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Agenda
•
Intel Threading Tools: ThreadChecker
•
AMD CodeAnalyst: Performanceanalyse
•
Intel VTune: Performanceanalyse
3
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
Data Race
•
•
•
4
Ein Data Race ist ein typischer Fehler bei der Shared-Memory
Programmierung, z.B. mit OpenMP.
• Tritt auf, wenn ein Thread einen Speicherbereich modifiziert die
ein anderer Thread liest oder schreibt, in einer parallelen Region
zwischen zwei Synchronisationspunkten.
• Unangenehm: das Auftreten ist nicht deterministisch, da z.B.
die Reihenfolge der Ausführung von Iterationen in einer
parallelen Schleife nicht festgelegt ist.
• Ursache sind in vielen Fällen fehlende private Klauseln,
fehlende Barrieren oder fehlende kritische Regionen.
Einfacher Test, der aber keine Korrektheit garantiert: der serielle
Code muss das selbe Ergebnis liefern wie wenn der parallele
Code rückwärts ausgeführt wird.
Tool zur automatischen Verifikation: Intel ThreadChecker für
Windows (GUI) und Linux (Kommandozeile), früher Assure.
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
ThreadChecker
•
Arbeitsweise: in einem instrumentierten Programm werden die
Speicherzugriffe protokolliert und es werden mögliche Data Races
angezeigt → Untersuchung auf serielle Äquivalenz.
•
ThreadChecker unterstützt:
• WIN32-Threads, Posix-Threads, OpenMP 2.5
• Analyse unter Linux, Betrachtung der Ergebnisse unter Windows
• Analyse und Betrachtung der Ergebnisse unter Windows
•
Achtung: die Analyse von Programmen, deren Ergebnisse von der
Anzahl der Threads abhängt, ist nicht sinnvoll.
5
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
ThreadChecker
16
17
18
19
20
21
22
23
24
h = 1.0 / (double) n;
sum = 0.0;
for (i = 1; i <= n; i++)
{
x = h * ((double)i - 0.5);
sum += (4.0 / (1.0 + x*x));
}
pi = h * sum;
1
4
Π=∫
2
(
1
+
x
)
0
6
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
ThreadChecker
16
h = 1.0 / (double) n;
17
sum = 0.0;
18 #pragma omp for private(i,sum) shared(h)
19
for (i = 1; i <= n; i++)
20
{
21
x = h * ((double)i - 0.5);
22
sum += (4.0 / (1.0 + x*x));
23
}
24
pi = h * sum;
Es gibt zwei Fehler in diesem Programm:
™ Variable x muss privat sein.
™ Variable sum muss reduziert werden.
7
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
ThreadChecker
•
Intel ThreadChecker ist nur auf der Maschine WINC1 installiert, da er
erweiterte Benutzerrechte benötigt. Version 3.0 beta ist installiert, das
Release wird für Juni erwartet.
•
Instrumentierung:
• Kompilation mit /Qopenmp und /Qtcheck
• Linken mit /fixed:no
•
Starten mit Start → All Programs → Intel VTune Performance
Analyzer. Neues Projekt erstellen vom Typ Threading Wizards →
Intel ThreadChecker.
8
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel Threading Tools
Intel ThreadChecker
Wir empfehlen die Analyse mit dem ThreadChecker
von jedem OpenMP-Code vor Produktionsbeginn.
9
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Agenda
•
Intel Threading Tools: ThreadChecker
•
AMD CodeAnalyst: Performanceanalyse
•
Intel VTune: Performanceanalyse
10
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyst
Performanceanalyse
•
•
•
•
Die Performanceanalyse eines Programms besteht grob aus zwei
Schritten:
• Finden des „HotSpots“ in einem Programm.
• Analyse und Verbesserung der HotSpots.
Ein HotSpot ist eine Stelle in einem Programm an der viel oder ein
Großteil der Laufzeit verbracht wird.
Die hierarchische Betrachtung des Programms spiegelt sich auch
in der Benutzung von Performanceanalysetools wieder.
• 1. Stufe: Timer-based Profiling, um einen Eindruck von der
Verteilung der Laufzeit in einem Programm zu bekommen.
• 2. Stufe: Detaillierte Analyse der HotSpots auf Probleme mit
Hilfe z.B. von Hardware Performance Countern.
Zur Analyse empfiehlt es sich, die Optimierung auf einen mittleren
Wert zu setzen, aber möglichst alle Debuginformationen
aufzunehmen.
C
11
Hochleistungsrechnen mit Windows
Ce nter fo r
Co mputing an d C omm unic ation
C
C
AMD CodeAnalyst
Performanceanalyse
•
Timer-based Profiling:
Arbeit auf lokalen Platten
($TMP) um die Performance
nicht zu beeinflussen.
Start der Analyse durch
Klicken auf
12
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyse
Performanceanalyse
•
Das gesamte System wird analysiert:
amdk8.sys: 72,6%
CPU Driver
msvcr80d: 8,2%
C-Runtime
ntoskrnl:
1,4%
Kernelroutinen
13
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyst
Performanceanalyse
•
Grafische Anzeige:
Hier wird das Ergebnis aller Prozessorkerne
zusammengefasst.
Ebenfalls möglich: Anzeige pro Prozess.
14
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyst
Performanceanalyse
•
Drill down in das Programm auf Funktionsebene:
Quellcodeebene
Auch die Anzeige von
Samples für Assembler
ist möglich.
15
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyst
Performanceanalyse
•
Event-based Profiling:
Es stehen alle Hardware
Performance Counter der
CPU und des Systems zur
Verfügung.
16
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
AMD CodeAnalyst
Performanceanalyse
•
Die Anzeigemöglichkeiten sind identisch:
17
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Agenda
•
Intel Threading Tools: ThreadChecker
•
AMD CodeAnalyst: Performanceanalyse
•
Intel VTune: Performanceanalyse
18
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel VTune
Performanceanalyse
•
Problem: VTune läuft nur auf Intel Prozessoren, unser x86-Cluster
besteht aber aus AMD Opteron Prozessoren.
•
Die Maschine WINC1 ist eine Dual XEON 32bit Maschine.
• Es ist ein deutlich anderes Laufzeitverhalten als auf den
Opterons beobachtbar.
• Die „alte“ XEON-Architektur skaliert nicht bei gleichzeitigem
Speicherzugriff, ist somit für die Analyse von parallelen Programmen nicht geeignet.
• Kaum Erfahrung mit Interna der XEONs, z.B. Hardware
Performance Counter.
•
In naher Zukunft sollte eine EM64T Maschine für VTune zur
Verfügung stehen.
19
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Intel VTune
Performanceanalyse
20
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation
Verifikations- und Analyseprogramme
Gibt es Fragen zu diesem Teil?
21
Hochleistungsrechnen mit Windows
C
C
C
Ce nter fo r
Co mputing an d C omm unic ation

Documentos relacionados