development_arm_linux.md 2.0 KB
Newer Older
1
# ARM Linux开发文档
xiebaiyuan's avatar
xiebaiyuan 已提交
2

3 4 5 6 7 8 9 10
在ARM Linux如Raspberrypi3,或Firefly-RK3399上编译paddle-mobile。

## 预先安装

```shell
$ sudo apt update
$ sudo apt-get install -y cmake git
$ git clone https://github.com/PaddlePaddle/paddle-mobile.git
xiebaiyuan's avatar
xiebaiyuan 已提交
11 12
```

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
## 编译

在paddle-mobile根目录中,执行以下命令:

```shell
# 进入paddle-mobile根目录
$ cd <your-paddle-mobile>

# 可选:开启GPU支持,在CMakeLists.txt开启GPU_CL选项为ON
$ cp /usr/lib/aarch64-linux-gnu/libMali.so ./third_party/opencl/
$ cp /usr/lib/aarch64-linux-gnu/libOpenCL.so ./third_party/opencl/
$ ln -s ./third_party/opencl/libMali.so ./third_party/opencl/

# 编译
$ cd ./tools
$ /bin/bash build.sh arm_linux
xiebaiyuan's avatar
xiebaiyuan 已提交
29
```
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

- 动态库`so`文件位于`<paddle-mobile-repo>/build/release/arm-linux/build`目录;  
- 单元测试位于`<paddle-model-repo>/test/build`目录,若只编译如`googlenet`,可以执行`bash build.sh arm_linux googlenet`

## 运行

接着刚刚的命令,执行MobileNet模型:

```shell
# 导入编译好的动态库路径到LD_LIBRARY_PATH中
$ cd ../build/release/arm-linux/build
$ export LD_LIBRARY_PATH=.

# 执行MobileNet
# 可选:GPU执行./test-mobilenetgpu
$ cd ../../../../test/build/
$ ./test-mobilenet

# 执行顺利会打印如下日志
load cost :0ms
 Max element is 0.985921 at position 954
predict cost :121.462ms
如果结果Nan请查看: test/images/g_test_image_1x3x224x224_banana 是否存在?
xiebaiyuan's avatar
xiebaiyuan 已提交
53 54
```

55 56 57
注意:  
1. 如果本地仓库中`test`目录下没有模型,脚本会自动下载官方demo模型并解压;  
2. 因为ARM Linux设备算力限制,编译卡死重启机器尝试单线程编译(修改`tools/build.sh``build_for_arm_linux`的编译为`make -j`),或指定编译某个模型(如googlenet)或扩大系统的swap交换空间。
xiebaiyuan's avatar
xiebaiyuan 已提交
58

59
## 其它
xiebaiyuan's avatar
xiebaiyuan 已提交
60

61 62
- 若编译中提示有不识别的编译选项等ARM Linux平台的编译问题,可尝试修改`tools/build.sh`中的相关编译参数;  
- Android平台请参考Android开发文档.
xiebaiyuan's avatar
xiebaiyuan 已提交
63