Entwicklungstools Erstmals OpenCL-Support für FPGAs von Altera

Redakteur: Holger Heller

Das erste Softwareentwicklungskit (SDK) für OpenCL (Open Computing Language) bietet Altera an. Damit wird die parallele FPGA-Architektur mit dem parallelen Programmiermodell von OpenCL kombiniert.

Firma zum Thema

Vince Hu, Altera: Ausnutzung des parallelen Programmiermodells von OpenCL für Alteras FPGA-Architektur möglich machen
Vince Hu, Altera: Ausnutzung des parallelen Programmiermodells von OpenCL für Alteras FPGA-Architektur möglich machen
( Altera)

Das SDK ermöglicht mit der Programmiersprache C vertrauten Entwicklern das schnelle und einfache Implementieren FPGA-basierter Applikationen mittels einer Hochsprache. Das Kit von Altera erlaube die Zusammenarbeit mit dem Host-Prozessor, um eine schnellere Parallelrechenleistung zu erzielen – und das zu einem Bruchteil der Leistungsaufnahme im Vergleich zu anderen Hardware-Alternativen, hieß es seitens Vince Hu, President Product und Corporate Marketing bei Altera.

Die System-Performance wird heute mit verschiedenen Ansätzen erhöht: von Single-Core-CPUs mit immer höheren Frequenzen, über Multicore-CPUs bis hin zu parallelen Prozessor-Arrays. Hu dazu: „Diese Entwicklung bringt uns zu modernen FPGAs, mit ihrer feinen Granularität und massiv parallelen Logik-Arrays, für schnelle, parallele Berechnungen. Unser OpenCL SDK ermöglicht den Kunden eine einfach Adaptierung von FPGAs und damit die Nutzung der entsprechenden Performance- und Effizienz-Vorteile.“

OpenCL für die parallele Programmierung

OpenCL ist ein offener, lizenzfreier Standard für eine plattformübergreifende parallele Programmierung von Hardwarebeschleunigern, einschließlich CPUs, GPUs und FPGAs. Das OpenCL SDK von Altera biete einen einheitlichen High-Level-Flow für die Hardware- und Softwareentwicklung, was die zeitraubenden Aufgaben innerhalb eines typischen HDL-Flows automatisiert.

Der OpenCL-Flow konvertiert die Kernel-Funktion von OpenCL automatisch in kundenspezifische FPGA-Hardware-Beschleuniger, fügt IP-Funktionen hinzu, realisiert die Verbindungslogik und erzeugt die FPGA-Programmierdatei. Zum SDK gehören Bibliotheken, die mit den OpenCL API-Aufrufen innerhalb eines Host-Programmes, das auf der CPU läuft, verlinkt sind. Durch die automatische Ausführung der genannten Schritte, können sich Entwickler auf ihre eigentliche Entwicklung mit der Definition und Iteration der Algorithmen konzentrieren, statt sich um das Hardware-Design zu kümmern.

Die Portierbarkeit des OpenCL-Codes ermöglicht die einfache Migration der Designs auf verschiedene FPGAs oder SoC-FPGAs, bei sich ändernden Anforderungen. Bei SoC-FPGAs ist die CPU in das FPGA eingebettet, womit eine Single-Chip-Lösung möglich wird, die eine höhere Bandbreite und geringere Latenzzeit zwischen der Host-CPU und dem FPGA ermöglicht, im Vergleich zu zwei diskreten Bausteinen.

FPGAs für höchste Parallelisierung in heterogenen Plattformen

Mit dem OpenCL SDK von Altera können Programmierer die parallele, fein granulierte FPGA-Architektur nutzen, um das parallele Computing zu beschleunigen. Anders als bei CPUs und Standard-GPUs, wo parallele Threads über ein Array von Cores ausgeführt werden, erlauben FPGAs die Umformung von Kernel-Funktionen in spezielle Hardware-Schaltungen (mit optimierter Pipeline-Struktur).

Mit dieser Pipeline-Parallelisierung ist Multithread-Verarbeitung möglich. Jede der Pipelines kann mehrfach repliziert werden, um die parallele Verarbeitung noch weiter zu steigern, indem mehrere Threads parallel ausgeführt werden können. Daraus resultiert, dass eine FPGA-basierte Lösung eine um den Faktor 5 höhere Performance/Watt-Rate bietet, im Vergleich zu alternativen Hardware-Implementierungen.

Altera arbeitet derzeit mit mehreren Partnern zusammen, um kommerziell verfügbare Board-Lösungen bereitzustellen. Derzeit werden von BittWare und Nallatech Boards mit Unterstützung für Altera OpenCL entwickelt. Weitere Third-Party-Boards werden von zukünftigen Versionen des SDK unterstützt werden.

Bei Altera-internen Tests zeigte sich beispielsweise, dass das SDK die Entwicklungszeit für eine Video-Verarbeitungsanwendung um Monate verkürzen konnte, während anderseits die Performance in einer Finanzapplikation gegenüber einer CPU um den Faktor 9 erhöht wurde.

Artikelfiles und Artikellinks

(ID:36640120)