System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于现场可编程逻辑门阵列的多层中间表示的编译方法技术_技高网

基于现场可编程逻辑门阵列的多层中间表示的编译方法技术

技术编号:42872573 阅读:1 留言:0更新日期:2024-09-27 17:32
本发明专利技术公开了基于现场可编程逻辑门阵列的多层中间表示的编译方法,该方法包括:接收用户输入的算法,并通过编译器的编译流程,将该输入算法划分为三层不同抽象层次的中间表示,包括依赖图中间表示、多面体中间表示和带有硬件描述语言HLS原语属性的MLIR仿射方言中间表示;实施自动设计空间探索DSE;将优化后的MLIR仿射方言中间表示发送至编译器后端,生成可综合的HLS C代码,其中所有的HLS属性均转换为对应的HLS原语,以供FPGA加速器使用。该方法旨在解决现有编译框架在FPGA编程中的不足,通过引入多层中间表示技术,实现了编译过程的优化和简化,从而降低了FPGA编程的难度。

【技术实现步骤摘要】

本专利技术涉及高级可编程逻辑编译,尤其涉及基于现场可编程逻辑门阵列的多层中间表示的编译方法


技术介绍

1、随着计算密集型应用的迅猛发展,现场可编程逻辑门阵列(fpga)因其高处理速度和资源能效比而备受瞩目。然而,fpga的编程复杂性极大地阻碍了其广泛应用。尽管高层次综合(hls)技术为用高级语言(如c/c++)编写的算法转化为专用硬件加速器提供了途径,但所生成加速器的性能高度依赖于用户的手动优化能力,包括源代码的重构以消除数据依赖以及选择合适的hls编译指令。这种对硬件知识的依赖和性能验证的迭代过程,增加了编程和优化的难度。

2、目前,编译技术的进步在一定程度上缓解了不同计算平台的编程和优化挑战。针对非fpga后端(如cpu、gpu和领域专用加速器dsa),已有编译框架实现了算法与调度的解耦,从而允许开发者专注于算法定义,而由编译器自动执行优化任务。然而,这些框架主要针对特定应用场景(如图像处理或深度学习),缺乏通用性,难以直接应用于fpga后端。

3、对于fpga后端,虽然已有编译框架支持生成高效的空间架构,但这些框架往往依赖于单一的循环级别中间表示(ir)进行代码优化,这在处理复杂应用时可能显得力不从心。此外,现有框架在数据依赖分析和循环变换等关键编译优化技术上存在不足,限制了其在复杂应用中的性能提升。

4、因此,当前的编译框架在支持fpga加速器方面存在显著不足。非fpga后端的编译框架难以针对fpga生成高效的加速器,而面向fpga后端的编译框架又缺乏充分的数据依赖分析和循环变换支持。同时,基于单层中间表示设计的编译框架可扩展性有限,难以应对不同粒度的编译优化需求,增加了编译器的开发和调试难度。这些问题迫切需要一种新型的编译框架来解决,以实现对fpga加速器的有效优化和高效生成。


技术实现思路

1、有鉴于此,本专利技术提出基于现场可编程逻辑门阵列的多层中间表示的编译方法,以解决现有技术中存在的fpga编程难度大且优化不足的问题。

2、本专利技术具体的技术方案如下:

3、基于现场可编程逻辑门阵列的多层中间表示的编译方法,包括:

4、步骤1,接收用户输入的算法,并通过编译器的编译流程,将该输入算法划分为三层不同抽象层次的中间表示,包括依赖图中间表示、多面体中间表示和带有硬件描述语言hls原语属性的mlir仿射方言中间表示;

5、步骤2,在依赖图中间表示阶段,构建包含计算块间粗粒度数据依赖的数据依赖图,通过pom领域特定语言dsl明确表达数据读写操作的生产者消费者关系,并提取和分析数据读写操作;

6、步骤3,将依赖图中间表示转换为多面体中间表示,包括:从依赖图中间表示的每个节点中提取多面体语义,并用整数集和映射高效表示;根据用户在pom dsl中指定的调度策略执行相应的循环变换,同时确保计算执行的正确顺序;构造包含if节点、for节点、block节点和用户节点的多面体抽象语法树ast;

7、步骤4,将多面体中间表示进一步转换为带有hls原语属性的mlir仿射方言中间表示,以执行硬件优化,包括:将多面体ast中不同类型的节点映射到mlir仿射方言表示的相应操作,以捕获循环属性;解析pom dsl中描述的计算语句和数据访问模式,并将其转换为正确的mlir仿射方言表示;在mlir仿射方言上执行基于hls属性的硬件优化,并生成包含hls原语的充分优化中间表示。

8、具体地,步骤3中,多面体语义包括迭代域和数据读写信息。

9、具体地,步骤3中,用户节点附加计算语句的关键信息。

10、具体地,步骤4中,循环属性包括循环下界、上界和迭代间隔。

11、具体地,编译方法还包括:步骤5,实施自动设计空间探索dse,包括:依赖感知的代码转换,通过遍历数据依赖图,应用循环变换以减轻或消除循环依赖,并迭代地重新检查循环依赖直至满足条件;瓶颈导向的代码优化,通过评估不同循环切分策略和hls硬件优化组合,优先考虑关键路径中瓶颈节点的性能优化,并逐步提高并行度,直至满足退出机制。

