Anzeige
Anzeige
Anzeige

Programmierbare Parallelität

FPGA-Designs mit OpenCL implementieren

Mikrocontroller, Prozessoren und DSPs geraten an ihre Leistungsgrenzen, da Taktfrequenzen und Mehrfach-Cores nicht mehr mit der Zunahme des Bedarfs an Rechenleistung Schritt halten können. Hauptlimitierung ist die Leistungsaufnahme der Halbleiter – die sogenannte ‚Power Wall‘, die auch mit modernster Prozesstechnologie nur schwer durchbrochen werden kann. Daher werden in zunehmenden Maße Beschleunigungstechniken wie z.B. FPGAs eingesetzt, die durch massive Parallelisierung von Befehlen die gewünschten Leistungssteigerungen bei gleichzeitiger Energieeffizienz liefern. Bisher war die Programmierung von FPGAs jedoch spezialisierten HDL Entwicklern vorbehalten. OpenCL bietet Softwareprogrammierern als offener Standard nun die Möglichkeit Parallelverarbeitung in FPGAs ohne spezielle Hardware Programmierkenntnis zu entwickeln.
Der Bereich der programmierbaren Lösungen beginnt im einfachsten Fall mit Single Core CPUs die mittels Software programmiert werden, und deren Maschinen Code sequentiell auf dem CPU Kern ausgeführt wird. DSPs liefern in der Regel bereits Parallelisierung durch die Bereitstellung von mehreren Verarbeitungseinheiten, die die zumindest teilweise parallele Ausführung von Maschinencode gewährleisten. Hier muss jedoch ein Befehlsdispatcher dafür sorgen, dass die Befehle sinnvoll parallelisiert und die Ergebnisse dann auch wieder zusammengeführt werden. Über diese herkömmlichen Prozessorarchitekturen hinaus, verlagert sich der Schwerpunkt für software-programmierbarer Bausteine nun auf Hochparallele Multicore-Bausteine die mehrere einfache Prozessoren enthalten. Zu diesen Bausteinen zählen Multicore-CPUs mit 2, 4 oder 8 Cores sowie GPUs mit Hunderten einfacher Cores, die für eine parallele Datenverarbeitung ausgelegt sind. Um mit diesen Multicore-Bausteinen eine hohe Leistungsfähigkeit zu erzielen, muss der Programmierer die Anwendungen grundsätzlich parallel codieren. Jedem Core muss ein Aufgabenbereich zugewiesen werden, damit alle Cores zusammenarbeiten können, um eine bestimmte Berechnung durchzuführen. Genau das machen auch FPGA-Entwickler, um ihre High-Level-Systemarchitekturen zu erstellen. Obwohl FPGAs somit eine hervorragende Leistung in der Ausführung von Parallelprozessen darstellen ist der Mangel an Hardware Description Language (HDL) Entwicklern die größte Limitierung für den Einsatz von FPGAs. Mit OpenCL können nun Softwareentwickler in die Lage versetzt werden ohne spezifische Hardwarekenntnisse die parallele Verarbeitung in FPGAs zu programmieren.

Plattformübergreifende Parallel-Programmierung

Um die Entwicklung parallel ablaufender Programme für die Multicore-Ära zu unterstützen, wurde OpenCL (Open Computing Language) als plattformübergreifender Standard für die Parallel-Programmierung entwickelt. Der Standard bietet die Möglichkeit, parallele Algorithmen zu beschreiben, die in FPGAs implementiert werden – und das auf einer wesentlich höheren Abstraktionsebene als dies mit Hardware Description Languages (HDLs) wie VHDL oder Verilog der Fall wäre. Obwohl viele High-Level Synthese-Tools für den hohen Abstraktionsgrad zur Verfügung stehen, weisen sie alle das gleiche Problem auf: sie versuchen, ein Ablaufprogramm in C zu verwenden und erzeugen eine parallele HDL-Implementierung. Der OpenCL-Standard löst besonders dieses Probleme, indem der Programmierer den Parallelismus genau spezifizieren und steuern kann. OpenCL-Anwendungen bestehen prinzipiell aus zwei Teilen: Das OpenCL Host-Programm ist eine reine Software-Routine, die in Standard C/C++ geschrieben ist und auf jedem Mikroprozessor läuft. Dieser Prozessor kann z.B. ein Embedded-Soft-Prozessor in einem FPGA, ein Hard-ARM-Prozessor oder ein externer x86-Prozessor sein, der über einen PCIe Bus mit dem FPGA verbunden ist. An einem bestimmten Punkt während der Ausführung dieser Host-Software-Routine kann eine rechenintensive Funktion auftreten, die von der hochparallelen Beschleunigung auf einem eher parallel ausführenden Baustein (GPU, FPGA etc.) profitieren würde. Die zu beschleunigende Funktion wird als OpenCL Kernel bezeichnet. Diese Kernels sind in Standard C geschrieben, aber mit Konstrukten kommentiert, die Parallelismus und Speicherhierarchie festlegen. Bild 2 zeigt die Vektoraddition zweier Arrays (a und b). Die Ergebnisse werden zurück in ein Ausgangs-Array geschrieben. Parallele Threads arbeiten auf jedem Element des Vektors und ermöglichen eine schnellere Berechnung des Ergebnisses, als wenn es mit einem Baustein beschleunigt wird, der einen feinkörnigen Parallelismus aufweist (wie z.B. ein FPGA). Das Host-Programm hat Zugriff auf Standard OpenCL APIs, über das Daten zum FPGA übertragen werden, die den Kernel des FPGAs aufrufen und die resultierenden Daten zurückführen. In FPGAs können Kernel-Funktionen in Deeply-Pipelined-Hardwareschaltkreise umgewandelt werden, die mithilfe des Pipeline-Parallelismus ein Multithreading ermöglichen. Jede dieser Pipelines kann viele Male wiederholt werden, um noch mehr Parallelismus bereitzustellen, als es mit einer einzigen Pipeline möglich wäre.

