PERFORMANCE OPTIMIERUNG - NODE LEVEL

13. September - 18. Oktober 2021

Hohe Performance, d.h. hohe Rechenleistung der verwendeten Software ist eine der zentralen Herausforderungen des HPC. In diesem Modul lernen Sie die hierfür relevanten Aspekte kennen und wenden sie auf unserem Trainingscluster praktisch an.

anmelden

MODULINFORMATIONEN

  • Software-Entwickler
  • Software-Architekten
  • Informatiker
  • IT-Interessierte
  • Simulationsingenieure

 

 

Inhaltliche Themenbereiche

 

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)).

 

Zu erlangende Kompetenzen

 

  • 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.

 

 

Ihre Referenten

 

 
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

 

Empfohlenes Vorwissen

 

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 <font color="#000080"><u><a href="https://www.tuxcademy.org/product/lxes/" target="_blank">https://www.tuxcademy.org/product/lxes/</a></u></font>

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

Modul Paralleles Programmieren mit OpenMP.

 

 

Technisches Equipment und Einstellungen

 

  • 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).

 

Moduldauer und Lernaufwand

 

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.

 

Blended Learning

 

Sie lernen in einem komfortablen und effektiven Mix aus Präsenz- und 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.

 

Qualifizierte Teilnahmebestätigung

 

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.

 

Abschluss mit Zertifikat

 

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.

Mit der Anmeldung beim Newsletter bleiben Sie stets auf dem neuesten Stand.

Newsletter

Haben Sie Fragen? Wir sind für Sie da.

 
Dr. Tibor Döpper

Modulleitung

kontakt@supercomputing-akademie.de

Ihre Nachricht an uns

Kontaktformular
* = Pflichtfelder