Performanzabschätzung von parallelen Programmen durch symbolische Ausführung

  • Problemstellung:

    Das Laufzeitverhalten von Programmen wird normalerweise durch Messen der tatsächlichen Ausführungszeit ermittelt.
    Das Problem dabei ist, dass die Laufzeit erheblich von der Eingabe des Programmes abhängig sein kann und man auch möglichst viele verschiedene Eingaben benötigt um ein Bild davon zu bekommen wie sich das Programm im Bezug auf die Laufzeit verhält.
    Statische Methoden zur Performanzabschätzung basieren auf einem Modell mit Kosten für einzelne Befehle/Instruktionen. Diese haben aber das Schwierigkeiten zu wissen, welche Pfade im Programm gewählt werden und wie oft Schleifen tatsächlich durchlaufen werden.

    Ziel:

    Das Ziel dieser Arbeit ist es mit Hilfe von symbolischer Ausführung die möglichen Codepfade zu finden und somit Performanzabschätzungen in Abhängigkeit der Eingabe des Programmes machen zu können.

    Dazu soll das Tool KLEE (eine symbolische virtuelle Maschine zur Ausführung von LLVM Bitcode) so modifiziert werden, dass sie die entsprechenden Informationen liefert.

    Voraussetzungen:

    • Gute C++ Fähigkeiten
    • Bereitschaft dich tiefer mit LLVM und KLEE zu beschäftigen
    • Compilerbau Kenntnisse von Vorteil

    Die Arbeit ist als Masterarbeit ausgelegt, kann aber in abgespeckter Form auch als Bachelorarbeit vergeben werden.

Projekte