ID de l'article: 000086372 Type de contenu: Dépannage Dernière révision: 04/08/2017

Pourquoi #pragma ivdep ne fonctionne-t-il pas correctement dans la version 17.0 de l’aocl ?

Environnement

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

    Dans la version 16.1, ce code se comporte comme prévu lorsque la boucle externe est serialisée en raison de dépendances et que les dépendances de la boucle intérieure sont supprimées par le #pragma ivdep.

    Cette boucle est serialized en raison des véritables dépendances avec le circuit intérieur

    pour (char non signé x = 0 ; x < 4 ; x ) {

    La boucle intérieure n’a pas de dépendances d’inter-itération, mais dépend de la boucle externe

    ivdep #pragma

    pour (char y non signé = 0 ; y<64 ; y ) {

    En 17.0, l’ivdep #pragma est maintenant appliqué à la boucle intérieure et externe, de sorte que les dépendances dans la boucle externe ne sont pas comptabilisées par le compilateur.  En conséquence, il est possible que le code similaire ne fonctionne pas correctement sur le matériel, bien qu’il fonctionne dans l’émulation.

    Résolution

    Contournement:

    1. Ajoutez un argument supplémentaire « d fait pour le noyau ».  Du côté de l’hôte, passez toujours 1 pour cet argument d’argumentaire.

    AVANT

    __kernel my_kernel non valide (
    __global cpx_t* limiter les entrées,
    __global cpx_t* limiter le résultat)

    APRÈS

    __kernel my_kernel non valide (
    __global cpx_t* limiter les entrées,
    __global cpx_t* limiter le résultat,
        int d seyant)

    2. Dans le oisillon de la boucle, enveloppez la boucle intérieure dans « si (dhôte) » :

    Ce circuit est s serialisé en raison de véritables dépendances

    pour (char non signé x = 0 ; x < 4 ; x ) {

    si (d fait) {

    Aucune dépendance au sein de chaque ensemble de 64 itérations

    ivdep #pragma

    pour (char y non signé = 0 ; y<64 ; y ) {

     

    Ce problème devrait être résolu dans une version ultérieure de l’Intel© OpenCL™ pour FPGA SDK.

    Produits associés

    Cet article concerne 5 produits

    FPGA et FPGA SoC Intel® Arria® 10
    FPGA et FPGA SoC Intel® Stratix® 10
    FPGA et FPGA SoC Cyclone® V
    FPGA et FPGA SoC Arria® V
    FPGA Stratix® V

    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.