Die OpenCL-Software-Sprache
Der Open Computing Language (OpenCL)-Standard ist das erste offene, lizenzgebührenfreie, einheitliche Programmiermodell zur Beschleunigung von Algorithmen auf heterogenen Systemen. OpenCL-Software ermöglicht die Verwendung einer C-basierten Programmiersprache für die Entwicklung von Code auf verschiedenen Plattformen wie Zentraleinheiten (CPUs), Grafikprozessoren (GPUs), digitalen Signalprozessoren (DSPs) und feldprogrammierbaren Gate-Arrays (FPGAs).
Der OpenCL-Industriestandard ermöglicht es Entwicklungsteams, auf FPGA-Technologie basierende Produkte anzusteuern, ohne sich mit den Details auseinandersetzen zu müssen, die Hardware- und Firmware-Ingenieure bei der HDL-Programmierung beachten mussten. Vorhandener CPU/GPU C- oder OpenCL-Code kann mit dem Intel OpenCL Software Development Kit neu kompiliert werden und sofort die FPGA-Hardwareressourcen nutzen.
Bei der Portierung von bestehendem Code oder der Entwicklung neuer Algorithmen ist OpenCL-Software der neue Standard, der die Markteinführungszeit für FPGA-basierte Beschleunigerprodukte verkürzt.
FPGA-Programmierung mit OpenCL
OpenCL ermöglicht es dem Programmierer, einen dedizierten FPGA-Beschleuniger zu konstruieren, indem er automatisch Optimierungen auf Hardwareebene im OpenCL-Code durchführt. Die wichtigsten FPGA-Funktionen und -Vorteile sind in der Syntax abstrahiert, und der Programmierer verwendet den Compiler, um hochparallele Anwendungen zu erstellen. Die rekonfigurierbare FPGA-Logik ermöglicht die Generierung von dedizierten und optimierten Blöcken für hardwarespezifische Funktionalitäten.
In der Vergangenheit wurden FPGAs als Integer-Arithmetik-Beschleuniger eingesetzt. Die Arria 10 FPGA-Familie bietet nun auch höhere FLOPS mit dedizierten Fließkomma-Ressourcen (bis zu 1,5 TFLOPS), die von der OpenCL-Software nahtlos genutzt werden können, so dass eine ganze Reihe neuer Anwendungen von FPGAs profitieren.
Frühere Generationen von FPGA-Beschleunigern waren durch ihren IO-Durchsatz oder ihre Speicherbandbreite begrenzt. Das OpenCL Software Development Kit hilft dabei, die hohe Rechenleistung der FPGA-Logik mit der Geschwindigkeit der IOs in Einklang zu bringen und ermöglicht durch die OpenCL-Kanalerweiterung Hochgeschwindigkeitsdatenübertragungen von Kernel zu Kernel und von Kernel zu IOs.
Die Kanalfunktion in Kombination mit der hochflexiblen Speicherkonfiguration, bei der interner und On-Board-Speicher anders als bei GPUs an die Anforderungen der Anwendung angepasst werden können, bietet die Plattform, um BittWare FPGA-Beschleuniger als optimierte Stream-Computing-Knoten in den Infrastrukturen der Kunden einzusetzen.
OpenCL Software Development Kit ermöglicht:
- Tausende von parallelen Kernelausführungen
- Konfigurierbare FPGA-Logik, optimiert für Ganzzahlarithmetik
- Neue dedizierte Fließkomma-FPGA-Ressourcen (bis zu 1,5 TFLOPS)
- Konfigurierbarer lokaler und globaler Speicher
- Kernel-zu-Kernel- / Kernel-zu-IO-Kanäle mit hoher Bandbreite
- Geringe Leistung
Intel-Werkzeugfluss
Das Intel OpenCL SDK ist eine Entwicklungsumgebung für den Softwareprogrammierer; FPGA-Designüberlegungen werden abstrahiert und automatisch vom Compiler verarbeitet. Der Ablauf basiert auf einem Debug- und Optimierungszyklus in der Software, bei dem die FPGA-Kompilierung nur eine begrenzte Anzahl von Malen durchgeführt werden muss, wenn der größte Teil der Anwendung entworfen und optimiert wurde.
- Emulator zur Überprüfung der Funktionalitäten
- Optimierung von OpenCL für die FPGA-Architektur - über 300 Optimierungen
a. Erhöhung der Parallelität
b. Sicherstellung der Pipeline
c. FPGA-Hardwareressourcen nutzen
d. ... - Profil der Kernel-Leistung
- Kompilieren zum FPGA-Hardware-Ziel
Das Intel SDK für OpenCL ist jetzt in Produktion und ermöglicht es Programmierern, durch einfache Designrichtlinien performanten OpenCL-Code auf Gate-Ebene zu erhalten und Kernel-Code mit minimalem Aufwand von Plattform zu Plattform zu portieren. Das OpenCL SDK ist der effizienteste Weg zur Produktion und zum Einsatz von FPGA Accelerator-Lösungen.