OpenCL

für Intel FPGA Software-Entwicklung

BSPs für unsere Arria 10 und Stratix 10 FPGA Karten, die das Intel OpenCL SDK unterstützen

Übersicht

Die OpenCL-FPGA-Entwicklung ist ideal für Teams, die keine oder nur geringe Kenntnisse in der FPGA-Entwicklung haben. Es ist auch eine Lösung für jedes Team, das einen schnelleren Turnaround benötigt, als ein traditioneller HDL-Workflow bieten kann. OpenCL auf BittWare FPGA-Karten bietet einen größeren Entwicklerpool, um die Vorteile der fortschrittlichen Hardware unserer Produkte zu nutzen.

BittWare bietet eine Reihe von Intel FPGA-basierten Karten mit Arria 10- und Stratix 10-Bausteinen an, die das Intel OpenCL SDK über ein von BittWare angepasstes Board Support Package (BSP) unterstützen.

Sie fragen sich, ob Ihre bestehende CPU- oder GPU-basierte Anwendung von einer FPGA-Beschleunigung profitieren würde? Wir können einen Benchmark durchführen, um mögliche Leistungsverbesserungen abzuschätzen. Fragen Sie nach unseren Anwendungsoptimierungsservices, um loszulegen.

Flexibler Werkzeugfluss
Für software- oder hardwarebasierte Entwicklung

  • OpenCL-Unterstützung für Software-orientierte Kunden
  • Abstration für schnellere Entwicklung
  • Push-Button-Flow für FPGA-Executable, Treiber und API
  • Hinzufügen optimierter HDL-IP-Cores zu OpenCL-Designs als Bibliotheken

Was ist OpenCL?

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.

  1. Emulator zur Überprüfung der Funktionalitäten
  2. 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. ...
  3. Profil der Kernel-Leistung
  4. 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.

HDL vs. OpenCL Leistungsvergleich

Das CERN hat die Ergebnisse einer Studie veröffentlicht, in der zwei in HDL und OpenCL programmierte Algorithmen auf einer BittWare 385-Karte verglichen wurden.

Schnellere Entwicklung: 2,5 Monate vs. 2 Wochen

Leichtere Entwicklung: 3.400 Zeilen vs. 250 Zeilen

Ähnliche Leistung: 35x vs. 26-30x Beschleunigung

Das CERN stellte fest, dass selbst für HDL-fähige Teams, die OpenCL verwenden, die Vorteile darin liegen, dass eine kleinere Codebasis leichter zu aktualisieren ist. Auch die Nutzung der FPGA-Logik/DSP-Ressourcen war bei beiden Ansätzen vergleichbar.

Quelle: Rekonstruktion, Trigger und maschinelles Lernen für den HL-LHC Workshop am MIT "FPGAs als Koprozessoren für die Rekonstruktion" Folie 19.

Board Support Packages

Was ist ein BSP?

BittWare's Expertise in FPGA-basierter Hardware und Algorithmus-Beschleunigung ist in den OpenCL Board Support Packages konzentriert. Die On-Board-Ressourcen und die FPGA-Low-Level-Ressourcen werden von den BSPs automatisch genutzt, so dass sich der Programmierer auf den Algorithmus und nicht auf dessen physische Implementierung im FPGA konzentrieren kann.

Die BSP-Angebote von BittWare sind auf spezifische Anforderungen zugeschnitten. Für COMPUTE-intensive Anwendungen maximieren die HPC BSPs die Ressourcenauslastung des FPGAs. Zur Beschleunigung des Datenstroms bieten die NETWORK Streams-fähigen MAC BSPs einen Datenfluss direkt zur FPGA-Fabric für In-Stream-Bit-Operationen.

Intels OpenCL SDK in Kombination mit dem BSP von BittWare ermöglicht die Nutzung der neu verfügbaren OpenCL-Channel-Funktion. Channels sind ein OpenCL-Konstrukt, das Kernel-zu-Kernel- oder IO-zu-Kernel-Datenübertragungen mit hoher Bandbreite ermöglicht. Die hohe Bandbreite des lokalen Speichers der FPGA-Fabric kann durch diese OpenCL-Kanäle genutzt werden.

Vollständig integrierte Lösungen

Die OpenCL-fähigen FPGA-Beschleuniger von BittWare sind als vollständig integrierte und produktionsreife Lösungen erhältlich. Das BSP kann von einem einzigen Installationsprogramm auf den Entwicklungs- und Laufzeitsystemen installiert und bereitgestellt werden. BittWare bietet auch BSP Debug Kits an, die die Intel Quartus-II / OpenCL SDK Lizenzen für Kunden enthalten, die diese benötigen.

Die BittWare OpenCL BSPs enthalten auch mehrere Funktionen, die den Einsatz in Produktionssystemen erleichtern:

  • Status der Karte (Stromverbrauch und Temperatur)
  • Intel PCIe Hard IP-Cores (getestet auf Industriestandardsystemen)
  • Flash-Wiederherstellungsmechanismen

Wir bieten auch vorinstallierte, gebrauchsfertige, integrierte Server an, die alle Software- und Hardwarekomponenten enthalten.

HPC BSP

Das High Performance Computing BSP, oder HPC BSP, stellt die größere Menge an FPGA-Ressourcen für den Anwenderalgorithmus bereit.

