使用面向 OpenCL™ 的英特尔® SDK时,在内核编译过程中可能会看到 “Error: Assert failure at ACLMemUtils.cpp(510)”,如下所示:
> AOC kernel.cl -RTL
aoc: Running OpenCL parser....
aoc:OpenCL 解析器成功完成。
aoc: 链接对象文件....
AOC:优化和对代码进行静态分析...
Error: Assert failure at ACLMemUtils.cpp(510) *******
当片上存储器大小为 (2**n) 1,对于 n >= 5 时,会发生错误。
以下是一些内核代码示例以供说明:
#define n 5
#define 尺寸 (2**n) 1
__kernel void kernel(__global char * limit input) {
int mem[size];
for (int i=0; i<size-1; i )
mem[i]=mem[i 1];
mem[size-1] = 输入 i;
}
要变通解决此问题,
使用大小不是 (2**n) 1
或
在循环上使用 #pragma 展开
从 Prime 软件版本 18.1 开始英特尔® Quartus®此问题已修复