爱笑的小姐姐 · 2021年04月26日

Autokernel V1.0: 自动优化模块Autosearch正式开源

本文转自:Tengine开发者社区
作者: 小O妹

AutoKernel新模块

AutoKernel作为一个自动算子优化工具,已于2020年11月30日在GitHub正式开源,受到开发者广泛好评,时隔5个月,开发者们又给大家带来了新的惊喜,AutoKernel的新模块——AutoSearch自动优化工具也正式开源啦!

介绍本次AutoSearch模块之前,让我们先来温习一下关于AutoKernel的知识点,帮助更多新加入Tengine开发者社区的小伙伴感受完整的AutoKernel的生态模块:

01

什么是AutoKernel?

AutoKernel是一个高性能算子自动优化工具,可以自动优化调度策略、自动生成各硬件后端的底层优化代码,大幅减少各硬件芯片算子开发成本,提升算子优化效率,让工程师更快实现深度学习算法在各硬件芯片上的高性能部署。

image.png

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上测试,得到的性能结果如下:

image.png

原文:吕春莹

查看更多AutoKernel文档:

http://autokernel-docs.readth...

AutoSearch产品文档:

https://autokernel-docs-en.re...\_CN/latest/tutorials/autosearch.html

本次AutoSearch的开源也为各位开发者带来实战的机会,敬请关注Tengine开发社区的悬赏任务第五期,一起参与AutoKernel的开发工作,贡献开源项目~

推荐阅读

更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。
推荐阅读
关注数
3393
内容数
68
Tengine是一款轻量级模块化高性能的神经网络推理引擎 ;欢迎体验Tengine,[链接] 《Tengine开发者入门资料包》[链接]
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息