推荐开源项目:AKG(Auto Kernel Generator)

推荐开源项目:AKG(Auto Kernel Generator)

akg AKG (Auto Kernel Generator) is an optimizer for operators in Deep Learning Networks, which provides the ability to automatically fuse ops with specific patterns. akg 项目地址: https://gitcode.com/gh_mirrors/ak/akg

项目介绍

AKG(Auto Kernel Generator)是一个专为深度神经网络算子优化而设计的开源项目。它不仅能够对算子进行高效的优化,还提供了特定模式下的算子自动融合功能。通过与MindSpore的图算融合功能协同工作,AKG显著提升了在不同硬件后端上运行网络的性能。

项目技术分析

AKG由三个核心优化模块组成,分别是规范化、自动调度和后端优化:

  • 规范化模块:针对polyhedral表达能力的局限性,规范化模块通过自动运算符inline、自动循环融合和公共子表达式优化等手段,对计算公式IR进行预处理,使其更适合后续优化。
  • 自动调度模块:基于polyhedral技术,该模块包括自动向量化、自动切分、thread/block映射、依赖分析和数据搬移等功能,确保算子在硬件上的高效执行。
  • 后端优化模块:针对特定硬件进行优化,包括TensorCore使能、双缓冲区、内存展开和同步指令插入等,进一步提升算子执行效率。

AKG设计图

项目及技术应用场景

AKG支持多种硬件后端,包括Ascend910NVIDIA V100/A100CPU等,适用于以下场景:

  • 深度学习模型训练与推理:通过优化算子,提升模型在不同硬件平台上的运行速度。
  • 高性能计算:利用自动调度和后端优化,提高科学计算和工程模拟的效率。
  • 异构计算:在多硬件环境下,实现算子的最优调度和执行。

项目特点

  • 高性能优化:通过多层次的优化策略,显著提升算子执行性能。
  • 硬件兼容性强:支持多种主流硬件平台,易于在不同环境中部署。
  • 易于使用:提供详细的构建和运行指南,用户可轻松上手。
  • 开源社区支持:项目开源,欢迎开发者贡献代码,共同推动项目发展。

构建

从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
    

运行

  1. 设置环境变量
  • 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
    
  1. 运行测试用例
  • 使用测试脚本

    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,提升您的项目性能吧!

akg AKG (Auto Kernel Generator) is an optimizer for operators in Deep Learning Networks, which provides the ability to automatically fuse ops with specific patterns. akg 项目地址: https://gitcode.com/gh_mirrors/ak/akg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花琼晏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值