การถ่ายโอนข้อมูลสแต็คอาจเกิดขึ้นระหว่างการคอมไพล์ OpenCL™ หากลูปมีการเขียนไปยังช่องสัญญาณดัชนี และจํานวนลูปเกินกว่าจํานวนแชนเนลที่จัดสรรไว้ ดูตัวอย่างโค้ดด้านล่าง
my_channel อักขระที่ไม่ได้ออกแบบช่องสัญญาณ[16] __attribute__ ((ความลึก (1024)));
ข้อมูลอักขระ[32];
...
สําหรับ (char i ที่ไม่ได้ออกแบบ = 0; i < 32; i) {
write_channel_intel (my_channel[i], ข้อมูล[i]);
}
ตรวจสอบให้แน่ใจว่าจํานวนลูปไม่เคยเกินจํานวนช่องที่จัดสรร
#define num_channels 32
my_channel อักขระที่ไม่ออกแบบช่องสัญญาณ[num_channels] __attribute__((Depth(1024)));
ข้อมูลอักขระ[num_channels];
...
สําหรับ (อักขระที่ไม่ได้ออกแบบ i = 0; i < num_channels; i) {
write_channel_intel (my_channel[i], ข้อมูล[i]);
}
ปัญหานี้ได้รับการแก้ไขแล้วด้วยเวอร์ชัน 19.1 ของ Intel® FPGA SDK สําหรับคอมไพเลอร์ OpenCL™