Toolchain

Wie nutzt man programmierbare Logik bei der Entwicklung von Applikations-Software?

| Autor/ Redakteur: Giles Peckham und Adam Taylor * / Sebastian Gerstl

Der Einsatz von FPGAs und programmierbarer SoCs bietet großes Potential, um die Leistung darauf basierender Anwendungs-Software signifikant zu beschleunigen. Es kommt nur auf den Einsatz der richtigen Toolchains und Bibliotheken an.

Die Entwickler von Applikationen an der Edge und in der Cloud können nun erstmals die Vorteile der programmierbaren Logik mit Industrie-Standard Frameworks und Bibliotheken nutzen. Dies verspricht eine signifikante Performance-Steigerung bei entsprechenden Anwendungen.
Die Entwickler von Applikationen an der Edge und in der Cloud können nun erstmals die Vorteile der programmierbaren Logik mit Industrie-Standard Frameworks und Bibliotheken nutzen. Dies verspricht eine signifikante Performance-Steigerung bei entsprechenden Anwendungen.
(Bild: gemeinfrei / Pixabay)

FPGAs und heterogene SoCs (System on Chip) ermöglichen Applikationsentwicklern durch ihre Kombination von High-Performance Prozessorkernen mit programmierbarer Logik signifikante Beschleunigungseffekte. Die effiziente Entwicklung derartiger Bausteine erfordert allerdings einen Entwicklungsfluss, der sowohl Industrie-Standard High-Level Bibliotheken, und auch die Frameworks für Computer Vision und Machine Learning unterstützt, einschließlich OpenCV, OpenVX, FFmpeg und Caffe.

Die Kombination dieser High-Level Frameworks und der Beschleunigungsfähigkeit erzielt bei der Applikationsentwicklung einen signifikanten Zuwachs an Performance in Edge- und Cloud-basierten Applikationen. Das gilt für die Vision-gestützte Robotik ebenso wie für die Genom-Verarbeitung. In einigen Fällen realisiert diese Beschleunigung eine Rekord-Performance - wie es in der Genom-Verarbeitung am Children’s Hospital of Philadelphia (CHOP) und im Edico Genome Projekt der Fall war. CHOP und Edico Genome haben einen neuen Weltrekord bei der schnellen Umsetzung kompletter menschlicher Genome in Datensätze aufgestellt, die für die weitere Forschung verwertbar sind. Dabei wurden 1000 pädiatrische Genome mit der Dragen Genome Pipeline von Edico Genome in nur zwei Stunden und 25 Minuten bearbeitet. Diese Leistung wurde möglich durch die Cloud-basierte Beschleunigung mit High-Performance All Programmable FPGAs, wie sie über die Amazon Web Service EC2 F1 Instance erhältlich sind.

Bild 1. Strukturelle Gliederung des reVISION Stack.
Bild 1. Strukturelle Gliederung des reVISION Stack.
(Bild: Xilinx)

Die grundlegende Technologie, die es Applikationsentwicklern ermöglicht, das Potenzial der programmierbaren Logik gewinnbringend zu nutzen, ist die High-Level Synthese (HLS). HLS bietet Algorithmen, die in C, C++ oder OpenCL spezifiziert sind, um sie direkt in der programmierbaren Logik zu beschleunigen. Um die Produktivität der Entwicklung zu maximieren, sollte das HLS-Tool dabei ein Teil der Toolkette zur Entwicklung und eines Ökosystems sein, die High-Level Frameworks und Bibliotheken unterstützen.

Toolchains

Applikationsentwicklern, die Cloud-basierte Applikationen mit Xilinx FPGAs oder Edge-basierte heterogene SoC-Applikationen planen, stehen zwei dieser Toolketten zur Verfügung: SDAccel für Cloud-basierte, und SDSoC für Edge-basierte Entwicklungen.

Beide Tool-Chains bieten unterstützende Ökosysteme mit Acceleration Stacks, die zur Beschleunigung von Frameworks und Bibliothek-Funktionen in programmierbarer Logik geeignet sind. Diese Stacks sind: der Reconfigurable Acceleration Stack (RAS) für Cloud-basierte Applikationen, sowie der Revision-Stack für Edge-basierte Applikationen mit Embedded Vision.

Beide Stacks, RAS und Revision, sind jeweils in drei distinktive Layer unterteilt, ganz ähnlich dem siebenschichtigen OSI-Modell der Telekommunikation, mit dem viele Entwicklern gut vertraut sind. Der niedrigste Layer ist der Plattform-Layer, sowohl im RAS- wie im Revision-Stack. Dies ist die Hardware-Plattform, die den ausgewählten All Programmable FPGA oder SoC-Baustein enthält, auf dem die übrigen Teile des Stacks implementiert werden.

Allerdings sind die in den beiden Stacks eingesetzten Technologien unterschiedlich. Wenn man mithilfe des Revision-Stack entwickelt, stammt der Zielbaustein aus der All Programmable Zynq-7000 SoC- oder der Zynq UltraScale+ MPSoC-Familie (Bild 1). Die RAS-Plattform hingegen basiert auf dem Einsatz von UltraScale+ FPGAs (Bild 2). Daraus folgt ein Unterschied in den beiden übrigen Layern der Stack. Auf diesen beiden funktional höheren Ebenen erstellt der Entwickler der Applikationssoftware seine Lösung.

Die Anwendungsebene

Bild 2. Reconfigurable Acceleration Stack (RAS).
Bild 2. Reconfigurable Acceleration Stack (RAS).
(Bild: Xilinx)

