Beispiel für Das Design eines Multithread-Vektorbetriebs

Empfohlen für:

  • Gerät: Nicht bekannt

  • Quartus®: v16.1

author-image

Von

Dieses Beispieldesign führt zwei Instanzen einer Klasse in zwei separaten Threads aus. Jede Instanz verwendet einen anderen Kernel: Die erste Instanz führt einen Vektor-Zusatzkern aus, um folgendes durchzuführen: C = A + B, wobei A, B und C N-Element-Vektoren sind. Die zweite Instanz führt einen Memberwise Vector Multiplikations-Kernel aus, um Folgendes durchzuführen: C = A * B (memberwise). Die Kernel sind absichtlich einfach gehalten und nicht optimiert.

Da das Gerät nicht programmiert werden kann, um zwei separate Programme gleichzeitig zu verwenden, teilen sich beide Probleminstanzen das gleiche OpenCL™-Programm (wodurch im gleichen Kontext ausgeführt wird). Wie in diesem Beispiel können die beiden Threads jedoch separate Befehlswarteschlangen haben. Zur Vereinfachung laufen die beiden Threads auf zwei Instanzen des gleichen Codes mit unterschiedlichen Argumenten, können aber im Allgemeinen zwei separate Klassen ausführen.

Neben der Einführung der grundlegenden OpenCL-Programmierschnittstelle (API) unterstützt dieses Beispiel die Partitionierung des Problems auf mehreren OpenCL-Geräten, falls verfügbar. Wenn M-Geräte verfügbar sind, wird das Problem so aufgeteilt, dass jedes Gerät mit N/M-Punkten betrieben wird. Das Host-Programm nimmt an, dass alle Geräte vom gleichen Typ sind (das heißt, dass die gleiche Binärdatei verwendet werden kann, aber der Code kann generalisiert werden, um verschiedene Gerätetypen einfach zu unterstützen).

Downloads

Das Design-Beispiel liefert den Quellcode für das OpenCL-Gerät (.cl) und die Host-Anwendung. Zum Kompilieren der Host-Anwendung enthält das Linux* Paket eine Makefile und das Windows* Paket enthält ein Microsoft* Visual Studio 2010-Projekt.

Die folgenden Downloads werden für dieses Beispiel bereitgestellt:

Die Verwendung dieses Designs unterliegt den Bedingungen der Hardware-Referenzdesignlizenzvereinbarung.

Software- und Hardware-Anforderungen

Dieses Designbeispiel erfordert die folgenden Tools:

  • Intel® FPGA Software v17.1 oder neuer
  • Intel FPGA SDK für OpenCL™ v17.1 oder neuer
  • Unter Linux: GNU Make und gcc
  • Unter Windows: Microsoft Visual Studio 2010

Um die Intel® Design-Tools herunterzuladen, besuchen Sie die OpenCL Download-Seite. Die Anforderungen an das zugrunde liegende Betriebssystem sind dieselben wie die des Intel FPGA SDK für OpenCL.

OpenCL und das OpenCL-Logo sind Marken von Apple Inc., die mit Genehmigung von Khronos verwendet werden.

* Das Produkt basiert auf einer veröffentlichten Khronos-Spezifikation und hat den Khronos-Konformitätstest bestanden. Der aktuelle Konformitätsstatus finden Sie unter www.khronos.org/conformance.

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.