Stellen

Studentische Hilfskräfte

Das Fachgebiet Scientific Computing sucht motivierte Studentinnen und Studenten zur Unterstützung bei verschiedenen Aufgaben, zum Beispiel, Softwareentwicklung oder Pflege der Internetseite.

Hier finden Sie eine Auswahl an ausgeschriebenen Stellen und offenen Abschlussarbeiten. Die meisten der ausgeschriebenen Stellen können ebenfalls als Thesis bearbeitet werden. Eine gemeinsame Erarbeitung eines passenderen Themas oder Stelle ist ebenfalls möglich.

Bitte kontaktieren Sie den entsprechenden Mitarbeiter bei Interesse.

Achtung, diese Seite wird laufend mit neuen Stellenangeboten und Abschlussarbeiten aktualisiert. Für mehr Informationen zu einer Ausschreibung, bitte auf den jeweiligen Titel klicken.

Werkzeuge für das Algorithmische Differenzieren

Wortwolke von Themen bzgl. AD-Bemühungen @ SC
Wortwolke von Themen bzgl. AD-Bemühungen @ SC

Kontakt für Anfragen ist Alexander Hück

Zusammenfassung

Wir sind an Studenten interessiert, die bei der Entwicklung von Werkzeugen basierend auf Compiler-Technologie helfen möchten, um die Anwendung der algorithmischen Differenzierung zu unterstützen. Dies betrifft z.B. (1) statische Quelltext-Analyse, (2) Speicherverfolgung für Korrektheitsprüfungen oder (3) Quelltexttransformationen.

Sie helfen bei der Entwicklung von (Compiler-basierten) Werkzeugen, erstellen von Performance-Modellen und Benchmarks, um diese Ziele zu erreichen. Bitte beachten Sie auch das allgemeine Übersichtsdokument für weitere Informationen.

Allgemeiner Überblick

Algorithmische Differenzierung (AD, siehe autodiff.org) ist eine Menge von Techniken, die auf der mechanischen Anwendung der Kettenregel basieren, um Ableitungen einer Funktion zu erhalten, die als Computerprogramm gegeben ist. AD nutzt die Tatsache aus, dass jedes Computerprogramm, egal wie kompliziert, eine Folge von elementaren arithmetischen Operationen wie Additionen oder Elementarfunktionen wie cos ausführt. Um dies in C++ zu erreichen, wird der integrierte Typ double durch einen benutzerdefinierten Typ ersetzt, der alle erforderlichen Operatoren überlädt. Der neue Typ berechnet die gleichen Werte wie zuvor, berechnet jedoch auch die entsprechende Ableitung.

Arbeitsbereiche

Die AD-Werkzeugentwicklung der SC-Gruppe konzentriert sich auf

  • anwenden eines vorhandenen AD-Tools auf eine Codebasis,
  • die Entwicklung von Werkzeugen, um den Einsatz von AD für Nutzer zu erleichtern (siehe das Werkzeug OO-Lint),
  • Korrektheitsüberprüfungen (siehe das Werkzeug TypeART) der verteilten AD-bezogenen MPI-Kommunikation, und
  • Performance-Analyse, um die effiziente Kombination von verschiedenen AD-Techniken zu ermöglichen.

Voraussetzung

  • Starke Grundlagen bzgl. modernen C++
  • Kenntnisse des CMake-Build-Systems
  • Erfahrung mit dem Clang- und LLVM-Compiler-Framework

Ausschreibungen

DateiTypGröße
Compiler tool development for statement mergingPDF-Datei93kB
Software maintenance of a C++ linter toolPDF-Datei95kB

Tools for High-Performance Computing

Kontakt für Anfragen ist Jan Lehr ()

Allgemeiner Überblick

Das LOEWE Projekt „Software-Factory 4.0“ (www.sf40.de) startete im Januar 2018 und verfolgt für High-Performance Computing Anwendungen das Ziel, diese schneller an neue Hardware-Generationen anpassen zu können. Unser Fachgebiet entwickelt in diesem Projekt ein Werkzeug, welches (teil) automatisiert aus bereits bestehenden Anwendungen, kleine, so genannte, Mini-Apps extrahiert. Diese können leichter analysiert werden und die daran gewonnen Erkenntnisse in die Original-Software zurück gespielt werden. Für dieses anspruchsvolle Projekt suchen wir sehr gute Studenten die uns als HiWi unterstützen.

Tätigkeiten

Innerhalb des Projekts unterstützen sie uns bei, je nach ihrem Profil, verschiedenen Tätigkeiten.

  • Software Entwicklung in Python und C++
    • Implementieren von neuen Features
    • Weiterentwicklung und Verbesserung der Test-Suite
    • Verbessern der Benutzbarkeit für den Endanwender
  • Durchführen von Benchmarks und Tests
    • Anwenden der erstellten Software an praxisrelevanten Anwendungen
    • Validierung von automatisch erstellten Performance Aussagen über Anwendungen

Anforderungen

Ein motiviertes, verlässliches und selbstständiges Arbeiten setzen wir voraus. Darüber hinaus ist es gut, wenn mindestens eins auf sie zutrifft:

  • Kenntnisse in C++ und/oder Python
  • Kenntnisse in Algorithmen und Datenstrukturen (insbesondere Graphen)
  • Kenntnisse in Clang/LLVM (z.B. durch den Besuch unserer Lehrveranstaltung „Compiler Tooling“)
  • Kenntnisse im Bereich Benchmarking (z.B. durch den Besuch unserer Lehrveranstaltung „Performance Engineering“)
  • Kenntnisse in OpenMP und/oder MPI

Ausschreibungen

DateiTypGröße
Binary Analysis for Instrumentation Influence AssessmentPDF-Datei105kB
Software Development for Compiler-Based InstrumentationPDF-Datei106kB

Arbeitsplatz

Das Fachgebiet Scientific Computing bietet Studenten einen dedizierten Arbeitsraum mit Aussicht auf das Kongresszentrum Darmstadtium und dem Darmstädter Schloss.

Es stehen insgesamt fünf Arbeitsplätzen zur Verfügung, bestehend aus fünf Notebook-Arbeitplätzen.

Offene Abschlussarbeiten