MLIR Machine-Learning Compiler für RISC-V Vektorprozessoren

  • Forschungsthema:ML Compiler mit RISC-V Backend
  • Typ:Bachelorarbeit
  • Datum:ab 01 / 2025
  • Betreuung:

    Maximilian Kirschner, M.Sc.

  • Zusatzfeld:

    Abschlussarbeit am FZI.

MLIR Machine-Learning Compiler für RISC-V Vektorprozessoren

Compilation Steps FZI
Hardware Architecture FZI
MLIR Dialects FZI

Kontext


Neuronale Netze werden vermehrt auch in sicherheitskritischen Systemen wie selbstfahrenden Autos eingesetzt. Dabei ist es wichtig, Aussagen über das Zeitverhalten dieser Systeme treffen zu können. Für diese Anwendungen entwickeln wir am FZI einen Hardware Beschleuniger, der Neuronale Netze effizient ausführen kann und gleichzeitig ein vorhersagbares Zeitverhalten aufweist. Die Hardware besteht aus mehreren RISC-V Kernen mit Vektorerweiterung und lokalem Speicher. Die Kommunikation zwischen den lokalen Speichern wird über einen zentralen Management Core koordiniert. 

Für das Deployment von Modellen auf dieser Hardware ist ein Compiler nötig, der ML-Modelle zu RISC-V Instruktionen kompiliert und Teilberechnungen auf die verschiedenen Kerne verteilt.

Die Multi-Level Intermediate Representation (MLIR) ist ein modernes Framework für die Compiler Entwicklung, welches Erweiterbarkeit und Wiederverwendbarkeit vereinfacht.

Aufgaben

State-of-the-art MLIR Compiler, wie IREE, BUDDY-MLIR oder TT-MLIR sollen im Rahmen der Arbeit untersucht werden, um einen Überblick über bereits verfügbare Methoden zu erhalten. Hauptsächlich soll im Rahmen der Arbeit ein Machine Learning Compiler entstehen, der einfache ONNX Modelle von CNNs zu RISC-V Vektor Instruktionen kompilieren kann. Der entwickelte Compiler sollte zu möglichst großen Teilen aus ‚upstream‘ MLIR Komponenten bestehen. Der Compiler sollte vor allem gut strukturiert und erweiterbar sein, um in zukünftigen Arbeiten Mapping- und Scheduling- Komponenten hinzufügen zu können. Zur Evaluation können die generierten Binaries in einer QEMU Umgebung ausgeführt werden.

Voraussetzungen

  • C und C++ Programmierkenntnisse
  • Erfahrungen in hardwarenaher Programmierung
  • Interesse an modernen Compiler Technologien