Khi sử dụng Intel® SDK cho OpenCL,™ "Error: Assert failure at ACLMemUtils.cpp(510)" có thể được nhìn thấy trong quá trình biên dịch kernel như hình dưới đây:
> AOC kernel.cl -rtl
aoc: Chạy trình phân tích cú pháp OpenCL....
aoc: Trình phân tích cú pháp OpenCL đã hoàn thành thành công.
aoc: Liên kết các tệp đối tượng....
aoc: Tối ưu hóa và thực hiện phân tích tĩnh mã...
Lỗi: Xác nhận lỗi tại ACLMemUtils.cpp(510) *****
Lỗi xảy ra khi kích thước bộ nhớ trên chip là (2**n) 1, với n >= 5.
Dưới đây là một số mã hạt nhân ví dụ để minh họa:
#define n 5
Kích thước #define (2**n) 1
__kernel hạt nhân trống(__global char * hạn chế đầu vào) {
int mem[kích thước];
for (int i=0; i<size-1; i)
mem[i]=mem[i 1];
mem[size-1] = đầu vào i;
}
Để khắc phục sự cố này,
Sử dụng kích thước không phải là (2**n) 1
Hoặc
Sử dụng #pragma mở ra trên vòng lặp
Sự cố này đã được khắc phục, bắt đầu với Phần mềm Prime Intel® Quartus® phiên bản 18.1