仅对英特尔可见 — GUID: ewa1462821046783
Ixiasoft
仅对英特尔可见 — GUID: ewa1462821046783
Ixiasoft
7.2. 并发控制(hls_max_concurrency属性)
您可以使用hls_max_concurrency组件属性来增加或限制组件中最大并发数。组件的并发性是指该组件一次可以进行多少次调用。默认情况下, Intel® HLS Compiler会尝试最大化组件的并发性,以便组件以峰值吞吐量运行。
在声明组件之前,您可以通过立即添加hls_max_concurrency属性来最大化您组件的并发储量,如下实例所示:
#include "HLS/hls.h" hls_max_concurrency(3) component void foo ( /* arguments */ ){ // Component code }
使用此属性进行的优化可能会导致组件存储器配置更改,以满足设置并发要求。使用存储器属性来控制组件存储器配置的几何结构。
- 您有一个组件存储系统。
-
在组件级,英特尔 HLS编译器不会自动创建组件存储器的专用副本来提高吞吐量。如果您的组件调用使用了非静态组件存储器系统,则下一个调用必须等到上一个调用完成对该组件存储器的所有访问后才能启动。
此限制在Loop Analysis报告中显示为组件存储器的加载存储依赖性。
将hls_max_concurrency(N)属性添加到组件创建的组件存储器的专用副本,以便您可以同时进行组件的多个流水线调用。要创建尽可能多的专用副本以实现最大性能,请使用hls_max_concurrency(0)。
为了更精细地控制要创建的组件存储器专用副本,请使用hls_private_copies存储器属性。有关详细信息,请参阅 hls_private_copies存储器。
- 编译器确定降低并发度可以节省FPGA面积。
-
在某些情况下,编译器会降低并发性以节省 FPGA面积。在这些情况下,hls_max_concurrency(N)组件属性可以将并发度从1增加。
在Loop Analysis窗格中单击标有(Component invocation)的功能后,Loop Analysis报告在Details窗格中显示功能的并发性。如果您设计的并发性受限,则Details窗格显示的行如下:
Maximum concurrent iterations: 1 is the default for component invocation loop.
hls_max_concurrency属性也可以接受值0。当该属性设置为0时,组件应该能够在下游数据通路释放后立即接受新的调用。仅当您看到组件中有循环启动间隔(II)问题时才使用该值,因为使用该属性会增加组件面积。您可以通过在High-Level Design Reports中查看Loop Viewer或者查找仿真波形中可见的额外的气泡来找出循环II问题。
您还可以通过max_concurrency(N)指令控制组件中循环的并发性。了解关于max_concurrency(N)指令的更多信息,请参阅循环并发(max_concurrency预处理指令)。