OpenCL™ - BSP - Support-Center
Produktabkündigungshinweis
Intel stellt Intel® FPGA SDK für OpenCL™ ein. Weitere Informationen finden Sie in der Benachrichtigung über die Einstellung von Produkten (PDN2219).
Auf der OpenCL BSP Support-Seite finden Sie Informationen zur Planung, zum Design und zur Implementierung Ihres OpenCL™™ BSP sowie einige Tipps und Tricks zum Debuggen.
1. Ändern Sie ein Referenzdesign
Erste Schritte
Um mit der BSP-Entwicklung zu beginnen, stellen Sie sicher, dass Sie die folgenden Schritte ausführen:
- Vergewissern Sie sich, dass die Software Intel® FPGA SDK für OpenCL™ und Intel® Quartus® installiert ist.
- Stellen Sie sicher, dass die Tool-Version, die mit der OpenCL-Referenz-BSP™ übereinstimmt, verfügbar ist.
- Bestätigen Sie den Zugriff auf die vollständige Intel® Quartus®Softwarelizenz.
Wählen Sie ein Referenzdesign aus
Wählen Sie das Referenzdesign, das zu Ihrer benutzerdefinierten Plattform passt
Intel unterstützt die OpenCL-Referenz-BSP-Designs™ für die folgenden Plattformen. Sie können auch den OpenCL™ BSP-Portierungsleitfaden für eine bestimmte Plattform anzeigen:
- Stratix® V PCIe* Entwicklungskit – Leitfaden für die Portierung des Intel® FPGA SDK für OpenCL™ anzeigen Stratix® V Network Reference Platform Porting
- Intel® Arria® 10 PCIe Entwicklungskit – Intel® FPGA SDK für OpenCL™ anzeigen Intel® Arria® 10 GX FPGA Entwicklungskit Referenzplattform-Portierungsanleitung
- Intel® Arria® 10 SoC Entwicklungskit – Sehen Sie sich das Intel® FPGA SDK für OpenCL™ an Intel® Arria® 10 SoC Entwicklungskit Referenz Plattform-Portierung
- Intel® Stratix® 10 PCIe* Entwicklungskit – Sehen Sie sich das Intel® FPGA SDK für OpenCL™ an Intel® Stratix® 10 GX FPGA Development Kit Referenzplattform-Portierungsanleitung
Ein Referenzdesign ändern
Beginnen Sie mit der Modifizierung des Referenzdesigns für Ihre Plattform, indem Sie die Schritte in den OpenCL BSP-Portierungsleitfäden befolgen. Es wird empfohlen, nach Abschluss der Designänderungen zu versuchen, den ersten Kernel zu kompilieren. In der Regel verwenden wir einen Kernel namens Boardtest, der verschiedene Schnittstellen des BSP testet. Informationen zum Boardtest und zu den generischen BSP-Erstellungsschritten finden Sie im folgenden Leitfaden:
Intel® FPGA SDK für OpenCL™ Custom Platform Toolkit Benutzerhandbuch (PDF)
Empfohlene Schritte zum Aufbau eines BSP:
- Kompilieren Sie den Boardtest im "flachen" Fluss, um eine zeitlich geschlossene ".aocx"-Datei zu generieren
- Überprüfen Sie die ".aocx"-Datei, indem Sie den Boardtest ausführen und die vom Test erwarteten Schnittstellenbandbreite überprüfen
- Beginnen Sie mit der Arbeit an der Grundplanung für den "Basis"-Build, um ein garantiertes OpenCL-BSP mit geschlossenem Timing zu erstellen
2. Raumplanung und zeitlicher Abschluss
Erste Schritte
In OpenCL müssen wir am Timing für zwei verschiedene Revisionen des Projekts arbeiten – die flache und die grundlegende Revision. Eine flache Revision ist diejenige ohne Partitionen oder Logiksperrbereiche und verwendet die Datei hardware/flat.qsf, um sie zu implementieren. Während die Basisrevision diejenige ist, die die Partitionierung und die Logiksperren enthält und die Datei hardware/base.qsf verwendet, um sie zu implementieren. Wir empfehlen Ihnen, zuerst eine Timing-Clean-Flat-Revision als guten Anfang zu erhalten und dann an der Grundrissplanung zu arbeiten, um eine Timing-Clean-Basisüberarbeitung des Designs zu erhalten.
Weitere Details zum Kompilierungsablauf finden Sie im Abschnitt OpenCL BSP Kompilierungsablauf im Intel® FPGA SDK für OpenCL™ ™ Board Support Package Floorplan Optimization Guide.
Grundriss-Trennwand
Beginnen Sie mit einer flachen Kompilierung, um zu verstehen, wo alle Hauptkomponenten des BSP auf natürliche Weise platziert werden (insbesondere die IP-Blöcke (Intellectual Property) mit E/A-Verbindungen wie PCIe* oder DDR-Speicher).
Weitere Richtlinien hierzu finden Sie im Abschnitt Guidelines for OpenCL BSP Floorplanning im Intel® FPGA SDK for OpenCL™ ™ Board Support Package Floorplan Optimization Guide.
Ausführliche Informationen finden Sie auch im Benutzerhandbuch zur partiellen Neukonfiguration.
PR-Region ändern
Beginnen Sie während der Basiskompilierung mit der Logiksperrregion im Kernel, die freeze_wrapper_inst|kernel_system_inst enthält. Verwenden Sie den flachen Kompilier- und Chipplaner, um die Größe und Position der BSP-Hardware zu ermitteln. Versuchen Sie, mithilfe des Logiksperrbereichs mehr Ressourcen für die kernel_system zu reservieren.
Weitere Richtlinien hierzu finden Sie im Abschnitt Guidelines for OpenCL BSP Floorplanning im Intel® FPGA SDK for OpenCL™ ™ Board Support Package Floorplan Optimization Guide.
Behebung von Timing-Verstößen
Um Timing-Verstöße im Design zu beheben, müssen Sie möglicherweise Pipeline-Phasen zwischen IP-Kernen hinzufügen.
Weitere Richtlinien finden Sie unter den folgenden Links:
Setup/Hold-Einschränkungen
Die Dateien .failing_paths.rpt und .failing_clocks.rpt im Ausgabeverzeichnis listen die wichtigsten Fehler im Entwurf auf. Wenn in einigen Pfaden ein konsistenter Fehler auftritt, sollten Sie in der Datei /hardware/top.sdc eine minimale oder maximale Verzögerungseinschränkung für diesen kritischen Pfad festlegen.
Bei verwandten Problemen können Sie sich auf die folgende Problemumgehungsmethode auf der Seite Wissensdatenbank beziehen: Wie schließe ich das Timing bei konkurrierenden Warte- und Setup-Verstößen in Arria 10?
3. MMD- und OpenCL-Dienstprogramme™
Entwicklung oder Modifikation von MMD-Quellen
Die MMD-Softwarebibliothek implementiert grundlegende Ein-/Ausgabe (I/O) zwischen dem Host und der Beschleunigungskarte und stellt Schnittstellen wie Öffnen, Lesen und Schreiben bereit. Der MMD-Bibliothekstreiber wird im Windows* 64- oder Linux* 64-Format gespeichert, und der Quellcode wird im Quellordner gespeichert.
Weitere Informationen finden Sie im Abschnitt Erstellen der MMD-Bibliothek im Benutzerhandbuch Intel® FPGA SDK für OpenCL™ Custom Platform Toolkit.
Support für Dienstprogramme
OpenCL-Dienstprogramme™ ermöglichen es Ihnen, den Board-Zugriff mit Intel® FPGA SDK für OpenCL™ durchzuführen. Dazu gehören aocl install, aocl deinstall, aocl diagnose, aocl program und aocl flash.
Weitere Informationen finden Sie im Abschnitt Bereitstellen Intel® FPGA SDK für OpenCL Utilities im Benutzerhandbuch Intel® FPGA SDK für OpenCL™ ™ Custom Platform Toolkit.
Nachdem Sie die Software-Dienstprogramme und die MMD-Schicht erstellt haben, muss das Hardwaredesign getestet werden. Die Standardmethode besteht darin, den boardtest-Kernel zu generieren und auf dem Board auszuführen.
Weitere Informationen finden Sie im Abschnitt Testen des Hardwaredesigns im Benutzerhandbuch Intel® FPGA SDK für OpenCL™ Custom Platform Toolkit.
4. Debuggen
Board-Bring-Up
Dieser Abschnitt hilft Ihnen bei der Fehlerbehebung, während Sie entweder Intel® FPGA Entwicklungskits oder Ihre eigenen benutzerdefinierten Mainboards aufrufen.
Um einige bekannte Probleme herauszufinden, die beim Aufrufen Ihrer Mainboards auftreten können, lesen Sie die folgenden Abschnitte in AN 807: Konfigurieren des Intel® Arria® 10 GX FPGA Development Kit für das Intel® FPGA SDK für OpenCL™ Anwendungshinweis:
Grundriss und Timing
Tipps und Tricks, wie Sie minimalen Platz für die statische Logik verwenden und mehr Platz für Ihren OpenCL-Kernel lassen können, finden Sie im AN 824: Intel® FPGA SDK for OpenCL™ Board Support Package Floorplan Optimization Guide.™
Laufzeit-Debugging
Es gibt bestimmte Umgebungsvariablen, die festgelegt werden können, um beim Ausführen der Hostanwendung mehr Debuginformationen abzurufen. Dabei handelt es sich um Intel® FPGA SDK für OpenCL-spezifische™ Umgebungsvariablen, mit denen Probleme mit benutzerdefinierten Plattformdesigns diagnostiziert werden können.
In der folgenden Tabelle sind alle diese Umgebungsvariablen aufgeführt und im Detail beschrieben.
Umgebungsvariable |
Beschreibung |
ACL_HAL_DEBUG |
Legen Sie diese Variable auf einen Wert von 1 bis 5 fest, um die Debugausgabe der Hardwareabstraktionsschicht (HAL) zu erhöhen, die direkt mit der MMD-Ebene verbunden ist. |
ACL_PCIE_DEBUG |
Legen Sie diese Variable auf einen Wert von 1 bis 10000 fest, um die Debugausgabe der MMD zu erhöhen. Diese Variableneinstellung ist nützlich, um zu bestätigen, dass das Versions-ID-Register korrekt gelesen wurde und die UniPHY IP-Cores kalibriert sind. |
ACL_PCIE_JTAG_CABLE |
Legen Sie diese Variable so fest, dass das standardmäßige quartus_pgm-Argument, das die Kabelnummer angibt, überschrieben wird. Die Standardeinstellung ist Kabel 1. Wenn mehrere Intel® FPGA Download Cable vorhanden sind, können Sie ein bestimmtes Kabel angeben, indem Sie diese Variable setzen. |
ACL_PCIE_JTAG_DEVICE_INDEX |
Legen Sie diese Variable so fest, dass das standardmäßige quartus_pgm-Argument überschrieben wird, das den FPGA Geräteindex angibt. Standardmäßig hat diese Variable den Wert 1. Wenn der FPGA nicht das erste Gerät in der JTAG-Kette ist, können Sie den Wert anpassen. |
ACL_PCIE_USE_JTAG_PROGRAMMING |
Stellen Sie diese Variable so ein, dass die MMD gezwungen wird, die FPGA mithilfe des JTAG-Kabels anstelle einer partiellen Neukonfiguration neu zu programmieren. |
ACL_PCIE_DMA_USE_MSI |
Stellen Sie diese Variable ein, wenn Sie MSI für DMA-Übertragungen (Direct Memory Access) unter Windows* verwenden möchten. |
Signal-Tap-Debugging
Da OpenCL-Designs™ die Simulationsfunktion nicht unterstützen, ist die Verwendung des Signal Tap Logic Analyzer die beste Möglichkeit, diese Designs zu debuggen.
Zum Debuggen von Designs, bei denen der Kernel hängen bleibt oder ein Problem im Zusammenhang mit der Speicherschnittstelle oder einem AOCL-Diagnosefehler auftritt, wird die Verwendung des Signal Tap Logic Analyzer empfohlen.
Weitere Informationen über den Signal Tap Logic Analyzer finden Sie im Abschnitt Design Debugging with the Signal Tap Logic Analyzer im Benutzerhandbuch Debug Tools.
Führen Sie die folgenden Schritte aus, um die Signal Tap-Datei zum BSP-Design hinzuzufügen:
1. Öffnen Sie die Signal Tap-GUI und fügen Sie alle zu analysierenden Signale hinzu.
2. Speichern Sie die STP-Datei im selben Verzeichnis wie die Intel® Quartus® Softwareprojektdatei.
3. Fügen Sie die folgenden Befehlszeilen in Ihre flat.qsf ein:
- set_global_assignment -name ENABLE_SIGNALTAP AN
- set_global_assignment -name USE_SIGNALTAP_FILE <file_name>.stp
- set_global_assignment -name SIGNALTAP_FILE <file_name>.stp
4. Kompilieren Sie den Kernel über die AOCL-Befehlszeile neu.
Wissensdatenbank-Lösung
Intel® Arria® 10 Geräte
Intel® Stratix® 10 Geräte
Bekannte Probleme
Zusätzliche Ressourcen
Design-Debugging mit systeminternen Quellen und Prüfpunkten im Benutzerhandbuch der Debug-Tools
AN 799: Schnelles Intel® Arria® 10 Design-Debugging mit Signalprobe und Rapid Recompile
5. Empfohlene Lektüre und Schulung
OpenCL-Schulungen™
- Einführung in Parallel Computing mit OpenCL™ auf Intel® FPGAs
- Ausführen von OpenCL™ auf Intel® FPGAs
- Erstellen von benutzerdefinierten Plattformen für Intel® FPGA SDK für OpenCL™: Board Support Package (BSP) Inhalt
- Entwicklung eines benutzerdefinierten OpenCL™ Board Support Package (BSP)
- OpenCL™ Board Support Package (BSP) Schulungen
- Andere OpenCL-Schulungskurse™
OpenCL™ – Videos
Titel |
Beschreibung |
---|---|
Dieses Video beschreibt das Out-of-Box-Verfahren zum Ausführen von zwei Anwendungen, OpenCL HelloWorld und OpenCL™™ Fast Fourier Transform (FFT) auf dem Cyclone® V SoC unter Verwendung eines Windows* Rechners. |
|
Dieses Video beschreibt das Out-of-Box-Verfahren zum Ausführen von zwei Anwendungen, OpenCL HelloWorld und OpenCL™™ FFT, auf dem Cyclone® V SoC unter Verwendung eines Windows* Rechners. |
|
Dieses Video beschreibt das Out-of-Box-Verfahren zum Ausführen von zwei Anwendungen, OpenCL HelloWorld und OpenCL™™ FFT, auf dem Cyclone® V SoC unter Verwendung eines Windows* Rechners. |
|
Dieses Video beschreibt das Out-of-Box-Verfahren zum Ausführen von zwei Anwendungen, OpenCL HelloWorld und OpenCL™™ FFT, auf dem Cyclone® V SoC unter Verwendung eines Windows* Rechners. |
|
Dieses Video beschreibt das Out-of-Box-Verfahren zum Ausführen von zwei Anwendungen, OpenCL HelloWorld und OpenCL™™ FFT, auf dem Cyclone® V SoC unter Verwendung eines Windows* Rechners. |
|
So verpacken Sie benutzerdefinierte Verilog-Module/-Designs als OpenCL-Bibliotheken™ |
In dem Video wird erläutert, warum Kunden diese Funktion möglicherweise verwenden können, um ihre benutzerdefinierten Verarbeitungsblöcke (RTL) im OpenCL-Kernelcode™ zu speichern. Im Video werden das Designbeispiel wie die make-Dateien und Konfigurationsdateien sowie der Kompilierungsablauf erläutert. Das Video zeigt auch eine Demo des Designbeispiels. |
OpenCL™ auf Intel FPGA SoC FPGA (Linux Host) – Teil 1 – Tools Download und Setup |
In diesem Video erfahren Sie, wie Sie die Tools herunterladen, installieren und konfigurieren, die für die Entwicklung von OpenCL-Kernels™ und Hostcode für Intel FPGA SoC-FPGAs erforderlich sind. |
In diesem Video erfahren Sie, wie Sie eine OpenCL-Beispielanwendung herunterladen und kompilieren, die auf den Emulator abzielt, der in den Intel FPGA OpenCL™™ integriert ist. |
|
In diesem Video wird gezeigt, wie Sie den OpenCL-Kernel™- und Hostcode für die FPGA und den Prozessor des Cyclone® V SoC-FPGA kompilieren. |
|
OpenCL™ auf Intel FPGA SoC FPGA (Linux Host) – Teil 4 – Setup der Laufzeitumgebung |
In diesem Video erfahren Sie, wie Sie das Cyclone® V SoC-Mainboard so einrichten, dass das OpenCL-Beispiel™ ausgeführt und der Hostcode und der Kernel auf dem Mainboard ausgeführt werden. |
6. Holen Sie sich Hilfe
OpenCL Certified Service Provider
Intel empfiehlt die folgenden zertifizierten Dienstleister, die Sie bei der Entwicklung eines OpenCL-Board-Support-Pakets™ für Intel® FPGA-Mainboards unterstützen können. Diese Anbieter verfügen über umfangreiche Erfahrung in der Entwicklung hochwertiger OpenCL-Board-Support-Pakete, Treiber und Design-Migration für Intel FPGA-Boards:
Terasic Inc
OpenCL und das OpenCL-Logo sind Marken von Apple Inc., die mit Genehmigung von Khronos verwendet werden.
Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.