High Performance Computing für Maschinelle Intelligenz

High Performance Computing für Maschinelle Intelligenz
Dozent: Martin Gottwald
Assistenten: wird noch bekannt gegeben
Zielgruppe: Master
ECTS: 6
Umfang: 2/0/2 (SWS Vorlesung/Übung/Praktikum)
Turnus: Wintersemester
Anmeldung: 15.08.2019 (16:30) bis 01.10.2019 (23.59) via TUMOnline
Reihungsverfahren: Praktika
Platzvergabe: Fixplätze werden am 02.10.2019 vergeben. Nicht wahrgenommene Plätze werden in der ersten Vorlesung aufgefüllt
Zeit & Ort: Dienstag 09.45 - 11.45 Uhr im Raum Z995, Praktikum freie Zeiteinteilung
Beginn: erste Vorlesung 15.10.2019
Hinweis: Absolventen des Leistungskurses C++ können nicht an dieser Veranstaltung teilnehmen. Siehe hierzu Seite 8 in der Modulliste (August 2019).

Inhalt

High Performance Computing (HPC) ist das neue Paradigma in einer Zeit, in der sich die Geschwindigkeit traditioneller Prozessoren nicht länger alle zwei Jahre verdoppelt. Anstatt auf einen schnellen Prozessor zu setzen werden Probleme so formuliert, dass eine Vielzahl von kleineren Rechnern zusammen an einer Lösung arbeiten.

Besonders in dem Bereich Machine Intelligence (MI) ist dies notwendig, da man typischerweise mit besonders großen Datenmengen („Big Data“) umgehen muss, welche die Kapazität eines einzelnen Computers mit einer traditionellen Herangehensweise bei weitem übersteigt.

HPC Methoden gehen heutige Probleme an, indem mehrere Prozessoren an stelle eines einzelnen zum Einsatz kommen. Zudem können diese über mehrere physischen Maschinen verteilt sein. Hierbei entstehen neue Herausforderungen wie zum Beispiel die Synchronisation der Rechner oder das Bewältigen von Kommunikationsverzögerungen. Um diese zu lösen, muss eine neue Denkweise für das Konzipieren und Programmieren von Algorithmen entwickelt werden.

Unter anderem werden die folgenden Themen im Rahmen der Veranstaltung behandelt:

  • Einführung in HPC
  • Wichtige Aspekte der Computer Architektur
  • Design von Algorithmen im Hinblick auf HPC
  • Parallel Computing:
    • Multi-threading & Verteiltes Rechnen
    • Synchronisation
    • Scheduling
  • General-purpose Computing on Graphics Processing Units (GPGPU)
  • Laufzeit- und Speicherplatzoptimierung
  • Kombination von C++ (Performanz) mit Python (Rapid Prototyping)

Inhaltliche Voraussetzungen:

Voraussetzung zur Teilnahme an der Vorlesung ist die Kenntnis der Inhalte des Grundkurses C++. Zusätzlich sind tiefgreifende Kenntnisse der Interpreter Sprache Python notwendig (wird individuell überprüft).

Der Kurs setzt außerdem grundlegende Kenntnisse in Linearer Algebra, Höherer Mathematik, Optimierung und Maschinellem Lernen voraus.

Ziel:

Mit dem Absolvieren des Kurses sind die Studierenden in der Lage:

  • HPC Techniken zu verwenden
  • HPC auf MI Problemstellungen anzuwenden
  • Eigenschaften der Algorithmen, welche in dem Kurs behandelt werden, zu charakterisieren
  • Realisierungen von HPC Implementierungen mit einem Profiler zu analysieren
  • Optimierte C++ Routinen mit anderen Sprachen (Python) zu verbinden

Lehrsprachen

Deutsch

Lehr- und Lernmethode:

In dieser Veranstaltung sollen Studierende im Rahmen einer Projektarbeit im Team die Kenntnisse der Programmiersprache C++ in einem High Performance Computing Projekt zu vertiefen. Der Kurs basiert auf den Grundlagen des Grundkurses C++ mit dem Ziel, das erlernte Wissen zu festigen und zu erweitern und gleichzeitig eine Brücke zu den aktuellen Forschungsthemen am Lehrstuhl zu schlagen.

Zur Projektarbeit stehen mehrere HPC Rechner zur Verfügung. Mit diesen soll im Hauptprojekt ein komplexes kollaboratives bzw. kompetitives Problem gelöst werden. Zu diesem Zweck gilt es verschiedene technische Hürden zu überwinden.

Begleitend zur Projektarbeit findet an zwei Stunden pro Woche eine Vorlesung statt. Aufbauend auf den Grundlagen des Grundkurses sind die oben genannten Themen geplant.

Teilnahmekriterien & Anmeldung:

Anmeldung erfolgt über TUMonline unter Vorbehalt. Erfolgreiche Teilnehmer des Grundkurses werden automatisch angenommen, andere müssen die entsprechenden Kenntnisse in einem persönlichen Gespräch nachweisen. Die Zahl der Teilnehmer ist aus Kapazitätsgründen auf 40 begrenzt.

Beurteilungsschema:

Die Abschlussnote wird aus den folgenden Teilleistungen ermittelt:

  • Hausarbeiten (50%)
  • Finale Projektpräsentation und Demonstration (50%)

Die Hausarbeiten belegen den kontinuierlichen Erwerb von technischen Fähigkeiten, während der Abschlussvortrag zusammen mit der Demonstration des Projekts den jeweiligen Beitrag der Studierenden zum Gruppen Projekt darstellt.

Die Studierenden müssen alle Arbeiten rechtzeitig und gemäß den technischen Spezifikationen einreichen.

Empfohlene Fachliteratur:

  1. Programming Massively Parallel Processors – A Hands-On Approach 2nd edition, D. Kirk & W. Hwu
  2. High Performance Computing, 2nd Edition K. Dowd
  3. Thinking in C++, Vol. 1 & 2, 2nd Edition B. Eckel
  4. Python – kurz und gut M. Lutz