Jobs

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

Performance Engineering für Software aus der Klimaforschung (Ice Sheet System Model ISSM)

Kontakt für Anfragen ist Yannic Fischler ( )

Allgemeiner Überblick

Sie möchten aktiv mit Klimaforschern zusammenarbeiten und/oder haben Interesse an numerischen Simulationen, hardwarennahem und parallelem Programmieren und möchten Ihre Fähigkeiten und Kenntnisse in Performance Analyse, OpenMP, MPI oder CUDA in der Praxis anwenden? Dann sind Sie genau die richtige Person, um uns bei unserem aktuellen Projekt zu unterstützen. Sie erhalten eine eigenständige Aufgabe innerhalb des Projekts, in deren Rahmen Sie Ihre Fähigkeiten anwenden und erweitern können und mit der Sie uns bei unserer Forschung unterstützen. Im Rahmen der Projektarbeit ergeben sich immer wieder neue spannende Teilaufgaben, die unter anderem für Abschlussarbeiten geeignet sind.

Tätigkeiten

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

  • Performanceanalyse und -modellierung einzelner Kernel hinsichtlich
    • Nodelevelperformance (Roofline-Model)
    • MPI-Kommunikation (Scaling)
  • Erprobung und Optimierung der aktuellen Messinfrastruktur
    • Anwenden aktueller Tools
    • Verfeinerung von bestehenden Filterlisten
    • Erweiterung der Messinfrastruktur entsprechend der aktuellen Anforderung
  • Softwareenticklung in C, C++ und CUDA
    • Performanceoptimierung einzelner Kernel durch Compiler, Codeoptimierung oder dem Einsatz anderer Technologien (z.B. OpenMP, CUDA)
    • Parallelisierung mit OpenMP oder OpenACC

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 C++
  • Kenntnisse in OpenMP und/oder MPI oder CUDA
  • Kenntnisse in Algorithmen und Datenstrukturen (insbesondere Sparsematrizen und Solver)
  • Erfahrung in der Durchführung und Auswertung von Performanceanalysen
  • Sehr hohe Lernbereitschaft und eigenständiges Einarbeiten in neue Themen
  • Kenntnisse in diesen Bereichen (z.B. durch den Besuch unserer Lehrveranstaltung „Performance Engineering“)

Ausschreibungen

DateiTypGröße
issm-hybridapproachPDF-Datei270kB
issm-rooflinemodelPDF-Datei270kB

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