数据流最优化是一种强大的技巧,它可通过支持内核内部的任务级流水打拍和并行化来提升内核性能。它允许 v++
编译器通过并发调度内核的多个函数,来提升吞吐量并降低时延。这也称为任务级并行化。为此,您需要了解正确编写软件的最佳实践,以确保在 FPGA 上正常执行软件,如
Vitis HLS 用户指南(UG1399) 中的吞吐量最优化
中所述。
下图显示了数据流流水打拍的概念视图。默认行为是先执行并完成 func_A
,然后执行并完成 func_B
,最后执行并完成 func_C
。启用
pragma HLS dataflow
后,编译器即可将每个函数调度为数据可用后立即执行。在此示例中,原始 top
函数的时延和时间间隔为 8 个时钟周期。借助数据流最优化,时间间隔缩短到仅 3 个时钟周期。
图 1. 数据流最优化