@ -23,6 +23,12 @@ $ docker build -t username/paddle-android:dev . -f Dockerfile.android
$ docker pull paddlepaddle/paddle:latest-dev-android
$ docker pull paddlepaddle/paddle:latest-dev-android
```
```
对于国内用户,我们提供了加速访问的镜像源:
```bash
$ docker pull docker.paddlepaddlehub.com/paddle:latest-dev-android
```
### 编译PaddlePaddle C-API库
### 编译PaddlePaddle C-API库
构建好开发镜像后, 即可使用开发镜像来编译Android版PaddlePaddle C-API库。
构建好开发镜像后, 即可使用开发镜像来编译Android版PaddlePaddle C-API库。
Android的Docker开发镜像向用户提供两个可配置的参数:
Android的Docker开发镜像向用户提供两个可配置的参数:
@ -56,15 +62,15 @@ Android的Docker开发镜像向用户提供两个可配置的参数:
- 编译`armeabi-v7a`, `Android API 21`的PaddlePaddle库
- 编译`armeabi-v7a`, `Android API 21`的PaddlePaddle库
```bash
```bash
$ docker run -it --rm -v $PWD:/paddle -e "ANDROID_ABI=armeabi-v7a" -e "ANDROID_API=21" username/paddle-android:dev
$ docker run -it --rm -v $PWD:/paddle -e "ANDROID_ABI=armeabi-v7a" -e "ANDROID_API=21" username/paddle-android:dev
```
```
- 编译`arm64-v8a`, `Android API 21`的PaddlePaddle库
- 编译`arm64-v8a`, `Android API 21`的PaddlePaddle库
```bash
```bash
$ docker run -it --rm -v $PWD:/paddle -e "ANDROID_ABI=arm64-v8a" -e "ANDROID_API=21" username/paddle-android:dev
$ docker run -it --rm -v $PWD:/paddle -e "ANDROID_ABI=arm64-v8a" -e "ANDROID_API=21" username/paddle-android:dev
```
```
执行上述`docker run`命令时,容器默认执行[paddle/scripts/docker/build_android.sh](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/scripts/docker/build_android.sh)脚本。该脚本中记录了交叉编译Android版PaddlePaddle库常用的CMake配置, 并且会根据`ANDROID_ABI`和`ANDROID_API`自动构建独立工具链、进行编译和安装。由于arm64架构要求Android API不小于21。因此当`ANDROID_ABI=arm64-v8a`, `ANDROID_API< 21 ` 时 , Docker 容 器 中 将 默 认 使 用 ` Android API 21 ` 的 编 译 工 具 链 。 用 户 可 以 参 考 下 文 [ 配 置 交 叉 编 译 参 数 ] ( # 配 置 交 叉 编 译 参 数 ) 章 节 , 根 据 个 人 的 需 求 修 改 定 制 Docker 容 器 所 执 行 的 脚 本 。 编 译 安 装 结 束 之 后 , PaddlePaddle 的 C-API 库 将 被 安 装 到 ` $ PWD / install_android ` 目 录 , 所 依 赖 的 第 三 方 库 同 时 也 被 安 装 到 ` $ PWD / install_android / third_party ` 目 录 。
执行上述`docker run`命令时,容器默认执行[paddle/scripts/docker/build_android.sh](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/scripts/docker/build_android.sh)脚本。该脚本中记录了交叉编译Android版PaddlePaddle库常用的CMake配置, 并且会根据`ANDROID_ABI`和`ANDROID_API`自动构建独立工具链、进行编译和安装。由于arm64架构要求Android API不小于21。因此当`ANDROID_ABI=arm64-v8a`, `ANDROID_API< 21 ` 时 , Docker 容 器 中 将 默 认 使 用 ` Android API 21 ` 的 编 译 工 具 链 。 用 户 可 以 参 考 下 文 [ 配 置 交 叉 编 译 参 数 ] ( # 配 置 交 叉 编 译 参 数 ) 章 节 , 根 据 个 人 的 需 求 修 改 定 制 Docker 容 器 所 执 行 的 脚 本 。 编 译 安 装 结 束 之 后 , PaddlePaddle 的 C-API 库 将 被 安 装 到 ` $ PWD / install_android ` 目 录 , 所 依 赖 的 第 三 方 库 同 时 也 被 安 装 到 ` $ PWD / install_android / third_party ` 目 录 。
@ -155,7 +161,11 @@ cmake -DCMAKE_SYSTEM_NAME=Android \
..
..
```
```
用户还可根据自己的需求设置其他编译参数。比如希望最小化生成的库的大小,可以设置`CMAKE_BUILD_TYPE`为`MinSizeRel`;若希望最快的执行速度,则可设置`CMAKE_BUILD_TYPE`为`Release`。亦可以通过手动设置`CMAKE_C/CXX_FLAGS`来影响PaddlePaddle的编译过程。
用户还可根据自己的需求设置其他编译参数。
- 设置`CMAKE_BUILD_TYPE`为`MinSizeRel`,最小化生成的库的大小。
- 设置`CMAKE_BUILD_TYPE`为`Release`,获得最快的执行速度,
- 用户亦可以通过手动设置`CMAKE_C/CXX_FLAGS`来影响PaddlePaddle的编译过程。
**性能TIPS**, 为了达到最快的计算速度, 在CMake参数配置上, 有以下建议:
**性能TIPS**, 为了达到最快的计算速度, 在CMake参数配置上, 有以下建议: