推荐开源项目:AKG(Auto Kernel Generator)
项目介绍
AKG(Auto Kernel Generator)是一个专为深度神经网络算子优化而设计的开源项目。它不仅能够对算子进行高效的优化,还提供了特定模式下的算子自动融合功能。通过与MindSpore的图算融合功能协同工作,AKG显著提升了在不同硬件后端上运行网络的性能。
项目技术分析
AKG由三个核心优化模块组成,分别是规范化、自动调度和后端优化:
- 规范化模块:针对polyhedral表达能力的局限性,规范化模块通过自动运算符inline、自动循环融合和公共子表达式优化等手段,对计算公式IR进行预处理,使其更适合后续优化。
- 自动调度模块:基于polyhedral技术,该模块包括自动向量化、自动切分、thread/block映射、依赖分析和数据搬移等功能,确保算子在硬件上的高效执行。
- 后端优化模块:针对特定硬件进行优化,包括TensorCore使能、双缓冲区、内存展开和同步指令插入等,进一步提升算子执行效率。
项目及技术应用场景
AKG支持多种硬件后端,包括Ascend910
、NVIDIA V100/A100
和CPU
等,适用于以下场景:
- 深度学习模型训练与推理:通过优化算子,提升模型在不同硬件平台上的运行速度。
- 高性能计算:利用自动调度和后端优化,提高科学计算和工程模拟的效率。
- 异构计算:在多硬件环境下,实现算子的最优调度和执行。
项目特点
- 高性能优化:通过多层次的优化策略,显著提升算子执行性能。
- 硬件兼容性强:支持多种主流硬件平台,易于在不同环境中部署。
- 易于使用:提供详细的构建和运行指南,用户可轻松上手。
- 开源社区支持:项目开源,欢迎开发者贡献代码,共同推动项目发展。
构建
从MindSpore侧构建
详细步骤请参考MindSpore README.md。
独立构建
为方便开发,AKG提供了独立编译运行的方式:
-
构建Ascend910版本
git clone https://gitee.com/mindspore/akg.git cd akg bash build.sh -e ascend -j8
-
构建GPU版本
git clone https://gitee.com/mindspore/akg.git cd akg bash build.sh -e gpu -j8
-
构建CPU版本
git clone https://gitee.com/mindspore/akg.git cd akg bash build.sh -e cpu -j8
运行
- 设置环境变量
-
Ascend910
cd tests source ./test_env.sh
-
NVIDIA V100/A100
cd tests source ./test_env.sh gpu
-
CPU
cd tests source ./test_env.sh cpu
- 运行测试用例
-
使用测试脚本
cd tests/st python run.py -e gpu -o add -l level0 # 执行GPU Add算子的level0用例
-
使用测试文件
-
Ascend910
cd tests/st/ops/ pytest -s test_abs.py -m "level0 and platform_x86_ascend_training" # 运行Ascend level0测试用例
-
NVIDIA V100/A100
cd tests/st/ops/ pytest -s test_abs.py -m "level0 and platform_x86_gpu_training" # 运行GPU level0测试用例
-
CPU
cd tests/st/ops/ pytest -s test_abs.py -m "level0 and platform_x86_cpu" # 运行CPU level0测试用例
-
使用AKG生成高性能算子
详细使用方法请参考Wiki。
贡献
欢迎开发者贡献代码,具体细节请参考MindSpore贡献者Wiki。
版本说明
版本说明详见RELEASE。
许可证
项目采用Apache License 2.0许可证。
AKG作为一个高效、易用的算子优化工具,无疑是深度学习和高性能计算领域的宝贵资源。立即尝试AKG,提升您的项目性能吧!