Skip to content

Commit

Permalink
update Readme
Browse files Browse the repository at this point in the history
  • Loading branch information
lyuchuny3 committed Nov 30, 2020
1 parent 6058928 commit 708b417
Showing 1 changed file with 45 additions and 9 deletions.
54 changes: 45 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<p align="center"><img width="30%" src="doc/logo.png" /></p>

# AutoKernel

## 简介
Expand All @@ -20,7 +22,7 @@ AutoKernel是由OPEN AI LAB提出的高性能算子自动优化工具,可以
AutoKernel分为三个模块:
* 算子生成器:

该模块使用了开源项目[Halide](https://github.com/halide/Halide);Halide是业界广泛使用的自动代码生成项目,它首次提出将计算和调度分离。该模块的输入是和硬件无关的算子计算描述,输出是相应后端的优化汇编代码/目标文件
该模块使用了开源项目[Halide](https://github.com/halide/Halide);Halide是业界广泛使用的自动代码生成项目,它首次提出将计算和调度分离。该模块的输入是和硬件无关的算子计算描述,输出是相应后端的优化汇编代码/目标文件

* 自动搜索模块:

Expand All @@ -39,35 +41,67 @@ docker pull openailab/autokernel
# 启动容器,进入开发环境
docker run -it openailab/autokernel /bin/bash
```
docker里面提供了安装好的Halide和Tengine
docker里面提供了安装好的Halide和Tengine
```
/workspace/Halide # Halide
/workspace/Tengine # Tengine
```

克隆AutoKernel项目
克隆AutoKernel项目
```
git clone https://github.com/OAID/AutoKernel.git
```
一键生成算子汇编代码
我们首先看看`autokernel_plugin/src/`的文件目录:
```
autokernel_plugin/src/
|-- CMakeLists.txt
|-- direct_conv
| |-- build.sh
| |-- direct_conv.cpp
| |-- direct_conv.h
| |-- direct_conv_gen.cc
|-- im2col_conv
| |-- build.sh
| |-- im2col_conv.cpp
| |-- im2col_conv.h
| `-- im2col_conv_gen.cc
`-- plugin_init.cpp
```
可以看到`src`目录下有两个文件夹,每个文件夹的目录下有:
- xxx_gen.cc, 用Halide语言的算子描述(algorithm)和调度策略(schedule)
- build.sh 用于编译xxx_gen
- xxx.h 和 xxx.cpp是用Tengine算子接口封装的算子实现

一键生成算子汇编代码:
```
cd AutoKernel/autokernel_plugin
chmod +x -R .
./scripts/generate.sh #自动生成算子汇编文件
```
一键编译 `libAutoKernel.so`
运行完这一步,可以看到原来的目录下多了两个自动生成的文件:
```
|-- im2col_conv
| |-- halide_im2col_conv.h
| |-- halide_im2col_conv.s
|-- direct_conv
| |-- halide_direct_conv.h
| `-- halide_direct_conv.s
```
接下来使用自动生成的文件,把Autokernel注册进tengine,一键编译 `libAutoKernel.so`
```
mkdir build
cd build
cmake ..
make -j4
```
运行测试
生成的库在`/workspace/AutoKernel/autokernel_plugin/build/src/libautokernel.so`

运行测试,在测试代码中调用`load_tengine_plugin()`:
```
cd AutoKernel/autokernel_plugin
./build/tests/tm_classification -n squeezenet
```
运行结果
分类网络的运行结果如下

```
AutoKernel plugin inited
Expand All @@ -86,13 +120,15 @@ max time is 55.932 ms, min time is 55.932 ms
--------------------------------------
ALL TEST DONE
```
可以看到,输出结果显示调用了`AutoKernel plugin`里的函数。

## 开发者指南

* 如何快速开发一个自动优化的新算子:[doc/how_to_add_op.md](doc/how_to_add_op.md)
* AutoKernel教程:[doc/tutorials](doc/tutorials/readme.md)


## Roadmap
- [Road map](doc/roadmap.md)

## License

Expand All @@ -103,4 +139,4 @@ ALL TEST DONE
- Github issues
- QQ 群: 829565581
- Email: [email protected]
- Tengine 社区: https://www.tengine.org.cn
- 微信公众号: Tengine开发者社区

0 comments on commit 708b417

Please sign in to comment.