12、具体地,编译方法还包括:步骤6,将优化后的mlir仿射方言中间表示发送至编译器后端,生成可综合的hls c代码,其中所有的hls属性均转换为对应的hls原语,以供fpga加速器使用。

13、具体地,步骤2中,所述依赖图中间表示中,粗粒度依赖分析通过提取和分析数据读写操作,并使用依赖映射保留它们,以捕获计算块之间的粗粒度数据依赖性,而细粒度依赖分析通过分析循环内相邻两次迭代间的依赖关系,以识别循环携带依赖并指导更低级别的代码转换和优化。

14、具体地,细粒度依赖分析通过计算循环的距离和方向向量来分析依赖性,并将相关信息存储为节点属性,用于指导循环变换以拉远依赖距离,并作为给用户的提示以指导设置hlsdependence的原语。

15、具体地,步骤3中,根据用户在pom dsl中指定的调度策略执行循环变换时,还涉及将携带数据依赖的内部循环与外部循环进行交换以拉远依赖距离,从而提高数据并行性。

16、具体地,构建包含计算块间粗粒度数据依赖的数据依赖图时,采用基于深度优先搜索dfs的方法遍历图并收集所有的数据路径,作为后续设计空间探索的关键信息。

17、本专利技术的有益效果在于:

18、(1)提出了pom,pom的核心在于其解耦的领域专用语言,这种语言能够高效地描述函数、循环和数组等复杂结构。此外,pom还提供了一系列灵活的调度原语,这些原语使得在保持高性能的同时,显著减少了代码行数,提高了编程的效率和可读性;

19、(2)通过引入三层中间表示,构建了一个统一的编译框架pom。这一框架使得在不同抽象层次上执行各种优化成为可能,从而实现了高度的可扩展性。三层中间表示的设计不仅简化了实现和调试过程,还降低了支持各种优化方法的工作量;

20、(3)注重生成高质量的加速器设计。它提供了丰富的优化方法,并在合适的层级上执行面向fpga的调度和优化。这些优化方法减轻了紧密的循环依赖,提高了代码并行性,从而实现了整体性能的提升。生成的加速器设计不仅性能卓越,而且稳定性和可靠性也得到了保证;

21、(4)集成了一个设计空间探索(dse)引擎,能够自动搜索高性能的调度方案,大大提高了编译效率。同时,pom还支持用户自定义调度策略,为不同应用场景提供了灵活的解决方案。

本文档来自技高网...

【技术保护点】

1.基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,包括:

2.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤3中,多面体语义包括迭代域和数据读写信息。

3.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤3中,用户节点附加计算语句的关键信息。

4.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤4中,循环属性包括循环下界、上界和迭代间隔。

5.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述编译方法还包括:步骤5,实施自动设计空间探索DSE,包括:依赖感知的代码转换,通过遍历数据依赖图,应用循环变换以减轻或消除循环依赖,并迭代地重新检查循环依赖直至满足条件;瓶颈导向的代码优化,通过评估不同循环切分策略和HLS硬件优化组合,优先考虑关键路径中瓶颈节点的性能优化,并逐步提高并行度,直至满足退出机制。

6.如权利要求5所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述编译方法还包括:步骤6,将优化后的MLIR仿射方言中间表示发送至编译器后端,生成可综合的HLS C代码,其中所有的HLS属性均转换为对应的HLS原语,以供FPGA加速器使用。

7.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤2中,所述依赖图中间表示中,粗粒度依赖分析通过提取和分析数据读写操作,并使用依赖映射保留它们,以捕获计算块之间的粗粒度数据依赖性,而细粒度依赖分析通过分析循环内相邻两次迭代间的依赖关系,以识别循环携带依赖并指导更低级别的代码转换和优化。

8.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述细粒度依赖分析通过计算循环的距离和方向向量来分析依赖性,并将相关信息存储为节点属性,用于指导循环变换以拉远依赖距离,并作为给用户的提示以指导设置HLSDEPENDENCE的原语。

9.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤3中,根据用户在POM DSL中指定的调度策略执行循环变换时,还涉及将携带数据依赖的内部循环与外部循环进行交换以拉远依赖距离,从而提高数据并行性。

10.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,构建包含计算块间粗粒度数据依赖的数据依赖图时,采用基于深度优先搜索DFS的方法遍历图并收集所有的数据路径,作为后续设计空间探索的关键信息。

...

【技术特征摘要】

1.基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,包括:

2.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤3中,多面体语义包括迭代域和数据读写信息。

3.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤3中,用户节点附加计算语句的关键信息。

4.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述步骤4中,循环属性包括循环下界、上界和迭代间隔。

5.如权利要求1所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述编译方法还包括:步骤5,实施自动设计空间探索dse,包括:依赖感知的代码转换,通过遍历数据依赖图,应用循环变换以减轻或消除循环依赖,并迭代地重新检查循环依赖直至满足条件;瓶颈导向的代码优化,通过评估不同循环切分策略和hls硬件优化组合,优先考虑关键路径中瓶颈节点的性能优化,并逐步提高并行度,直至满足退出机制。

6.如权利要求5所述的基于现场可编程逻辑门阵列的多层中间表示的编译方法,其特征在于,所述编译方法还包括:步骤6,将优化后的mlir仿射方言中间表示发送至编译器后端,生成可综合的hls c代码,其中所有的hls属性均转换...

【专利技术属性】
技术研发人员:赵杰茹张炜创过敏意
申请(专利权)人:上海交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1