[发明专利]用于加速器的程序生成方法和系统有效
申请号: | 201680001502.3 | 申请日: | 2016-11-09 |
公开(公告)号: | CN107250982B | 公开(公告)日: | 2020-11-06 |
发明(设计)人: | 汪涛;宋风龙;姚骏 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/448 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 加速器 程序 生成 方法 系统 | ||
1.一种用于加速器的程序生成方法,其特征在于,包括:
获取基于状态机的加速器程序描述,所述加速器程序描述包括用于实现应用程序的多个状态机,且所述多个状态机根据所述应用程序对应的有向无环图DAG中的数据依赖关系形成一条流水线;
利用加速器编译工具对所述加速器程序描述中的状态机进行状态机拼接,生成加速器程序;其中,所述状态机拼接包括:在时序约束下寻找多个状态机中可以并行执行的程序块,从而并行执行所述程序块。
2.根据权利要求1所述的方法,其特征在于,所述利用加速器编译工具对所述加速器程序描述中的状态机进行状态机拼接,生成加速器程序包括:
建立所述加速器程序描述中每个状态机的中间表达式,对不同状态机中相同结构的中间表达式进行拼接,生成组合状态机,得到加速器程序。
3.根据权利要求2所述的方法,其特征在于,所述建立所述加速器程序描述中每个状态机的中间表达式包括:
以所述加速器程序描述为基本输入,基于加速器微体系结构特点,分析所述加速器程序描述中每个状态机的基本结构,把每个状态机转换成中间表达式,所述中间表达式包括顺序块,循环块和重复块中的一种或多种。
4.根据权利要求3所述的方法,其特征在于,所述对不同状态机中相同结构的中间表达式进行拼接包括:
对不同状态机中的顺序块进行拼接,或者,对不同状态机中的循环块进行拼接,或者,对不同状态机中的重复块进行拼接。
5.根据权利要求3所述的方法,其特征在于,所述对不同状态机中相同结构的中间表达式进行拼接包括:
根据所述不同状态机的时序约束关系,确定所述不同状态机可以并行执行的相同结构的中间表达式进行拼接,以并行执行所述不同状态机中的指令。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对生成的所述加速器程序进行程序正确性检测。
7.根据权利要求6所述的方法,其特征在于,所述对生成的所述加速器程序进行程序正确性检测包括:
通过检测生成的所述加速器程序是否满足加速器指令集的约束,对所述加速器程序进行程序正确性检测。
8.根据权利要求7所述的方法,其特征在于,所述通过检测生成的所述加速器程序是否满足加速器指令集的约束,对所述加速器程序进行正确性检测包括:
对生成的所述加速器程序进行文法结构检测,资源冲突检测,及数据相关检测。
9.根据权利要求1至8任一所述的方法,其特征在于,所述获取基于状态机的加速器程序描述,包括:
利用所述有向无环图DAG描述所述应用程序的数据流图,利用加速器指令集分别建立所述DAG中各节点的所述状态机,根据所述DAG中的边表示的时间延迟在所述状态机之间建立所述流水线,获得基于状态机的所述加速器程序描述。
10.根据权利要求9所述的方法,其特征在于,所述DAG中的各节点代表执行所述应用程序的处理器或加速器的功能部件。
11.一种用于加速器的程序生成系统,其特征在于,包括:
获取模块,用于获取基于状态机的加速器程序描述,所述加速器程序描述包括用于实现应用程序的多个状态机,且所述多个状态机根据所述应用程序对应的有向无环图DAG中的数据依赖关系形成一条流水线;
编译模块,用于利用加速器编译工具对所述加速器程序描述中的状态机进行状态机拼接,生成加速器程序;其中,所述状态机拼接包括:在时序约束下寻找多个状态机中可以并行执行的程序块,从而并行执行所述程序块。
12.根据权利要求11所述的系统,其特征在于,
所述编译模块,具体用于建立所述加速器程序描述中每个状态机的中间表达式,对不同状态机中相同结构的中间表达式进行拼接,生成组合状态机,得到加速器程序。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680001502.3/1.html,转载请声明来源钻瓜专利网。