Interested in an internship or a thesis?
Often, new topics are in preparation for being advertised, which are not yet listed here. Sometimes there is also the possibility to define a topic matching your specific interests. Therefore, do not hesitate to contact our scientific staff, if you are interested in contributing to our work. If you have further questions concerning a thesis at the institute please contact Dr. Thomas Wild.
Duckietown - Improved RL-based Vehicle Steering
Description
At LIS, we try to leverage the Duckietown hardware and software ecosystem to experiment with our reinforcement learning (RL) agents, known as learning classifier tables (LCTs), as part of the Duckiebots' control system (https://www.ce.cit.tum.de/lis/forschung/aktuelle-projekte/duckietown-lab/).
More information on Duckietown can be found at https://www.duckietown.org/.
In previous work, an LCT agent to steer Duckiebots has been developed using only the angular heading error for the system state. In this Bachelor's thesis, the vehicle steering agent should be improved and its functionality extended.
Starting with the existing Python/ROS implementation of the RL agent and our image processing pipeline, multiple system parts should be enhanced. On the environment side, detecting the lateral offset from the center of a lane should be improved for reliability. This will require an analysis of the current problems and some adaptations in the pipeline, possibly some hardware changes.
With more reliable lane offset values, the agent's state observation can also include it, allowing us to move further from the default PID control towards a purely RL-based steering approach. This will involve modifications to the rule population, the reward function, and potentially the learning method. Different configurations are to be implemented and evaluated in terms of their resulting performance and efficiency.
The thesis aims to shift the vehicle steering entirely to the RL agent, ideally reducing the effort for manual parameter tuning while being comparable in driving performance and computation effort.
Prerequisites
- Experience with Python and, ideally, ROS
- Basic knowledge of reinforcement learning
- Structured way of working and problem-solving skills
Contact
michael.meidinger@tum.de
Supervisor:
Software Implementation of SmartNIC-assisted Load Balancing
Description
With the advent of research on the next generation of
mobile communications 6G, we are engaged in exploring
architecture extensions for Smart Network Interface Cards
(SmartNICs). To enable adaptive, energy-efficient and
low-latency network interfaces, we are prototyping a
custom packet processing pipeline on FPGA-based NICs,
partially based on the open-nic project
(https://github.com/Xilinx/open-nic).
Load balancing is a challenging task in modern data
centers and servers, as the number of processing cores rises (96 cores in recent AMD Epyc platforms) and the packet processing workload should be distributed equally among them. To assist this process, incoming packet flows should be differentiated and assigned to different queues already in the NIC hardware. These queues must then be pinned to different processor cores to ensure the hardware load-balancing algorithm works correctly. Further, interrupts and other sources of imbalances necessitate a feedback mechanism, to ensure the current capacity of individual cores is taken into account.
The goal of this work is to implement the required software driver and runtime extensions to an existing SmartNIC-based load balancing mechanism. In detail, this includes configuring the NIC driver to use the correct queues, pinning the processing of the queues onto different CPU cores and creating a feedback mechanism to the load balancer in the SmartNIC. Further, functional verification as well as performance evaluation should be done on the system.
Prerequisites
- Programming skills in C (and Python)
- Practical experience with Operating Systems (Linux) and drivers
- Good Knowledge of computer networks, OSI layer model and protocols
- Comfortable with the Linux command line and bash
Contact
Marco Liess, M. Sc.
Tel.: +49.89.289.23873
Raum: N2139
Email: marco.liess@tum.de
Supervisor:
Evaluations-Framework für eine SystemC MPSoC Prototyp Architektur
Description
Gegenstand dieser Bachelorarbeit ist die Entwicklung eines Compile-Flows, mit dem verschiedene Benchmarks, z.B: von EEMBC, kompiliert und auf einer SystemC basierten Prototyp Architektur abgespielt werden können. Dabei sollen verschiedene Benchmarks, ggf. mit unterschiedlichen Parametern so in das System eingebunden werden, dass jedes Teammitglied diese auf einfache Weise kompilieren und abspielen kann.
Das SystemC Modell verwendet ein taktgenaues Modell eines Prozessors der Synopsys ARC Familie, um Speicherzugriffe auszuführen und so die Speicherhierarchie unter realistischen Bedingungen zu testen und zu evaluieren.
Je nach zeitlichem Fortgang der Arbeit kann man die Ergebnisse der Benchmarks dann auswerten
Prerequisites
- Gutes Fachwissen über MPSoC Systeme
- Kenntnisse über Python-Programmierung
- Hohe Motivation
- Selbstverantwortliche Arbeitsweise
Contact
Oliver Lenke
o.lenke@tum.de
Supervisor:
Analyse von Laufzeit-Statistiken eines SystemC MPSoC-Simulationsmodells mit Python
Description
Gegenstand dieser Bachelorarbeit ist die Entwicklung eines Python-Tools, welches die Ergebnisse (z.B. Log Files, Traces) eines SystemC Simulationsmodells auswertet und analysiert. Alle relevanten Events, zum Beispiel Speicherzugriffe, Cache Misses usw. werden dabei mit Zeitpunkt aufgezeichnet und bilden die Datenbasis für eine anschließende Performance-Evaluation.
Von besonderen Interesse sind dabei alle Performance-Statistiken, welche sich durch die Hardware-Prefetching Einheit ergeben, um deren Effektivität gezielt evaluieren zu können.
Aus diesen Traces sollen verschiedene Statistiken erstellt werden, dazu muss ein Python Programm geschrieben werden, welches die Traces auswertet und ggf. Plots erstellt.
Mögliche Statistiken sind beispielsweise
- Auf welche Page wurde wie oft zugegriffen?
- Wie viele Zugriffe hintereinander fallen im Schnitt in die selbe Page
- Wie ist die zeitliche Verteilung der unterschiedlichen Pages?
- Zeitlicher Abstand zwischen Zugriffen auf dieselbe Page?
- Wie viele Pages wurden geladen, aber nicht genutzt?
- Wie viele Speicherzugriffe fallen in vorgeladene Pages?
Diese Daten sollen bei der Analyse von Speicherzugriffsmustern von verschiedenen Anwendungen helfen, um so einen effizienten Mechanismus zum Vorladen ausgewählter Speicherinhalte zu entwickeln.
Prerequisites
- Gutes Fachwissen über MPSoC Systeme
- Kenntnisse über Python-Programmierung
- Hohe Motivation
- Selbstverantwortliche Arbeitsweise
Contact
Oliver Lenke
o.lenke@tum.de
Supervisor:
Design and Implementation of an RLNC Encoder
Description
Random Linear Network Coding (RLNC) is a coding scheme commonly used in wireless networks. In RLNC, packets are encoded as linear combinations of a set of source packets (called a generation) before being sent over the network. As the transmitted packets are linear combinations, any lost or dropped packet may be recovered by the sender. And in addition to allowing endpoints to recover individual packets in the case of packet loss, RLNC also increases throughput in random networks.
However, the use of RLNC is rare in wired networks and few studies have been done to determine its performance in these circumstances. It would therefore be useful to have an RLNC implementation running on an FPGA-based SmartNIC, so that it can be evaluated in real-world systems.
In this project, the student will have to design and implement a hardware encoder for select RLNC schemes, such as PACE and convolutional coding. Furthermore, the student should incorperate the decoder into our SmartNIC platform and test the system in-network.
Prerequisites
It is expected that the student has:
- Working knowledge of VHDL or (System)Verilog
- Experience with FPGA design workflow
- Experience with Git
- Basic knowledge of computer networks
- Basic knowledge of linear algebra
Contact
William Wulff
Email: william.wulff@tum.de
Supervisor:
Python Tool zur Analyse von Speicherzugriffen
Description
Gegenstand dieser Bachelorarbeit ist die Entwicklung eines Python-Tools, welches verschiedene Statistiken über die Speicherzugriffe einer MPSoC-Architektur erstellt. Dazu werden simulations-basierte Traces verwendet, in denen alle Speicherzugriffe aufgezeichnet werden. In diesen Traces sind alle Zugriffe dokumientiert: Zeitpunkt? Cache Hit/Miss? Welcher Core?
Aus diesen Traces sollen verschiedene Statistiken erstellt werden, dazu muss ein Python Programm geschrieben werden, welches die Traces auswertet und Plottet.
Mögliche Statistiken sind beispielsweise
- Auf welche Page wurde wie oft zugegriffen?
- Wie viele Zugriffe hintereinander fallen im Schnitt in die selbe Page
- Wie ist die zeitliche Verteilung der unterschiedlichen Pages?
- Zeitlicher Abstand zwischen Zugriffen auf dieselbe Page?
Diese Daten sollen bei der Analyse von Speicherzugriffsmustern von verschiedenen Anwendungen helfen, um so einen effizienten Mechanismus zum Vorladen ausgewählter Speicherinhalte zu entwickeln.
Prerequisites
- Gutes Fachwissen über MPSoC Systeme
- Kenntnisse über Python-Programmierung
- Hohe Motivation
- Selbstverantwortliche Arbeitsweise
Contact
Oliver Lenke
o.lenke@tum.de
Supervisor:
Development of a C Testsuite for a Memory Preloading Mechanism of an MPSoC
VHDL, C Programming, Distributed Memory, Data Migration, Task Migration, Hardware Accelerator
Description
Memory prefetching is a common technique used to hide memory access latencies and improve the performance of MPSoC architectures. In contrast to caches, data is read from the DRAM and stored in a fast on-chip buffer ahead of the actual CPU load request.
Such a memory prefetching mechanism is part of the TUM contribution to the CeCaS project and is currently under development. Besides a simulation environment, an FPGA-based prototype implementation was directly integrated into a State-of-the-Art MPSoC design.
The goal of this thesis is to develop a baremetal test environment for this preloading module to evaluate all possible corner cases. The testsuite will be developed in a hardware-related C programming style and can be executed directly on the FPGA prototype platform.
Toward this goal, you will complete the following tasks:
1. Understanding the existing Memory Access and Preloading mechanism
2. Explore and understand possible corner-case scenarios
3. Develop a baremetal C program that triggers all corner cases
4. Analyse and discuss the results
Prerequisites
- Good Knowledge about MPSoCs
- Good C programming skills
- High motivation
- Self-responsible workstyle
Contact
Oliver Lenke
o.lenke@tum.de