Kết xuất ngăn xếp có thể xảy ra trong quá trình biên dịch OpenCL™ nếu vòng lặp chứa ghi vào kênh được lập chỉ mục và số vòng lặp vượt quá số kênh được phân bổ. Xem mã ví dụ bên dưới.
Kênh ký tự không dấu my_channel[16] __attribute__((độ sâu(1024)));
dữ liệu char[32];
...
for (ký tự không dấu i = 0; i < 32; i ) {
write_channel_intel(my_channel[i], dữ liệu[i]);
}
Đảm bảo rằng số vòng lặp không bao giờ vượt quá số kênh được phân bổ.
#define num_channels 32
Kênh ký tự không dấu my_channel[num_channels] __attribute__((độ sâu(1024)));
dữ liệu char[num_channels];
...
for (ký tự không dấu i = 0; i < num_channels; i ) {
write_channel_intel(my_channel[i], dữ liệu[i]);
}
Sự cố này được khắc phục bắt đầu với phiên bản 19.1 của Intel® FPGA SDK cho trình biên dịch OpenCL™.