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