Elektroniknet Logo

Silexica: SLX Plugin

HLS-Latenzzeiten verringern und Durchsatz erhöhen

SLX Plugin
Arbeitsweise des SLX Plugin
© Silexica

Silexica hat für Vitis von Xilinx mit dem SLX Plugin eine Erweiterung vorgestellt, die die Latenzzeiten und den Durchsatz von HLS (High Level Synthesis) erhöht.

Xilinx hat 2019 angekündigt, dass es keine proprietäre Entwicklungsumgebung vorschreibt, sondern dass die Vitis Plattform direkt mit den üblichen Software-Entwicklungs-Tools funktioniert, dafür optimierte Open-Source Libraries zur Verfügung stehen und dass das Vitis HLS Frontend ebenfalls Open Source ist. Maximilian Odendahl, CEO von Silexica erklärt: Mit dieser Open-Source-Strategie will Xilinx eine Community schaffen, und mehr Software-Entwickler dazu bekommen, Xilinx-FPGAs einsetzen.« Die Community hat aber noch einen weiteren Vorteil für Xilinx: sie kann das Frontend selbständig erweitern und beispielsweise neue Pragmas oder Code-Transformationen hinzufügen. »Die Community umfasst aber auch Unternehmen wie beispielsweise Silexica, und das neue SLX-Plugin zeigt, dass die Open-Source-Strategie funktioniert«, so Odendahl

Was macht das SLX-Plugin. Es analysiert eine verschachtelte Schleife mit innerer und äußerer Schleife und überprüft einen möglichen Schleifentausch. Denn mit einem Schleifentausch können beispielsweise Speicherzugriffe verbessert und damit Latenzzeiten reduziert und ein erhöhter Durchsatz erreicht werden. Das heißt, wenn das Tool einen Schleifentausch für sinnvoll hält, dann werden die Iterationsvariablen und damit die Iterationsreihenfolge der verschachtelten Schleifen getauscht. Die Entscheidung, ob ein Schleifentausch möglich ist, ist aber alles andere als einfach, denn beispielsweise muss überprüft werden, ob Datenabhängigkeiten zwischen den verschachtelten Schleifen bestehen. Die Erweiterung analysiert, ob es sinnvoll ist zu tauschen und ob getauscht werden kann. Wenn dem der Fall ist, fügt sie automatisch Loop-Interchange-Pragmas (Compiler-Anweisungen) hinzu und führt dann die Code-Transformation automatisch durch. Odendahl weiter: »Unser SLX-Plugin ist erst der Anfang, denn es gibt noch viele Möglichkeiten zur Code-Transformation.«

Das SLX Plugin für Vitis HLS kann als eigenständige Erweiterung zu Vitis HLS genutzt werden. In diesem Fall müssen die Entwickler die HLS-Direktiven allerdings manuell in den Source-Code einfügen. Es besteht aber auch die Möglichkeit, das SLX Plugin in Kombination mit SLX FPGA zu nutzen und dann wird es deutlich einfacher für den Entwickler.

SLX FPGA

»SLX FPGA macht die Konvertierung von C/C++-Code für den Einsatz in FPGAs einfacher, schneller und performanter und nutzt dabei die HLS-Tools der FPGA-Hersteller.« HLS zielt zwar in die Richtung, dass Entwickler in C/C++ schreiben und dann in VHDL übersetzt wird, aber »mit HLS muss der Entwickler immer noch sehr viel Wissen haben, um seinen C/C++-Code übersetzen zu können«, so Odendahl. Denn HLS weist noch mehrere Probleme auf: Es unterstützt nur eine Untermenge von C++, Parallelität im Code muss manuell erkannt werden und der Entwickler muss Compiler-Pragmas selbst einfügen. »Wenn er das kann, ist das Ergebnis ok. Nur läuft das Einfügen von Pragmas oft nicht problemlos und dann wird der Code sehr langsam«, erklärt Odendahl.

SLX FPGA löst genau diese Probleme, indem es eine statische und dynamische Code-Analyse durchführt, »Vitis, sowie alle anderen kommerziellen HLS-Tools, arbeitet hingegen nur mit einer statischen Compiler-Analyse«, so Odendahl weiter. Mit dieser Analyse kann SLX FPGA nicht-synthetisierbaren C/C++-Code identifizieren, Datentypen erkennen, die nicht zur Hardware passen, alle vorhandenen Parallelisierungsmöglichkeiten in der Software erkennen und dann diejenigen Pragmas bestimmen, die zu einem optimalen Ergebnis führen

Odendahl betont, dass dem Entwickler damit viel Arbeit erspart bleibt, das fängt schon damit an, »dass er sich nicht durch unzählige Pragma-Regeln und Abhängigkeiten quälen muss, die HLS-Compiler festlegen« so Odendahl. Erkennt SLX FPGA nicht-synthetisierbaren Code beispielsweise in gängigen Libraries, wird automatisch ein Code-Refactoring (Umstrukturierung bestehenden Quellcodes ohne das Verhalten zu ändern) durchgeführt, oder SLX FPGA führt den Entwickler durch das Refactoring, indem beispielsweise Code-Beispiele bereitgestellt werden, die ihm helfen, den Code so umzuschreiben, dass er synthetisierbar wird. Das übernimmt SLX FPGA und fügt dann HLS-Pragmas automatisch ein, um dem HLS-Compiler anzuweisen, wie er die Funktion in Hardware implementieren soll.

Wie gut ist SLX FPGA, kann es mit einem handgeschriebenen HDL-Code mithalten? Odendahl erklärt: »Es gibt Kundenbeispiele, die beweisen, dass SLX FPGA sogar bessere Ergebnisse erzielt.« Als Beispiel verweist er auf ein Projekt mit ECSPEC, das gezeigt hat, dass SLX FPGA in Kombination mit HLS die Entwicklungszeit deutlich verkürzt: Für die Entwicklung eines komplexen Bildverarbeitungsalgorithmus waren in diesem Kundenbeispiel mit RTL zwei Monate notwendig. Wird HLS verwendet, reduziert sich diese Zeit schon auf 3 Wochen. Wird HLS und SLX FPGA genutzt, liegt die Entwicklungszeit unter einer Woche. Darüber hinaus hat der mit SLX FPGA optimierte Code auch eine um 39 Prozent reduzierte Latenzzeit im Vergleich zur handgeschriebenen HDL-Variante erreicht.

Odendahl abschließend: »SLX FPGA konzentriert sich derzeit auf Logik-Fabrik, kann also nicht alle verfügbaren Ressourcen in einem komplexen heterogenen FPGA wie den MPSoCs mit Logik und diversen Prozessorkernen nutzen. Aber ich denke, dass wir in spätestens einem Jahr unser SLX FPGA so erweitert haben, dass alle Ressourcen von dem Tool berücksichtigt werden.« (st)

Relevante Anbieter


Das könnte Sie auch interessieren

Verwandte Artikel

Silexica Software Solutions GmbH