[发明专利]深度学习框架编译器宽度非一致自动向量优化方法有效
申请号: | 201910885725.6 | 申请日: | 2019-09-19 |
公开(公告)号: | CN112527262B | 公开(公告)日: | 2022-10-04 |
发明(设计)人: | 沈莉;周文浩;王飞;武文浩;肖谦 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06N20/00 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 深度 学习 框架 编译器 宽度 一致 自动 向量 优化 方法 | ||
1.一种深度学习框架编译器宽度非一致自动向量优化方法,其特征在于:基于异构平台,包括以下步骤:
S1、框架编译器前端识别计算图中可进行向量优化的子图,具体如下:
S11、以通过AI框架生成的深度学习负载作为输入,框架编译器根据AI框架的类型,识别深度学习负载的模型格式,并将深度学习负载转换为统一的计算图;
S12、框架编译器遍历步骤S11中获得的整个计算图,识别出计算图中可进行向量优化的子图,具体方法如下:
S13、框架编译器分析S11中获得的计算图中的数据依赖关系,构建计算图的数据依赖图,并基于数据依赖图,构建包含数据和语句依赖信息的有向图,使同一条语句内的所有数据节点都在一个强连通分量内,并对强连通分量之间的依赖边进行剪枝,实现有向图的更新操作;
S14、框架编译器分析步骤S13获得的包含数据和语句依赖信息的有向图中不同强连通分量内的数据节点之间的可达性,并根据数据节点之间的可达性,将不可达的数据节点从有向图中删除,并分析剩余的可达节点,获得识别出计算图中可进行向量优化的子图所需的数据和语句的依赖信息,从而确定子图中的循环是否可以进行向量优化;
S15、框架编译器前端对步骤S14确定的可进行向量优化的子图进行标记,并将标记后的子图传递给框架编译器中端进行处理;
S2、框架编译器中端对步骤S15标记的可进行向量优化的子图中的算子进行融合,并计算图编译为底层IR,具体如下:
S21、框架编译器中端遍历步骤S15标记的整个可进行向量优化的子图,搜索并标记所述子图中所有相邻的可进行向量优化的算子;
S22、将步骤S21中搜索到的相邻的可进行向量优化的算子进行融合,将融合后的算子中“向量-标量-向量”转换操作替换为“向量-向量”赋值操作;
S23、框架编译器中端通过层次化lower和优化,将步骤S22中算子融合后的计算图编译为底层IR;
S3、框架编译器后端根据异构众核处理器的控制核心和计算核心的向量宽度,分别对步骤S2中获得的底层IR进行宽度非一致的向量优化,具体如下:
S31、框架编译器后端根据控制核心和计算核心的向量宽度,分别对步骤S2中获得的底层IR进行循环展开;
S32、将步骤S31中被循环展开的底层IR修改为宽度非一致向量计算格式;
S4、框架编译器的代码生成模块将步骤S32获得的向量优化后的底层IR转换为用户指定的高级语言代码,并通过基础编译器生成向量优化后的平台目标码,具体如下:
S41、对于LLVM编译器,向量优化后的IR被LLVM编译器的代码生成模块转化为LLVM的中间表示,再通过LLVM编译器生成可执行程序;
S42、对于GCC编译器,向量优化后的IR通过C代码自动生成技术转化为C代码,进而通过GCC编译器生成可执行程序。
2.根据权利要求1所述的深度学习框架编译器宽度非一致自动向量优化方法,其特征在于:在S31中,针对控制核心,框架编译器后端将底层IR循环展开4次,针对运算核心,框架编译器后端将底层IR循环展开8次。
3.根据权利要求2所述的深度学习框架编译器宽度非一致自动向量优化方法,其特征在于:在S32中,针对控制核心,框架编译器后端将被展开的底层IR修改为4倍字向量宽度的向量计算格式,针对计算核心,框架编译器后端将被展开的底层IR修改为8倍字向量宽度的向量计算格式。
4.根据权利要求1所述的深度学习框架编译器宽度非一致自动向量优化方法,其特征在于:在S4中,所述高级语言代码包括C和LLVM中间表示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910885725.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:瞳高瞳距定位贴
- 下一篇:面向即时编译的基于动态库的GOT表管理方法