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.

Anbieter zum Thema

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 verstpricht 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 verstpricht eine signifikante Performance-Steigerung bei entsprechenden Anwendungen.
(Bild: Clipdealer)

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.

(ID:45009878)