如果循环包含对索引通道的写入,并且循环计数超过分配的通道数,则在 OpenCL™ 编译期间可能会出现堆栈转储。请参阅下面的示例代码。
通道无符号字符my_channel[16] __attribute__((深度(1024)));
字符数据[32];
...
for (无符号字符 i = 0; i < 32; i ) {
write_channel_intel(my_channel[i], 数据[i]);
}
确保循环计数永远不会超过分配的通道数。
#define num_channels 32
通道无符号字符my_channel[num_channels] __attribute__((深度(1024)));
字符数据[num_channels];
...
for (无符号字符 i = 0; i < num_channels; i ) {
write_channel_intel(my_channel[i], 数据[i]);
}
从面向 OpenCL™ 编译器的 英特尔® FPGA SDK 版本 19.1 开始,该问题已修复。