Intel® 高层次综合编译器专业版Pro版: 参考手册

ID 683349
日期 12/04/2023
Public
文档目录

6.9.2. 循环融合豁免(loop_fuse预处理指令)

您可以通过使用nofusion指令对循环进行批注来豁免该循环是否应与相邻循环进行融合的考虑。该指令可防止被批注的循环被自动融合,或者在loop_fuse条件下时被融合。

指定nofusion指令,如下:
#pragma nofusion
for (...) {
loop body
}

nofusion指令应用到循环对中的一个循环可防止循环被融合。

例如,以下代码实例具有相同的效果。如果一个循环对中的其中一个被以nofusion指令批注,则另一个循环也无法与其它循环融合。
#pragma nofusion
L1: for (int j=0; j < N; ++j){
 data[j] += Q;
}
L2: for (int i = 0; i < N; ++l) {
 output[i] = Q * data[i];
}
L1: for (int j=0; j < N; ++j){
 data[j] += Q;
}
#pragma nofusion
L2: for (int i = 0; i < N; ++l) {
 output[i] = Q * data[i];
}
另一个实例显示使用nofusion指令的效果,请参考以下教程:
<quartus_installdir>/hls/examples/tutorials/best_practices/loop_fusion