一、用户程序优化1.大部分优化的焦点function函数和LOOP循环。2.每个函数都能转换为特定的硬件组件。3.循环主体的迭代是FPGA最乐见其成的范式这个可以利用属性来提高并行度一般使用流水打拍和unroll展开的方式来提升并行度执行效率。4.图像或者阵列或者矩阵的逐像素运算是FPGA中最乐见的架构这个是FPGA擅长处理的二、代码的并行设计1. 一般HLS 编译器仅根据函数调用来推断任务级别并行度。因此需要在硬件中并发运行的顺序代码块例如循环应置于专用函数内。2.将原始算法分解/分区为较小的组件这些组件可通过串流来彼此进行通信。这样您就能在一定程度上掌握数据在设计中流动的方式。较小的模块化组件的优势在于可以按需进行赋值从而提升并行性。3.为了实现高性能硬件HLS 工具必须基于顺序代码推断并行度并利用它来实现更高的性能。4.设计/程序需作为任务集合来构造这些任务通过通信链接也称为通道来彼此发送消息。三、阻塞模式和非阻塞模型架构图四、控制驱动的任务级并行度和数据驱动的任务级并行度1.数据驱动的任务级并行度全程运行纯数据驱动无需额外的控制逻辑各个task的管道是数据路径的hls::stream来通信。2.控制驱动的任务级并行度控制驱动的 TLP 适用于并行度建模它依靠 C 的顺序语义而非连续运行的线程。