!93 add quadruple buffer for akg From: @dylangeng Reviewed-by: @ckey_dou,@anyrenwei Signed-off-by: @anyrenwei
View English
AKG(Auto Kernel Generator)对深度神经网络中的算子进行优化,并提供特定模式下的算子自动融合功能。AKG与MindSpore的图算融合功能协同工作,可提升在不同硬件后端上运行网络的性能。
AKG由三个基本的优化模块组成:规范化、自动调度和后端优化。
规范化: 为了解决polyhedral表达能力的局限性(只能处理静态的线性程序),需要首先对计算公式IR进行规范化。规范化模块中的优化主要包括自动运算符inline、自动循环融合和公共子表达式优化等。
自动调度: 自动调度模块基于polyhedral技术,主要包括自动向量化、自动切分、thread/block映射、依赖分析和数据搬移等。
后端优化: 后端优化模块的优化主要包括TensorCore使能、双缓冲区、内存展开和同步指令插入等。
当前支持gpu v100/A100,更多硬件后端支持待开发。
gpu v100/A100
详细细节请参考MindSpore README.md。
我们建议您从MindSpore侧构建运行AKG代码,但同时为了方便开发,我们提供了独立编译运行AKG的方式。 详细的编译依赖请参考MindSpore安装指南。
bash build.sh -e $target // target can set 'gpu'
GPU V100/A100
cd tests source ./test_env.sh gpu
cd tests/operators/gpu python3 test_all.py -a "op_name" #运行op_name算子测试用例
欢迎您的贡献,具体细节请参考MindSpore贡献者Wiki。
版本说明详见RELEASE.
Apache License 2.0
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
View English
AKG简述
AKG(Auto Kernel Generator)对深度神经网络中的算子进行优化,并提供特定模式下的算子自动融合功能。AKG与MindSpore的图算融合功能协同工作,可提升在不同硬件后端上运行网络的性能。
AKG由三个基本的优化模块组成:规范化、自动调度和后端优化。
规范化: 为了解决polyhedral表达能力的局限性(只能处理静态的线性程序),需要首先对计算公式IR进行规范化。规范化模块中的优化主要包括自动运算符inline、自动循环融合和公共子表达式优化等。
自动调度: 自动调度模块基于polyhedral技术,主要包括自动向量化、自动切分、thread/block映射、依赖分析和数据搬移等。
后端优化: 后端优化模块的优化主要包括TensorCore使能、双缓冲区、内存展开和同步指令插入等。
硬件后端支持
当前支持
gpu v100/A100
,更多硬件后端支持待开发。构建
从MindSpore侧构建
详细细节请参考MindSpore README.md。
独立构建
我们建议您从MindSpore侧构建运行AKG代码,但同时为了方便开发,我们提供了独立编译运行AKG的方式。 详细的编译依赖请参考MindSpore安装指南。
运行
GPU V100/A100
贡献
欢迎您的贡献,具体细节请参考MindSpore贡献者Wiki。
版本说明
版本说明详见RELEASE.
许可证
Apache License 2.0