AKG 深度学习网络优化程序开源项目

我要开发同款
匿名用户2021年01月26日
37阅读
开发技术C/C++
所属分类人工智能、机器学习/深度学习
授权协议Apache-2.0

作品详情

AKG(AutoKernelGenerator)对深度神经网络中的算子进行优化,并提供特定模式下的算子自动融合功能。AKG与MindSpore的图算融合功能协同工作,可提升在不同硬件后端上运行网络的性能。

AKG由四个基本的优化模块组成:规范化、自动调度、指令发射和后端优化。

规范化: 为了解决polyhedral表达能力的局限性(只能处理静态的线性程序),需要首先对计算公式IR进行规范化。规范化模块中的优化主要包括自动运算符inline、循环拆分和公共子表达式优化等。

自动调度: 自动调度模块基于polyhedral技术,主要包括自动向量化、自动切分、依赖分析和数据搬移等。

指令发射: 指令发射模块的优化主要包括循环规范化、标签自动生成和指令发射等。

后端优化: 后端优化模块的优化主要包括双缓冲区、存储重写和同步指令插入等。

硬件后端支持

当前支持Ascend910,gpuv100/A100等,更多硬件后端支持待开发。

构建从MindSpore侧构建

详细细节请参考MindSporeREADME.md。

独立构建

我们建议您从MindSpore侧构建运行AKG代码,但同时为了方便开发,我们提供了独立编译运行AKG的方式。详细的编译依赖请参考MindSpore安装指南。

bashbuild.sh-t$target//targetcanset'gpu'or'ascend'运行设置环境变量

Ascend910

cdtestssource./test_env.shamd64exportRUNTIME_MODE='air_cloud'exportPATH=${PATH}:${YOUR_CCEC_COMPILER_PATH}

GPUV100/A100

cdtestssource./test_env.shgpu运行测试用例Ascend910cdtests/operators/vectorpytest-stest_abs_001.py-m"level0"#运行level0测试用例GPUV100/A100cdtests/operators/gpupython3test_all.py-a"op_name"#运行op_name算子测试用例
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论