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

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

6.5. 循环并发(max_concurrency预处理指令)

您可以使用max_concurrency预处理指令来增加或限制组件中循环的并发性。循环的并发性是指该循环一次可以进行多少次迭代。默认情况下, Intel® HLS Compiler会尝试最大化循环的并发性,以便您的组件以峰值吞吐量运行。

为了在循环中实现最大并发性,有时必须创建组件内存的专用副本,以打破对底层硬件的依赖,从而防止循环完全流水线

可以在您组件的High-Level Design报告(report.html)中查看针对组件存储器创建的专用副本数量:
  • 在Loop Analysis报告的Details窗格中,有一条消息指出同时执行的最大数量已限制为 N。
  • Function Memory Viewer中组件存储器的Bank视图中,以图形方式显示专用副本的数量。
在该情况下创建组件存储器的专用副本与复制内存来增加端口数量有所不同。
如果需要通过牺牲一些性能来节省组件内存,请对循环应用#pragma max_concurrency <N> 。应用此指令时,专用副本的数量会发生变化,并控制进入循环的迭代次数,如以下实例所示:
#pragma max_concurrency 1
​for (int i = 0; i < N; i++) {
  int arr[M];
  // Doing work on arr
}
您可以使用hls_private_copies存储器属性控制在循环内访问组件存储器时创建的专用副本数量。有关详细信息,请参阅 hls_private_copies存储器属性。关于增加存储器专用副本数量的实例,请参考以下教程:
<quartus_installdir>/hls/examples/tutorials/component_memories/non_power_of_two_memory
您还可以使用hls_max_concurrency组件属性控制组件的并发性。关于hls_max_concurrency(N)组件属性的更多信息,请参阅Concurrency Control(hls_max_concurrency 属性)。关于通过增加并发性来提高吞吐量的实例,请参阅以下教程:
<quartus_installdir>/hls/examples/tutorials/best_practices/optimize_ii_using_hls_register