Cuando se utiliza la Intel® SDK para OpenCL,™ "Error: Assert failure at ACLMemUtils.cpp(510)" puede verse durante una compilación del kernel como se muestra a continuación:
> aoc kernel.cl -rtl
aoc: Ejecutando analizador OpenCL....
aoc: analizador de OpenCL completado correctamente.
aoc: Vinculando archivos de objeto....
aoc: Optimizando y haciendo análisis estático de código...
Error: Error de afirmación en ACLMemUtils.cpp(510) *******
El error se produce cuando el tamaño de la memoria en chip es (2**n) 1, para n >= 5.
Aquí hay algunos ejemplos de código kernel para ilustrar:
#define n 5
#define talla (2**n) 1
__kernel void kernel(__global char * restrict input) {
int mem[tamaño];
para (int i=0; i<size-1; i )
mem[i]=mem[i 1];
mem[tamaño-1] = entrada i;
}
Para evitar este problema,
Usa una talla que no sea (2**n) 1
O
Usar #pragma desenrollar en el bucle
Este problema se solucionó, comenzando con Intel® Quartus® Prime Software versión 18.1