生成用于并行计算架构的源代码的方法及源到源编译器的制造方法_3

文档序号:8258114阅读:来源:国知局
述元素操作的AST。
[0089] S卩,源到源编译器采用Matrix Lower方式将所述向量矩阵操作的AST转化成元素 操作的AST。
[0090] 需要说明的是,Lower在编译领域,通常指将一种高级的表示形式转化为另一种低 级的表示形式,比如从诸如C这样的高级语言转换为汇编语言的过程即可称为lower过程。 其中,高级的表示形式是抽象化的,更贴近于人的理解;低级的表示形式是具体的,更贴近 于机器的执行。
[0091] 进一步的,如图7所示,本发明实施例中,在源到源编译器根据预设规则,将所述 向量矩阵操作的AST转化成元素操作的AST (步骤S202b)之后,源到源编译器根据所述并 行计算架构的信息,将所述元素操作的AST转化为第二AST(步骤S204a)之前,还可以包 括:
[0092] S206、源到源编译器将所述元素操作的AST进行优化,获得优化后的所述元素操 作的AST。
[0093] 源到源编译器根据所述并行计算架构的信息,将所述元素操作的AST转化为所述 第二AST(步骤S204a),具体可以包括:
[0094] S204al、源到源编译器根据所述并行计算架构的信息,将所述优化后的所述元素 操作的AST转化为所述第二AST。
[0095] 即,本发明实施例中,在源到源编译器根据预设规则,将所述向量矩阵操作的AST 转化成元素操作的AST之后,还可以进行AST优化。这样可以提高程序在处理器中的执行 效率。其中,编译器优化的方法与理论很多,本发明实施例的元素操作的AST优化通常与矩 阵的并行操作有关,常见的有循环合并、寄存器提升、窥孔优化等,本发明实施例对此不作 具体限定。
[0096] 需要说明的是,本发明实施例中,源到源编译器还可以对第二AST进行优化,这样 可进一步提升程序在处理器中的执行效率。其中,该优化为与并行计算架构相关的优化,具 体可参考现有技术的方案,本发明实施例在此不再赘述。
[0097] 需要说明的是,本发明实施例中,源到源编译器还可以对向量矩阵操作的AST进 行优化,这样可进一步提升程序在处理器中的执行效率。其中,该优化为矩阵级优化,常 见的有根据矩阵运算符关系和矩阵的维度等信息选择最优算法,本发明实施例在此不再赘 述。
[0098] 下面以上述提供的生成用于并行计算架构的源代码的方法为例,假设ARM-V8 NEON的一个矩阵乘法场景,其从向量矩阵的源代码(第一源代码)到生成ARM-vS NEON并 行计算架构的源代码(第二源代码)的源到源转换过程如下:
[0099] 第一,源到源编译器接收第一源代码,该第一源代码具体如下所示:
[0100]
【主权项】
1. 一种生成用于并行计算架构的源代码的方法,其特征在于,所述方法包括: 接收第一源代码,所述第一源代码为用户输入的向量矩阵的源代码; 解析所述第一源代码,获得第一抽象语法树AST,其中,所述第一 AST为与所述并行计 算架构无关的AST; 获取所述并行计算架构的信息,并根据所述并行计算架构的信息,将所述第一 AST转 化为第二AST,其中,所述第二AST为与所述并行计算架构相关的AST ; 将所述第二AST转化为所述并行计算架构的第二源代码,所述第二源代码为所述并行 计算架构的编译器能够编译的源代码。
2. 根据权利要求1所述的方法,其特征在于,所述解析所述第一源代码,获得第一抽象 语法树AST,其中,所述第一 AST为与所述并行计算架构无关的AST,包括: 解析所述第一源代码,获得向量矩阵操作的AST ; 根据预设规则,将所述向量矩阵操作的AST转化成元素操作的AST ; 所述根据所述并行计算架构的信息,将所述第一 AST转化为第二AST,包括: 根据所述并行计算架构的信息,将所述元素操作的AST转化为所述第二AST。
3. 根据权利要求2所述的方法,其特征在于,所述根据预设规则,将所述向量矩阵操作 的AST转化成元素操作的AST,包括; 在预设的元素操作的函数库中查找所述向量矩阵操作对应的函数体; 用所述向量矩阵操作对应的函数体的AST替换所述向量矩阵操作的AST,获得所述元 素操作的AST。
4. 根据权利要求2所述的方法,其特征在于,所述根据预设规则,将所述向量矩阵操作 的AST转化成元素操作的AST,包括; 根据所述向量矩阵操作的操作符与操作数,将所述向量矩阵操作的AST进行分解,获 得所述向量矩阵操作的AST对应的元素操作的函数; 用所述向量矩阵操作的AST对应的元素操作的函数的AST替换所述向量矩阵操作的 AST,获得所述元素操作的AST。
5. 根据权利要求2-4任一项所述的方法,其特征在于,在所述根据预设规则,将所述向 量矩阵操作的AST转化成元素操作的AST之后,所述根据所述并行计算架构的信息,将所述 元素操作的AST转化为所述第二AST之前,还包括: 将所述元素操作的AST进行优化,获得优化后的所述元素操作的AST ; 所述根据所述并行计算架构的信息,将所述元素操作的AST转化为所述第二AST,包 括: 根据所述并行计算架构的信息,将所述优化后的所述元素操作的AST转化为所述第二 AST。
6. -种源到源编译器,其特征在于,所述源到源编译器包括;接收单元、解析单元、获 取单元、第一转化单元、第二转化单元; 所述接收单元,用于接收第一源代码,所述第一源代码为用户输入的向量矩阵的源代 码; 所述解析单元,用于解析所述第一源代码,获得第一抽象语法树AST,其中,所述第一 AST为与所述并行计算架构无关的AST ; 所述获取单元,用于获取所述并行计算架构的信息; 所述第一转化单元,用于根据所述并行计算架构的信息,将所述第一 AST转化为第二 AST,其中,所述第二AST为与所述并行计算架构相关的AST ; 所述第二转化单元,用于将所述第二AST转化为所述并行计算架构的第二源代码,所 述第二源代码为所述并行计算架构的编译器能够编译的源代码。
7. 根据权利要求6所述的源到源编译器,其特征在于,所述解析单元包括:解析模块、 转化模块; 所述解析模块,用于解析所述第一源代码,获得向量矩阵操作的AST ; 所述转化模块,用于根据预设规则,将所述向量矩阵操作的AST转化成元素操作的 AST ; 所述第一转化单元具体用于: 根据所述并行计算架构的信息,将所述元素操作的AST转化为所述第二AST。
8. 根据权利要求7所述的源到源编译器,其特征在于,所述转化模块具体用于: 在预设的元素操作的函数库中查找所述向量矩阵操作对应的函数体; 用所述向量矩阵操作对应的函数体的AST替换所述向量矩阵操作的AST,获得所述元 素操作的AST。
9. 根据权利要求7所述的源到源编译器,其特征在于,所述转化模块具体用于: 根据所述向量矩阵操作的操作符与操作数,将所述向量矩阵操作的AST进行分解,获 得所述向量矩阵操作的AST对应的元素操作的函数; 用所述向量矩阵操作的AST对应的元素操作的函数的AST替换所述向量矩阵操作的 AST,获得所述元素操作的AST。
10. 根据权利要求7-9任一项所述的源到源编译器,其特征在于,所述源到源编译器还 包括;优化单元; 所述优化单元,用于在所述转化模块根据预设规则,将所述向量矩阵操作的AST转化 成元素操作的AST之后,所述第一转化单元根据所述并行计算架构的信息,将所述元素操 作的AST转化为所述第二AST之前,将所述元素操作的AST进行优化,获得优化后的所述元 素操作的AST ; 所述第一转化单元具体用于: 根据所述并行计算架构的信息,将所述优化后的所述元素操作的AST转化为所述第二 AST。
【专利摘要】本发明实施例提供生成用于并行计算架构的源代码的方法及源到源编译器,能够提高生成用于并行计算架构的源代码时的效率与可移植性。方法包括:接收第一源代码,所述第一源代码为用户输入的向量矩阵的源代码;解析所述第一源代码,获得第一抽象语法树AST,其中,所述第一AST为与所述并行计算架构无关的AST;获取所述并行计算架构的信息,并根据所述并行计算架构的信息,将所述第一AST转化为第二AST,其中,所述第二AST为与所述并行计算架构相关的AST;将所述第二AST转化为所述并行计算架构的第二源代码,所述第二源代码为所述并行计算架构的编译器能够编译的源代码。本发明适用于计算机领域。
【IPC分类】G06F9-38, G06F9-45
【公开号】CN104572234
【申请号】CN201410841579
【发明人】崔世强, 叶寒栋, 胡焰林
【申请人】杭州华为数字技术有限公司
【公开日】2015年4月29日
【申请日】2014年12月29日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1