一种数据流图生成方法及装置制造方法及图纸

技术编号:34286953 阅读:20 留言:0更新日期:2022-07-27 08:34
本发明专利技术提供一种数据流图生成方法及装置,该方法包括:在代码块中存在父循环的情景下,分析该代码中数据的依赖信息;遍历代码块中各个过程块,生成各个过程块对应的块数据流图;对各个过程块对应的数据流图分析并添加依赖信息,生成代码块对应的代码数据流图;消除代码数据流图中的重复变量,简化过程块并建立各个过程块之间的连接关系,生成第一数据流程图图文件,以使通过第一数据流程图图文件展示循环代码的数据流程图。以上方法利用到llvm前端、中间表示(IR)及其已有的部分分析步骤。llvm是一个开源的编译器框架,方便用户针对自己处理器的体系结构添加编译步骤(pass)或修改编译流程。本发明专利技术用于可重构编译器的前端,但不限于可重构编译器。但不限于可重构编译器。但不限于可重构编译器。

【技术实现步骤摘要】
一种数据流图生成方法及装置


[0001]本专利技术涉及面向异构处理器的编译领域,特别是涉及针对循环加速的代码编译时生成数据流图的方法及装置。

技术介绍

[0002]数据流图(data flow graph 简称dfg)是描述软件系统中数据处理过程的一种有力的图形工具。 数据流图从数据传递和加工的角度出发, 刻画数据流从输入到输出的移动和变换过程。 由于它能够清晰地反映程序代码的执行过程, 所以它经常作为异构处理器的编译器的重要组成部分。
[0003]目前已有一些能够自动生成代码的数据流图的软件(如autoflowchart),但这些软件都是为程序员分析或展现代码逻辑用的,是业务逻辑的体现,仅分析代码级的字面意义,不考虑硬件环境,或是多考虑数据流图呈现给用于的界面效果(如布局、布线),而不关心其应用背景。由于缺少操作符、操作数等细节,不能被编译器所使用。

技术实现思路

