nächster Kurslauf
19. September 2022
KURSINFORMATIONEN
Mit Software, die bestmöglich für die zur Verfügung stehende Hardware optimiert ist, sparen Sie nicht nur Zeit und Geld, sondern schonen auch die Umwelt. Wir vermitteln Ihnen die performancerelevanten Aspekte moderner Rechnerarchitekturen wie z.B. Pipelining, Out-of-Order-Execution, Speicher und Caches sowie die Vektorisierung. Sie führen eigene Performance-Messungen auf unserem Trainingscluster durch und diskutieren Ihre Ergebnisse mit unseren Performance-Experten. So erhalten Sie das nötige Wissen, um die komplexen Messungen zu verstehen und auf Ihre eigene Hard- und Software zu übertragen.
1. Woche: Vektorisierung
Erklärung von AVX und Konkretisierung am Beispiel der Intel Server Skylake-Prozessoren
Code-Beispiele zu Vektorisierung (in Fortran (gfortran-Compiler) und in C/C++ (gcc-Compiler))
Überblick über Intel-Compiler-Optionen, Intel-Vektorisierungs-Pragmas (Intel C/C++ (icc)) und Vektorisierungs-Direktiven (Intel ifort)
2. Woche: Prozessor-Mikroarchitektur
Darstellung der Mikroarchitektur eines Cores mit Out-of-Order-Einheit, Pipelines und FMA-Mikrooperationen am Beispiel eines Intel Haswell Cores
Benchmark zur Erkundung der grundlegenden Eigenschaften der CPU-Cores und der Grundfunktionalität der Compiler:
Tests von AVX, AVX2/FMA, AVX-512/FMA sowie verschiedenen Compiler- Optimierungsstufen (Intel und GNU)
Analyse des Maschinencodes in Assemblersprache
"Loop Unrolling" zur Abschwächung der Datenabhängigkeiten und damit Verbesserung des Vektorisierungsgrades
Performancemessungen auf dem Trainingscluster
3. und 4. Woche: Speicher-Mikroarchitektur
Optimierung des Datentransports zwischen Registern, Caches und Hauptspeicher
Benchmark zur Speicherallokierung:
Vergleich von malloc und posix_memalign: Overhead der beiden Methoden und des First Touch
Messungen der Dauer des Allokierens, der Dauer der ersten Zugriffe sowie der durchschnittlichen Dauer eines Speicherzugriffes auf dem Trainingscluster
Grundlagen der Cache-Mikroarchitektur: Hierarchiestufen des Cache, Cache-Kohärenz, Set-Associative Cache, ausführliche Darstellung am Beispiel des Haswell E5-2680v3 Prozessors
"Execution-Cache-Memory" Modell (ECM)
Zusammenfassung der Basisprinzipien des Aufbaus eines SDRAM-Moduls:
Erklärung eines 4 GB-Speichermoduls (Dual Rank DDR3-SDRAM 4 GB 512M×72)
Latenzzeiten eines DDR3-SDRAM-Chips, Burst-Modus
Benchmark zur effizienten Gestaltung des Datentransports zwischen den Hierarchiestufen:
Messung der Sustained Bandwidth im L1-Cache für Intel- und GNU-Compiler für verschiedene Unroll-Faktoren ("Loop Unrolling") auf dem Trainingscluster
Messung der Bandbreiten im Falle des Haltens der Daten im L2-Cache bzw. im L3-Cache auf dem Trainingscluster
Memory Wall: Vergleich von erwarteter Bandbreite und auf dem Trainingscluster gemessener Bandbreite im Falle des Haltens der Daten im Hauptspeicher
5. Woche: Cache-Blocking
Cache Blocking als Beispiel für Code-Optimierung: Aufteilung eines Berechnungsgebiets (Gitter) in Blöcke, um die Wiederverwertung der Daten zu erhöhen
Benchmark zum Cache Blocking:
Vergleich verschiedener Blocking-Methoden
Messungen auf dem Trainingscluster
Die Benchmarks der 2., 3. und 4. Woche sind in C geschrieben. Der größte Teil des Benchmarks der 5. Woche ist in Fortran 90 geschrieben. Er enthält aber auch eine C-Funktion mit dem Ziel, diese mit der Fortran 90-Implementierung zu vergleichen.
Die Teilnehmerinnen und Teilnehmer führen die Messungen auf dem Trainingscluster (Intel Xeon Prozessor E5-2670 (Sandy Bridge)) durch und vergleichen ihre Ergebnisse mit denen von Messungen des Kursautors auf anderen Hardwarearchitekturen (u. a. Intel Xeon Prozessor E5-2680 v3 (Haswell) und Intel Xeon Gold Prozessor 6138 (Skylake)).
- Sie können die Grundlagen moderner Prozessormikroarchitektur beschreiben.
- Sie können die Limitierungsfaktoren der modernen Prozessormikroarchitektur erläutern.
- Sie sind in der Lage zu erklären was Vektorisierung bedeutet und wie man diese anwendet.
- Sie erkennen, warum eine Schleife nicht auto-vektorisiert werden kann.
- Sie sind fähig, Sourcecode für eine bessere Node-Level-Performance zu optimieren.
Dmitry Khabi
High-Performance Computing Center Stuttgart (HLRS)
Numerical Methods & Librariers
Universität Stuttgart
Nobelstraße 19, 70569 Stuttgart
Uwe Küster (Retirement)
High-Performance Computing Center Stuttgart (HLRS)
Former Head of Numerical Methods & Librariers
Universität Stuttgart
Nobelstraße 19, 70569 Stuttgart
AKTIONSPREIS
für Unternehmen, Selbstständige, Gewerbetreibende und Privatpersonen
Regulär
3.350 € 1 2.499 € 1,5
Early-Bird
2.499 € 1,2 1.849 € 1,2,5
Jetzt buchen
AKTIONSPREIS
für Öffentliche Einrichtungen (Wissenschaftliche Mitarbeiter)
Regulär
2.499 € 1,3 1.849 € 1,3,5
Early-Bird
1.849 € 1,2,3 1.599 € 1,2,3,5
Jetzt buchen
Preis
für Studierende
Regulär
149 € 1,4
Early-Bird
99 € 1,2,4
Jetzt buchen
1 Preis gilt pro Person. Die Leistungen sind nach § 4 Nr. 22 a UstG von der Umsatzsteuer befreit.
2 Entspricht dem regulären Preis mit einem "Early-Bird-Rabatt", gültig bei einer Anmeldung bis zum 05.09.2022.
3 Preis für MitarbeiterInnen von öffentlichen Einrichtungen.
4 Für Studierende in Vollzeit ohne Master-/ Diplomabschluss, vorlegen einer Immatrikulationsbescheinigung erforderlich.
5 Zeitlich begrenzter Aktionspreis für das Jahr 2022.
- Software-Entwickler
- Software-Architekten
- Informatiker
- IT-Interessierte
- Simulationsingenieure
Linux
Die Kursteilnehmer besitzen erweiterte Grundkenntnisse des freien Betriebssystems Linux und Kenntnisse in Linux-Anwendung. Der Hintergrund von Linux sowie die wichtigsten Konzepte und Werkzeuge von Linux wie die
Shell und Shell-Befehle (→sicherer Umgang mit der Kommandozeile),
Secure Shell,
den Umgang mit Dateien und Skripten,
die Struktur des Systems,
die Benutzer- und Rechteverwaltung und
das Erstellen von einfache Batch-Skripten mit einem Editor wie nano, vi oder emacs.
sollten bekannt sein. Eine Anleitung zur Arbeit auf dem Trainingscluster wird zur Verfügung gestellt.
Falls Sie bei sich in dieser Hinsicht noch Defizite feststellen, verweisen wir an dieser Stelle auf https://www.tuxcademy.org/product/lxes/.
Programmierkenntnisse
Sie verfügen über solide Programmierkenntnisse in einer Programmiersprache (z.B. C, Fortran oder Python).
Sie können weitere Programmiersprachen und deren Konstrukte verstehen.
Sie sind in der Lage mit Compilern und Linker umzugehen.
Sie besitzen Kenntnisse über make-Files und können diese erstellen.
Umgang mit Plot-Tools
Ein sicherer Umgang mit einem Programm zur grafischen Darstellung von Messdaten und mathematischen Funktionen sowie der Umgang mit CSV-Dateien wird benötigt.
Grundlegendes Hardwareverständnis
Die Teilnehmer verstehen wie die Hardware eines klassischen Computers aufgebaut ist. Das beinhaltet vor allem das grundlegende Verständnis von
Prozessoren (CPU),
Arbeitsspeichern (RAM-Speicher) und
Verbindung zwischen diesen beiden Komponenten,
Netzwerktechnik,
Festplatten und
Rechenbeschleuniger.
OpenMP
Rechner mit ssh-Zugang zum Trainingscluster (mit ssh-Key).
Ggf. muss Software installiert werden. Dafür notwendige Rechte müssen vorhanden sein.
Netzverbindungen nach außen zu fremden Clustern müssen aufgebaut werden können.
Eine stabile Internetverbindung für das Bearbeiten der Lerninhalte und Übungen wird empfohlen.
Zugang zu Videokonferenz-Tool mit Kamera und Mikrofon (ein Headset wird aus Qualitätsgründen empfohlen).
Der Zeitaufwand pro Modul beträgt insgesamt 60 Stunden bei wochenweise freier Zeiteinteilung sowie feste Termine für virtuelle Seminare (abends) und Prüfung (tagsüber). Die Dauer erstreckt sich über 6 Wochen mit einem ungefähren wöchentlichen Aufwand von 10 Stunden.
Sie lernen in komfortabler und effektiver Onlinelehre und erwerben so HPC-Fähigkeiten auf höchstem Niveau. Ergänzt werden die Online-Phasen durch regelmäßige Online-Meetings im virtuellen Klassenraum. Bei freier Zeiteinteilung wenden die Teilnehmerinnen und Teilnehmer das Gelernte in Übungen auf dem Trainingscluster an. Die Fachexperten des HLRS, welche die Lerneinheiten entwickelt haben, stehen in wöchentlichen virtuellen Seminaren für Fragen zur Verfügung. Ein Forum ermöglicht den fachlichen Austausch der Teilnehmerinnen und Teilnehmer untereinander.
Für die Teilnahme an dem Modul erhalten Sie vom Höchstleistungsrechenzentrum Stuttgart eine Teilnahmebestätigung. Wenn Sie zudem sämtlich Lerninhalte des Moduls bearbeitet, regelmäßig an den virtuellen Seminaren teilgenommen und die Lernaufgaben fachgerecht beantwortet haben, erhalten Sie eine qualifizierte Teilnahmebestätigung.
Sie erhalten ein Zertifikat, wenn Sie die Voraussetzungen für die qualifizierte Teilnahmebestätigung erfüllen und die Abschlussprüfung des Moduls bestehen. Mit der erfolgreichen Prüfung weisen Sie nach, dass Sie Kompetenzen erworben haben, das erlernte Wissen selbständig anzuwenden.
Sie benötigen Zertifikate in den vorgegebenen Modulen: