Diplomarbeit: Entwurf und Entwicklung eines Source-to-Source Compilers

Thema

SkelCL [en] ist eine Softwarebibliothek, welche an der Universität Münster entwickelt wird. SkelCL erleichtert die Programmierung von modernen parallelen Prozessoren, wie z.B. Grafikprozessoren (GPUs). Dazu werden wiederkehrende Muster der parallelen Programmierung, so genante Skelette, angeboten, welche der Anwendungsentwickler verwendet ohne die Parallelität selber explizit auszudrücken.

Anwendungsentwickler passen die angebotenen Skelette für Ihre spezielle Anwendung an. Dazu spezifiziert der Anwender eine Funktion welche dann von SkelCL parallel ausgeführt wird. Diese Funktion wird zur Zeit aus technischen Gründen als String spezifiziert, welches mehrere Nachteile hat: 1) Die Spezifikation eine Funktion als String wirkt bei der Programmierung unnatürlich; 2) Die sequentielle Verwendung der Funktion ist nicht möglich; 3) Die Funktionssignatur kann nicht vom Compiler überprüft werden, daher kann z.B. die Typsicherheit nicht garantiert werden. Wünschenswert wäre stattdessen wenn der Anwender die Funktion als einen Funktionszeiger, ein Funktionsobjekt, oder einen Lambda-Ausdruck spezifizieren könnte, wie es in C++ üblich ist.

In dieser Abschlussarbeit soll daher ein Source-to-Source Compiler entwickelt werden, welcher dem Anwender ermöglicht die Funktion wie gewohnt als Funktionszeiger, Funktionsobjekt, oder Lambda-Ausdruck zu übergeben, jedoch den entsprechenden Quelltext in einen Quelltext umwandelt, welcher die Funktionsdefinition als String an ein Skelett übergibt. Zur Implementierung dieses Compilers soll das existierende Compiler-Framework LLVM, bzw. Clang verwendet werden, welches einen vollständigen C++ Complier implementiert und darüberhinaus einfache Anpassung bzw. Erweiterungen leicht ermöglicht.

Voraussetzungen

Kenntnisse in der Programmierung mit C/C++.
Interesse (und eventuell Kenntnisse) an Compilern und Programmiersprachen (z.B. durch Besuch der Vorlesung "Compilerbau").

Umfang

Masterarbeit oder Diplomarbeit (6 Monate Bearbeitungszeit).

Student

Reza Nawrozi

Betreuer

Dipl.-Inf. Michel Steuwer