ID de l'article: 000073879 Type de contenu: Dépannage Dernière révision: 09/01/2019

Pourquoi la compilation de mon noyau OpenCL ne génère-t-elle pas de matériel même si les ressources estimées sont faibles ?

Environnement

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

Si votre noyau OpenCL™ ne parvient pas à générer du matériel même si les ressources estimées sont faibles, cette panne peut être due à un désencombrage excessif des boucles qui accèdent à la mémoire mondiale.

Les boucles qui accèdent à la mémoire globale ne doivent pas être étendues au-delà de celles où la lecture ou l’écriture d’une mémoire globale est plus large que l’interface mémoire du BSP.  Cela entraîne des problèmes, une congestion du routage et peut entraîner une panne de compilation.

Résolution

La largeur des interfaces de mémoire externe se trouve dans le fichier board_spec.xml dans le fichier OpenCL™ BSP.  Voici un exemple de l’board_spec.xml du kit de développement Arria 10 GX BSP. (a10_ref)

maxburst="16 » adresse="0x00000000 » size="0x80000000 » latence="240"/>


Comme vous pouvez le voir, la largeur d’interface de la mémoire externe sur ce BSP est de 512 bits. (largeur ="512 ») Par conséquent, si une boucle accède aux entiers globaux de 32 bits, la boucle ne doit pas être défaite de plus de 16. (512 / 32 = 16)

Si le nombre de boucles d’origine n’est pas un multiple de 16 :

1. Round up the new loop count to a multiple of 16.

2. Faites que tous les mémoires sur puce de la boucle sont suffisamment grands pour prendre en charge le nouveau nombre de boucles

3. Utilisation conditionnel pour empêcher la lecture ou l’écriture lorsque le nouveau nombre de boucles dépasse le nombre de boucles d’origine

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

1

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.