Implementierung des OpenCL-Standards in ein FPGA

Das Design für FPGAs mit einer OpenCL-Beschreibung bietet Vorteile im Vergleich zu herkömmlichen HDL-basierten Methoden. Die Entwicklung software-programmierbarer Bausteine erfolgt üblicherweise in der Reihenfolge: Konzeption einer Idee, Codierung des Algorithmus in einer Hochsprache wie C und Einsatz eines automatischen Compilers zum Erstellen des Befehlssatzes. Die Altera SDK für OpenCL bietet eine Entwicklungsumgebung für die Implementierung von OpenCL-Anwendungen in FPGAs (Bild 3). Dieser Ansatz unterscheidet sich von der ursprünglichen FPGA-basierten Entwicklung, bei der Entwickler zyklusweise Beschreibungen der Hardware erstellen müssen, um Algorithmen implementieren zu können. Der herkömmliche Ablauf erfordert Datenpfade, Zustandsmaschinen zur Steuerung dieser Datenpfade, eine Verbindung zu Low-Level IP-Cores über System-Level-Tools und das Handling der Timing-Closure-Probleme, da externe Schnittstellen feste Vorgaben einbringen, die erfüllt werden müssen. Die Altera SDK für OpenCL führt alle diese Schritte automatisch aus. Ein solcher Designablauf ermöglicht den Übergang auf neue FPGAs, die eine bessere Leistungsfähigkeit und höhere Kapazitäten bieten, da der OpenCL Compiler die gleiche High-Level-Beschreibung in Pipelines überträgt, die die Vorteile der neuen FPGAs nutzen. Der OpenCL Standard auf einem FPGA kann für eine deutlich höhere Leistungsfähigkeit bei geringerem Stromverbrauch sorgen, als es mit heutigen Hardware-Architekturen (CPU, GPUs etc.) möglich ist.

Anzeige

Empfehlungen der Redaktion

Das könnte Sie auch interessieren

An einfache autonome Roboter, wie Staubsauger oder Rasenmäher hat man sich inzwischen gewöhnt. Chirurgische Eingriffe durch einen autonomen Roboter erscheinen dagegen noch eher als Science-Fiction. Eine Forschungsgruppe vom Sheikh Zayed Institute for Pediatric Surgical Innovation am Children’s National Health System in Washington DC und Johns Hopkins Universität in Baltimore, haben nun eine Hürde auf dem Weg zum autonomen OP-Roboter genommen. Ihr ‚Smart Tissue Autonomous Robot‘ (Star) ist der erste Roboter, der weiches Gewebe autonom nähen kann – und das auch noch besser als ein Chirurg. ‣ weiterlesen

Anzeige

www.raytrix.de

Anzeige

Auf der Vision in Stuttgart wird vom 8.-10. November eines der Trendthemen Spectral Imaging sein. So präsentieren sich z.B. Allied Vision, Stemmer Imaging und Ximea auf der Weltleitmesse für Bildverarbeitung als Grenzgänger zwischen SWIR und NIR und zeigen dort verschiedene Demos, die … ‣ weiterlesen

www.sps-magazin.de

Anzeige

20mm flache Flächenleuchte mit 820x820mm aktiver Leuchtfläche und einer Blitzleistung von 360W für Auf- und Durchlichtanwendungen. Die Leuchte arbeitet über ein Kantenbeleuchtungssystem mit seitlichen High-Power LED’s, dessen Licht durch den internen Flächenlichtleiter gleichmäßig verteilt wird. ‣ weiterlesen

www.planistar.de

Anzeige

Leuchte Triangulum für Messungen und Prüfungen an Kabeln, Leitungen, Rohren und anderen runden Objekten. Eine Kombination aus 3 Flächenleuchten mit Durchbrüchen und einem rundem Diffusor bilden eine ideale Einheit zum Erfassen von runden Oberflächen. Zwecks der sehr unterschiedlichen Anwendungsmöglichkeiten wird diese immer spezifisch auf die Messaufgabe der Kunden angepasst. ‣ weiterlesen

www.planistar.de

Anzeige

Die AMB – Internationale Ausstellung für Metallbearbeitung – findet vom 13. bis 17. September auf dem Stuttgarter Messegelände statt. Neben den klassischen Fertigungsthemen deckt die Messe auch Querschnittsthemen, wie z. ‣ weiterlesen

www.messestuttgart.de

Anzeige

Die X-Mode-4.0-Dekodierungsalgorithmen bieten ausgereifte Funktionen zum Auffinden, Analysieren und Rekonstruieren von Symbolen ganz ohne Konfigurationsaufwand. Die Algorithmen zum Dekodieren beliebiger Symbole (lineare 1D/2D-Codes oder Direktmarkierungen) wurden unabhängig von deren Zustand mit dem Ziel entwickelt, die Leseleistung bei schlecht lesbaren Codes und schwierigen Trägermaterialien deutlich zu verbessern. ‣ weiterlesen

Anzeige

www.microscan.com

Anzeige

Die MVmicro DIG Lasermodule sind mit einem Microcontroller bestückt und haben Gehäuseabmessungen von 90x19mm. Der Microcontroller kann über eine RS232-Schnittstelle mit dem Modul kommunizieren und die Laserparameter konfigurieren. So ist es u. ‣ weiterlesen

www.lasercomponents.de

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige