เมื่อใช้ Intel® SDK สําหรับ OpenCL™ "ข้อผิดพลาด: ความล้มเหลว Assert ที่ ACLMemUtils.cpp(510)" อาจแสดงขึ้นระหว่างการคอมไพล์เคอร์เนลตามที่แสดงด้านล่าง:
> aoc kernel.cl -rtl
aoc: เรียกใช้ตัวแยกวิเคราะห์ OpenCL...
aoc: ตัวแยกวิเคราะห์ OpenCL เสร็จสมบูรณ์แล้ว
aoc: การเชื่อมโยงไฟล์วัตถุ....
aoc: การปรับประสิทธิภาพและทําการวิเคราะห์แบบคงที่ของรหัส...
ข้อผิดพลาด: ความล้มเหลวของ Assert ที่ ACLMemUtils.cpp(510) *******
ข้อผิดพลาดนี้เกิดขึ้นเมื่อขนาดหน่วยความจําบนชิปเป็น (2**n) 1 สําหรับ> n= 5
นี่คือตัวอย่างโค้ด kernel สําหรับภาพประกอบ:
#define n 5
ขนาด #define (2**n) 1
__kernel kernel เป็นโมฆะ (__global char * จํากัดอินพุต) {
mem ขนาด[size];
สําหรับ (int i=0; i<size-1; i)
mem[i]=mem[i 1];
mem[size-1] = input i;
}
เพื่อหลีกเลี่ยงปัญหานี้
ใช้ขนาดที่ไม่ใช่ (2**n) 1
หรือ
ใช้การยกเลิกการลงทะเบียน #pragma ในลูป
ปัญหานี้ได้รับการแก้ไขเริ่มต้นด้วยซอฟต์แวร์ Intel® Quartus® Prime เวอร์ชัน 18.1