Artikel-ID: 000073879 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 09.01.2019

Warum generiert meine OpenCL-Kernel-Kompilierung keine Hardware, selbst wenn die geschätzten Ressourcen niedrig sind?

Umgebung

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

    Wenn Ihr OpenCL-Kernel™ keine Hardware generiert, selbst wenn die geschätzten Ressourcen niedrig sind, kann der Fehler auf eine übermäßige Entbündelung von Schleifen zurückzuführen sein, die auf den globalen Speicher zugreifen.

    Schleifen, die auf den globalen Speicher zugreifen, sollten nicht mehr entkoppelt werden, wenn ein Lesen oder Schreiben in den globalen Speicher breiter ist als die Speicherschnittstelle im BSP.  Dies führt zu Streit und Routing-Überlastung und kann zu Kompilierungsfehlern führen.

    Lösung

    Die Breite der externen Speicherschnittstellen finden Sie in der Datei board_spec.xml im OpenCL™ BSP.  Hier ist ein Beispiel aus der board_spec.xml des Arria 10 GX Entwicklungskit BSP. (a10_ref)

    width="512" maxburst="16" address="0x00000000" size="0x80000000" latency="240"/>


    Wie Sie sehen können, beträgt die Breite der externen Speicherschnittstelle auf diesem BSP 512 Bits. (width="512") Wenn eine Schleife auf globale 32-Bit-Integer zugreift, sollte die Schleife daher nicht mehr als 16 entpackt werden. (512 / 32 = 16)

    Wenn die Anzahl der ursprünglichen Schleife nicht ein Vielfaches von 16 ist:

    1. Drehen Sie die Anzahl der neuen Schleife auf ein Vielfaches von 16.

    2. Machen Sie alle On-Chip-Speicher in der Schleife groß genug, um die anzahl der neuen Schleife zu bewältigen

    3. Verwenden Sie Bedingungen, um Lese- oder Schreibvorgänge zu verhindern, wenn die Anzahl der neuen Schleife die ursprüngliche Schleife übersteigt

    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.