本文转自:Tengine开发者社区
作者: 小O妹
AutoKernel新模块
AutoKernel作为一个自动算子优化工具,已于2020年11月30日在GitHub正式开源,受到开发者广泛好评,时隔5个月,开发者们又给大家带来了新的惊喜,AutoKernel的新模块——AutoSearch自动优化工具也正式开源啦!
介绍本次AutoSearch模块之前,让我们先来温习一下关于AutoKernel的知识点,帮助更多新加入Tengine开发者社区的小伙伴感受完整的AutoKernel的生态模块:
01
什么是AutoKernel?
AutoKernel是一个高性能算子自动优化工具,可以自动优化调度策略、自动生成各硬件后端的底层优化代码,大幅减少各硬件芯片算子开发成本,提升算子优化效率,让工程师更快实现深度学习算法在各硬件芯片上的高性能部署。
02
AutoKernel三大模块
l 算子生成器模块Op Generator :该模块采用开源项目Halide, Halide最早是用于图形处理领域的高性能算子的自动化生成,它实现算法描述和调度优化的分离,该模块后端代码生成和业界编译器系统LLVM对接,可编译生成不同后端的代码;
l 自动搜索模块 AutoSearch:该模块可以自动生成不同后端的算子优化调度策略,支持x86-cpu, cuda-gpu, arm-cpu,arm-mali-gpu等后端的调度策略自动生成
l 算子部署模块 AutoKernel Plugin:该模块将生成的优化算子代码以plugin的形式集成到Tengine的代码中,实现一键部署;
03
什么是AutoSearch?
AutoSearch是一个策略搜索和自动优化的模块,它支持生成cpu和gpu的schedule,并且可以生成运行在不同平台(x86或arm)的代码文件。AutoSearch集成了学术界自动调优的近年来的最新研究成果,提供一个简单易用的toolkit供开发者快速使用自动调优功能。除了自动优化算子策略外,我们还增加了对输入数据排布方式的优化(data transform)。
开发者可以通过我们提供的toolkit快速使用AutoSearch的自动调优功能。
cd AutoKernel/AutoSearch/toolkit
`python3 tools.py --gen ../generator/batch_matmul.cpp --target x86-64-linux -autotune -compute_time`
在自动调优的过程,可以使用-datatransform选项来自动选择合适的数据排布,以获得更优的调优性能。
python3 tools.py --gen ../generator/batch_matmul.cpp --target x86-64-linux -autotune -compute_time -datatransform
矩阵乘法matmul在shape为M=N=K=512的情况下,在 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz和fireflyRK3399上测试,得到的性能结果如下:
原文:吕春莹
查看更多AutoKernel文档:
http://autokernel-docs.readth...
AutoSearch产品文档:
https://autokernel-docs-en.re...\_CN/latest/tutorials/autosearch.html
本次AutoSearch的开源也为各位开发者带来实战的机会,敬请关注Tengine开发社区的悬赏任务第五期,一起参与AutoKernel的开发工作,贡献开源项目~
推荐阅读
- Khadas VIM3(Amlogic A311D)上进行Tengine模型推理
- AAAI 2021 YOLObile:移动设备上的实时目标检测
- Raspberry Pi Pico 实战案例:LED/温湿度传感器/姿态传感器
更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。