Der zweite Layer des Revision-Stack wird als Algorithmus-Layer bezeichnet. Hier nutzt der Entwickler das SDSoC-Design-Tool in Kombination mit gebräuchlichen Open-Source Bibliotheken wie Open-CV, um die geforderten Algorithmen zu implementieren. Mit dem Einsatz von SDSoC lässt sich die Funktionalität auf das Prozessorsystem und die programmierbare Logik des ausgewählten Bausteins so aufteilen, dass man eine optimale System-Performance erzielt. SDSoC verwendet HLS in Kombination mit einem Konnektivitäts-Framework. Dies ermöglicht die nahtlose Verschiebung von Funktionen zwischen dem Prozessorsystem und der programmierbaren Logik.

Der abschließende obere Layer des Revision-Stack ist der Applikations-Layer. Auch er verwendet Industrie-Standard Frameworks zur Erstellung der gesamte Applikation, wie sie für die angestrebte Lösung gefordert ist.

Auch im RAS fungiert der zweite Layer als Application Layer. In diesem Fall wird das SDAccel Tool eingesetzt. Auch dieses verwendet HLS zur Implementierung der Applikation, mit Unterstützung von Machine Learning Frameworks wie Caffe, der Integration mit SQL-Umgebungen und zur Unterstützung von MPEG-Verarbeitungen mit FFmpeg. Natürlich lassen sich hier dieselben Open-CV Bibliotheken und Frameworks einsetzen, die auch mit dem Revision-Stack genutzt werden, falls dies erforderlich ist. Der abschließende obere Layer erlaubt die Integration im Datenzentrum. Er fungiert als Bereitstellungs-Layer, mit Open Stack für die benötigte Integration.

Für Applikationsentwickler bringt die Implementierung dieser Stacks in ihren Lösungen mehrere Vorteile. Viele davon sind offenkundig, andere erschließen sich erst auf den zweiten Blick. Der am klarsten erkennbare Vorteil beim Einsatz beider Stacks ist der Zuwachs an Performance. Er ergibt sich aus der Ausführung der Algorithmen innerhalb der programmierbaren Logik. Verglichen mit der Implementierung derselben Funktion in einer Prozessor-basierten Architektur ermöglicht RAS eine bis zu 25-fache Verbesserung der Performance im Hinblick auf die Performance pro Watt für Datenzentrum-Applikationen . Ganz ähnlich bringt der Einsatz des Revision-Stack eine sechs- bis 40-fache Verbesserung der Performance pro Watt in Edge-Applikationen, abhängig vom Algorithmus und dem eingesetzten SoC .

Erleichterungen und Leistungssteigerungen

Diese signifikanten Verbesserungen der Performance durch RAS in der Cloud reduzieren nicht nur den Hardware-Aufwand für dieselbe Performance. Sie realisieren außerdem eine niedrigere Cost of Ownership und geringere Betriebskosten, da auch der Leistungsverbrauch signifikant herabgesetzt wird. Die Cloud kann dabei die Runtime-Rekonfigurierbarkeit der FPGAs vorteilhaft nutzen, um die programmierbare Logic für unterschiedliche Algorithmen zu programmieren, wie sie aktuell zur Ausführung aufgerufen werden.

Der Einsatz des Revision-Stack in Edge-Applikationen erzielt denselben Gewinn an Performance. Darüber hinaus sind die Software-Entwickler aber auch in der Lage, die universelle Any-to-Any Interface-Fähigkeit zu nutzen, wie sie von der programmierbaren Logik geboten wird. Dies ist besonders wichtig in Edge-basierten Lösungen, die mit mehreren unterschiedlichen Sensortypen verbinden müssen. Das gilt für aktuelle Interface-Standards ebenso wie für maßgeschneiderte Schnittstellen.

Die Anwender profitieren natürlich auch von der effizienten Verarbeitung pro Watt. Wenn es sich um Batterie-versorgte Applikationen handelt, ermöglicht dies eine längere Betriebsdauer mit mehr nutzbaren Ergebnissen. Dabei lassen sich sogar die Power Management Funktionen der All Programmable SoCs einsetzen, um den Leistungsverbrauch so zu skalieren, dass er den aktuellen Betriebsbedingungen entspricht. Wenn etwa ein smartes AR-Headset vom Benutzer gerade nicht getragen wird, kann das System in einen Sleep-Modus umgeschaltet werden, um die Batterielaufzeit zu verlängern.

Nicht zuletzt müssen die Applikationsentwickler auch die Pfade für Upgrades berücksichtigen, sowie die Unterstützung neuer Standards, Frameworks und Schnittstellen, sobald sie am Markt erscheinen. Der Einsatz von programmierbarer Logik eröffnet also eine technologische Roadmap zur Produktentwicklung, die sich im Hinblick auf die Reprogrammierbarkeit und Any-to-Any Interface-Fähigkeit einfach skalieren lässt. Im Kontext von Anwendungen der realen Welt war die schnelle Entwicklung von Algorithmen zur Gen-Sequenzierung einer der Gründe für die Wahl einer Cloud-basierten FPGA-Implementierung im Edico Genome Projekt.

Schlussfolgerung

Die Entwickler von Applikationen an der Edge und in der Cloud können nun erstmals die Vorteile der programmierbaren Logik mit Industrie-Standard Frameworks und Bibliotheken nutzen. Dies wird möglich durch die Kombination von Entwicklungs-Tools wie SDAccel und SDSoC mit den RAS- und Revision-Stack.

Dieser Beitrag stammt von unserem Partnerportal Elektronikpraxis.de

* Giles Peckham ist Regional Marketing Director bei Xilinx.

* Adam Taylor ist selbständiger Embedded Systems Consultant und Autor der MicroZed Chronicles zur Benutzung der Zynq-Reihe von Xilinx.

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 46040679)