ID de l'article: 000073934 Type de contenu: Dépannage Dernière révision: 02/10/2019

Pourquoi les Intel® FPGA SDK pour OpenCL™ compilateur sont-ils suspendus et ne se terminent-ils jamais avec les noyaux NDRange qui contiennent un flux de contrôle dépendant du thread ou des opérations de canaux ?

Environnement

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

    Le compilateur Intel® FPGA SDK pour OpenCL™ garantit que les déclarations d’un noyau NDRange sont exécutées par threads par ordre d’identifiants thread. Pour s’assurer que la garantie est respectée dans les programmes qui contiennent un flux de contrôle dépendant du thread, le compilateur insère une barrière de commande à nouveau au point de connexion des chemins de contrôle-flux dépendants du thread. Un défaut dans la configuration de ces barrières fait que le calcul se bloque à la barrière sans possibilité de progression à l’avenir.

    Les opérations de distribution peuvent également provoquer ce décrochage.

    Vous trouverez ci-dessous un exemple de « construction de flux de contrôle dépendante du thread » :

       
    Obtenir un ID de thread global

    id int = get_global_id(0) ;

    Assurez-vous que nous ne sortons pas des limites

    si (id < n)

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

     

    Ici, la déclaration s’il s’agit d’une construction de contrôle-flux qui dépend du thread, c’est-à-dire ce qu’elle fait dépend du thread qui l’exécute.

    Résolution

    Réécrit le noyau NDRange pour ne contenir aucune opération de canal ou constructions de flux de contrôle dépendant du thread.

     

    Ce problème devrait être résolu dans une version ultérieure du Intel® FPGA SDK pour le logiciel OpenCL.

    Produits associés

    Cet article concerne 1 produits

    Circuits programmables Intel®

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.