Nutzen Sie die OpenCL-SDK-Funktionen, um die Auslastung der FPGA-Fabric zu maximieren, indem Sie mehrere parallele Instanzen Ihres optimierten OpenCL-Kernel-Codes replizieren.

Unterstützung von Kernel-zu-Kernel-Kanälen mit hoher Bandbreite

Typische Anwendungen:Nutzung der Ressourcen:
  • Verschlüsselung
  • Komprimierung
  • Etc.
  • PCIe-Host-Schnittstelle
  • On-board Global Memory Puffer

Kundenspezifischer BSP

BittWare kann auch kundenspezifische Board Support Packages für Ihre speziellen Anforderungen entwickeln. Die FPGA-Beschleuniger von BittWare unterstützen mehrere I/O-Protokolle. Unser Team von FPGA-Beschleunigungsexperten kann mit Ihrem Unternehmen zusammenarbeiten, um ein kundenspezifisches Board Support Package zu entwickeln.

Beschleuniger-Metriken

Die FPGA-Beschleuniger von BittWare, die mit OpenCL kompatibel sind, basieren auf drei FPGA-Familien: Stratix 10, Arria 10 und Stratix V. Bei der Auswahl eines FPGA-Beschleunigers, der den Anforderungen ihres Systems entspricht, müssen die Kunden zunächst die FPGA-Ressourcenanforderungen ihres Algorithmus auf der obersten Ebene und die Fähigkeiten des FPGA-Beschleunigers berücksichtigen.

BittWare bietet mehrere FPGA-Beschleuniger und Board Support Packages an, um diesen Anforderungen gerecht zu werden. Die folgenden Abschnitte beschreiben das BittWare BSP IP-Angebot.

Metrisch385395385A510T520N (L-Kacheln) (**)520N (H-Kacheln) (**)520N-MX (H-Fliese)
Host-zu-Global-Speicher-Bandbreite8-Spur-PCIe 2.08-Spur-PCIe 2.08-Spur-PCIe 3.016-Lane PCIe 3.0 (2x 8 Lanes)16-Lane PCIe 3.0 (*)16-Lane PCIe 3.0 (*)16-Lane PCIe 3.0 (*)
Globale Speichertiefe2x 4GB4x 8GB (*)Bis zu 2x 4GBBis zu 4x 4GB (*)4x 8GB4x 8GBHBM2 (*)
IO-KanäleNetzwerk: 2x 10GbE MAC (MAC BSP)Netzwerk: 4x 10GbE MAC (MAC BSP)Karte-zu-Karte: 2x 40Gbps serielle Verbindungen oder Netzwerk: 2x 10 GbE MAC (MAC BSP)Karte-zu-Karte: 2x 40Gbps serielle VerbindungenKarte-zu-Karte: 4x 40Gbps serielle VerbindungenKarte-zu-Karte: 4x 100Gbps serielle VerbindungenBoard-to-Board: 4x 100Gbps serielle Verbindungen (über QSFP28s)

(*) Erkundigen Sie sich nach Verfügbarkeit und Details
(**) Auch kompatibel mit 520C, aber keine Unterstützung für IO-Kanäle von Board zu Board

Unsere OpenCL-Erfahrung

Erfahrung und Innovation

Die Partnerschaft von BittWare mit Intel zur Unterstützung des OpenCL SDK ist die logische Fortsetzung von 20 Jahren Erfahrung in der Förderung der Hochsprachenprogrammierung von FPGAs. Die Systemherausforderungen der Kunden zu verstehen und den besten Ansatz zur Beschleunigung und Optimierung der Kundenanwendung zu identifizieren, liegt in der DNA von BittWare.

BittWare Fokus

BittWare glaubt, dass FPGA-basierte Produkte so sein sollten:

  • Intuitiv und einfach zu bedienen
  • Flexibel
  • Produktionsbereit
  • Einfacher Einsatz
  • Integriert in das System des Kunden

Wir sind davon überzeugt, dass OpenCL diesen Zielen dient, und wir freuen uns darauf, Sie erfolgreich zu sehen!

Ein Team von Experten für Systembeschleunigung

Bei BittWare haben wir ein erstklassiges Design- und Ingenieurteam zusammengestellt, das mit Ihnen zusammenarbeiten kann, um den Erfolg Ihres Programms sicherzustellen. Wir arbeiten am besten, wenn wir bereits in der frühen Entwicklungsphase eng mit unseren Kunden zusammenarbeiten und unsere verschiedenen Disziplinen nutzen, um eine Lösung termingerecht, im Rahmen des Budgets und innerhalb der Spezifikationen mit minimalem Risiko zu liefern.

BittWare Design Services Schlüsselwert:

  • Reduziertes Risiko
  • Niedrigere Kosten
  • Schnellere Markteinführung

Die Forschungs- und Entwicklungsabteilung von BittWare arbeitet ständig an neuen Lösungen für die Herausforderungen der Branche.

Vorkompiliertes AOCX

BittWare bietet vorkompilierte Pakete für alle Beispiel-Designs, die auf den Intel Examples Pages verfügbar sind.

Durchsuchen Sie unsere Produkte mit OpenCL-Unterstützung