Artikel-ID: 000073934 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 02.10.2019

Warum hängt der FPGA SDK für OpenCL-Compiler™ und endet nie mit NDRange-Kerneln, die threadabhängige Ablauf- oder Kanaloperationen enthalten?

Umgebung

  • Intel® Quartus® Prime Pro Edition
  • Intel® FPGA SDK for OpenCL™ Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Der FPGA SDK für OpenCL™ Compiler bietet eine Garantie, dass Anweisungen in einem NDRange-Kernel von Threads in der Reihenfolge ihrer Thread-IDs ausgeführt werden. Um sicherzustellen, dass die Garantie in Programmen erfüllt wird, die einen threadabhängigen Ablauffluss enthalten, fügt der Compiler am Verknüpfungspunkt von threadabhängigen Ablaufsteuerungspfaden eine Barriere für die Neuordnung ein. Ein Fehler in der Konfiguration solcher Barrieren führt dazu, dass die Berechnung an der Barriere zum Stillstand kommt, ohne dass ein Vorwärtsfortschritt möglich ist.

    Channel-Operationen können ebenfalls zu dieser Verzögerung führen.

    Nachfolgend sehen Sie ein Beispiel für ein "threadabhängiges Ablaufkonstrukt":


    Globale Thread-ID abrufen

    int id = get_global_id(0);

    Stellen Sie sicher, dass wir nicht aus dem Rahmen geraten

    if (ID < n)

    c[id] = a[id] b[id];

    Hier ist die if-Anweisung ein Kontrollflusskonstrukt, das threadabhängig ist, dh was sie tut, hängt davon ab, welcher Thread sie ausführt.

    Lösung

    Schreiben Sie den NDRange-Kernel so um, dass er keine Kanaloperationen oder threadabhängigen Ablaufkonstrukte enthält.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    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.