In der Vorlesung werden Konzepte zur effizienten parallelen Datenverarbeitung mit Grafikkarten (GPU) vorgestellt. Dabei liegt der Fokus auf der praxisnahen Anwendung von GPU-Programmierungstechniken für Simulations- und Grafikanwendungen sowie der Verarbeitung von großen Datenmengen. Es werden die folgenden Inhalte vermittelt:

  •     • Multithreading Grundlagen 
  •     • OpenMP 
  •     • Parallele Rechnerarchitekturen (MIMD, SIMD)
  •     • Cache-Kohärenz und Datenkonsistenz
  •     • Speicherhierarchien
  •     • GPU-Programmierung mit CUDA
  •     • Performance-Optimierung und -Evaluation von Algorithmen


Die Vorlesung ermöglicht den Studenten eine praxisorientierte Einführung in das Gebiet Edge Intelligence. Existierende Deep-Learning/Machine Learning Modelle werden unter realen Randbedingungen in Edge Computing Systeme überführt. In Laboraufgaben und einem größeren Projekt erlernen die Studenten die Realisierung von Tensorflow und NVIDIA TensorRT basierenden Algorithmen für ML-Modelle in Edge Computing Systemen. Kompetenzen / Schlüsselqualifikationen:

  • Methodenkompetenz zur Analyse komplexer, verteilter Vorgänge.
  • Methodenkompetenz zum Entwurf einer geeigneten Edge Computing Systemarchitektur.
  • Methodenkompetenz zur Analyse und Konzeption von Datenstrom-orientierter Programmierung am Beispiel von Tensorflow (Lite).
  • Methodenkompetenz zum Entwurf von Linux-Device Treiber zur Anbindung von Sensoren und Aktoren.
  • Anwendungskompetenzen im Bereich IoT-Protokolle und Services.
  • Praktische Erfahrungen an Edge-Computing basierten Embedded Linux Devices.

Voraussetzungen
Gute C++ und Python Kenntnisse aus dem Bachelorstudium der Technischen Informatik/ Informatik und Medizintechnik.

Die Vorlesung vermittelt grundlegende Konzepte des maschinellen Lernens und der statistischen Musteranalyse. Dabei werden die einzelnen Themen anhand von aktuellen praktischen Anwendungsgebieten des maschinellen Lernens vorgestellt. Zu den Themen gehören: überwachtes Lernen, unüberwachtes Lernen, Reinforcement Learning, Bayes’sche Entscheidungstheorie, Gradientenverfahren, Ensemble Lernalgorithmen sowie Evaluationsmetriken und -techniken.

Objektorientierte Programmierung

Sie werden Ihre Programmierkenntnisse vertiefen und dabei die objektorientierte Programmierung kennenlernen. Dabei werden  die Programme größer und umfangreicher, und mit C++ (14) die Syntax etwas komplexer aber meist/oft auch etwas schöner. Zusätzlich lernen Sie and grundlegenden Beispielen Algorthmen und Datenstruturen zu verstehen, entwerfen, analysieren und fehlerfrei (sic!) umzusetzen. Spätestens jetzt werden Sie den Debugger verwenden und selbst programmieren!  - seien Sie kreativ, nichts auswendig lernen.


• Einführung in C++, Erweiterungen ggü. C
• Klassen und Objekte
• Überladen von Operatoren
• Templates
• Algorithmen und Datenstrukturen
• Laufzeit und Komplexität, Suche
• Sortieren
• Algorithmenmuster
• Sequenziell gespeicherte lineare Listen
• Verkettete gespeicherte lineare Listen
• Vererbung
• Ausnahmen
• Die Standard-Template Library (STL)
• Bäume
• Hashing