[0004]本专利技术的目的是提供一种数据流图生成方法,该方法利用到llvm前端、中间表示(IR)及其已有的部分分析流程。llvm是一个开源的编译器框架,方便用户针对自己处理器的体系结构添加或修改编译流程(pass)。用于可重构编译器的前端,但不限于可重构编译器。任何需要并行执行指令的体系结构都可以使用。
[0005]本专利技术第一个方面,提供了一种数据流图生成方法,包括:在代码块中存在父循环代码的情景下,分析所述代码块中子代码块之间的依赖信息;遍历所述代码块中各个过程块,生成所述各个过程块对应的块数据流图;对所述各个过程块对应的数据流图添加所述依赖信息,生成所述代码块对应的代码数据流图;消除所述代码数据流图中的重复变量,建立所述各个过程块之间的连接关系,生成第一数据流图图文件,以使通过所述第一数据流图图文件展示所述代码块的数据流图。
[0006]可选的,所述消除所述代码数据流图中的重复变量,简化所述过程块并建立所述各个过程块之间的连接关系,生成第一数据流图图文件,以使通过所述第一数据流程图图文件展示所述代码块的数据流图之后,所述方法还包括:统计所述代码块中各个过程块连接关系;提取满足预设条件的过程块,并简化所述代码块中的过程块;获取所述各个过程块之间的关联或嵌套关系;补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件,其中,所述依赖距离表示内存中的数据在所述代码块被多次访问,多次访问之间间隔的循环次数。
[0007]可选的,所述补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件之后,所述方法还包括:生成所述代码块加载信息。
[0008]可选的,所述依赖关系包括先后顺序和/或包含关系。
[0009]可选的,所述获取所述各个过程块之间的关联或嵌套关系之后,所述方法还包括:
将所述各个过程块中无用的过程块删除或转换为循环信息。
[0010]可选的,所述遍历所述代码块中各个过程块,生成所述各个过程块对应的块数据流图,包括:所述各个过程块以平铺的结构呈现在中间表示IR中,逐条解析IR语句,将每条IR的操作符和操作数填入对应的数据结构,生成所述各个过程块对应的块数据流图。
[0011]可选的,所述在代码块中存在父循环代码的情景下,分析所述代码块中子代码块之间的依赖信息之前,所述方法还包括;不同格式的代码块文件转换为所述中间表示IR格式文件。
[0012]本专利技术的第二个方面,提供了一种数据流图生成装置,所述装置包括:分析单元,用于在代码块中存在父循环代码的情景下,分析所述代码块中子代码块之间的依赖信息;第一生成单元,用于遍历所述代码块中各个过程块,生成所述各个过程块对应的块数据流图;第二生成单元,用于对所述各个过程块对应的数据流图添加所述依赖信息,生成所述代码块对应的代码数据流图;第三生成单元,用于消除所述代码数据流图中的重复变量,建立所述各个过程块之间的连接关系,生成第一数据流图图文件,以使通过所述第一数据流图图文件展示所述代码块的数据流图。
[0013]可选的,所述所述装置还包括;统计单元,用于消除所述代码数据流图中的重复变量,建立所述各个过程块之间的连接关系,得到数据流图图文件,以使通过所述第一数据流图图文件展示所述代码块的数据流图之后,统计所述代码块中各个过程块连接关系;简化单元,用于提取满足预设条件的过程块,并简化所述代码块中的过程块;获取单元,用于获取所述各个过程块之间的关联或嵌套关系;第四生成单元,用于补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件,其中,所述依赖距离表示内存在所述代码块被多次访问,多次访问之间间隔的循环次数。
[0014]可选的,所述装置还包括:第五生成单元,用于所述补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件之后,生成所述代码块加载信息。
[0015]可选的,所述依赖关系包括先后顺序和/或包含关系。
[0016]可选的,所述装置还包括:删除转换单元,用于所述获取所述各个过程块之间的关联或嵌套关系之后,将所述各个过程块中无用的过程块删除或转换为循环信息。
[0017]可选的,所述第一生成单元,包括:生成模块,用于所述各个过程块以平铺的结构呈现在中间表示IR中,逐条解析IR语句,将每条IR的操作符和操作数填入对应的数据结构,生成所述各个过程块对应的块数据流图。
[0018]可选的,所述装置还包括;转换单元,用于所述在代码块中存在父循环代码的情景下,分析所述代码块中子代码块之间的依赖信息之前,不同格式的代码块文件转换为所述中间表示IR格式文件。
[0019]下文将以明确易懂的方式,结合附图对一种数据流图生成方法及系统的特性、技术特征、优点及其实现方式予以进一步说明。
[0020]附图说明
[0021]图1是用于说明在本专利技术一种实施方式中的数据流图生成方法的流程示意图;图2是用于说明在本专利技术一种实施方式中的数据流图总体流程图;
图3是用于说明在本专利技术另一种实施方式中的数据结构关系示意图;图4是用于说明在本专利技术另一种实施方式中的for循环结构图(一);图5是用于说明在本专利技术一种实施方式中的while循环结构图;图6是用于说明在本专利技术另一种实施方式中的依赖距离计算示意图;图7是用于说明在本专利技术另一种实施方式中的层级计算流程图;图8是用于说明在本专利技术另一种实施方式中的简化后的for循环结构;图9是用于说明在本专利技术另一种实施方式中的带分支的循环结构图;图10是用于说明在本专利技术一种实施方式中的加载信息数据结构示意图;图11是用于说明在本专利技术另一种实施方式中的dot图示例;图12是用于说明在本专利技术另一种实施方式中的批量显示效果示意图;图13是用于说明在本专利技术另一种实施方式中的数据流图生成装置的示意图。
具体实施方式
[0022]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据流图生成方法,其特征在于,所述方法包括:在代码块中存在父循环代码的情景下,分析所述代码块中数据的依赖信息;遍历所述代码块中各个过程块,生成所述各个过程块对应的块数据流图;对所述各个过程块对应的数据流图分析并添加所述依赖信息,生成所述代码块对应的代码数据流图;消除所述代码数据流图中的重复变量,简化所述过程块并建立所述各个过程块之间的连接关系,生成第一数据流图图文件,以使通过所述第一数据流程图图文件展示所述代码块的数据流图。2.根据权利要求1所述的数据流图生成方法,其特征在于,所述消除所述代码数据流图中的重复变量,简化所述过程块并建立所述各个过程块之间的连接关系,生成第一数据流图图文件,以使通过所述第一数据流程图图文件展示所述代码块的数据流图之后,所述方法还包括;统计所述代码块中各个过程块连接关系;提取满足预设条件的过程块,并简化所述代码块中的过程块;获取所述各个过程块之间的关联或嵌套关系;补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件,其中,所述依赖距离表示内存中的数据在所述代码块被多次访问,多次访问之间间隔的循环次数。3.根据权利要求2所述的数据流图生成方法,其特征在于,所述补全所述各个过程块中的数据之间依赖距离,生成第二数据流图图文件之后,所述方法还包括:生成所述代码块加载信息。4.根据权利要求1至3任一项所述的数据流图生成方法,其特征在于,所述依赖信息包括先后顺序和/或包含关系。5.根据权利要求2所述的数据流图生成方法,其特征在于,所述获取所述各个过程块之间的关联或嵌套关系之后,所述方法还包括:将所述各个过程块中无用的过程块删除或转换为循环信息。6.根据权利要求1所述的数据流图生成方法,其特征在于,所述遍历所述代码块中各个过程块,生成所述各个过程块对应的块数据流图,包括:所述各个过程块以平铺的结构呈现在中间表示I...

【专利技术属性】
技术研发人员:张振刘宝森欧阳鹏
申请(专利权)人:北京清微智能信息技术有限公司
类型:发明
国别省市:

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

1