Lorsque vous utilisez le Intel® SDK pour OpenCL,™ « Error : Assert failure at ACLMemUtils.cpp(510) » (Erreur) peut apparaître lors de la compilation du noyau, comme indiqué ci-dessous :
> AOC kernel.cl -rtl
aoc : Exécution de l’analyseur OpenCL....
aoc : analyseur OpenCL terminé avec succès.
aoc : Liaison de fichiers d’objets....
aoc : Optimiser et faire de l’analyse statique du code...
Erreur : échec de l’affirmation à ACLMemUtils.cpp(510) *******
L’erreur se produit lorsque la taille de la mémoire sur puce est (2**n) 1, pour n >= 5.
Voici quelques exemples de code de noyau à titre d’illustration :
#define n 5
#define taille (2**n) 1
__kernel void kernel(__global char * restrict input) {
int mem[taille];
pour (int i=0; i<taille-1; i )
mem[i]=mem[i 1];
mem[taille-1] = entrée i;
}
Pour contourner ce problème,
Utilisez une taille qui n’est pas (2**n) 1
Ou
Utilisez #pragma dérouler la boucle
Ce problème est résolu à partir de la version 18.1 du logiciel Intel® Quartus® Prime