diff --git a/docs/demo_guides/kunlunxin_xtcl.md b/docs/demo_guides/kunlunxin_xtcl.md
index e65f606c805..f3cc0be622d 100644
--- a/docs/demo_guides/kunlunxin_xtcl.md
+++ b/docs/demo_guides/kunlunxin_xtcl.md
@@ -1,18 +1,19 @@
# 昆仑芯 XTCL 部署示例
-Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部署。 目前支持子图接入方式,其接入原理是在线分析 Paddle 模型,将 Paddle 算子先转为统一的 NNAdapter 标准算子,再通过 XTCL 组网 API 进行网络构建,在线生成并执行模型。
+Paddle Lite 已支持昆仑芯系列芯片及板卡 在 X86 和 ARM 服务器上进行预测部署。 目前支持子图接入方式,其接入原理是在线分析 Paddle 模型,将 Paddle 算子先转为统一的 NNAdapter 标准算子,再通过 XTCL 组网 API 进行网络构建,在线生成并执行模型。
+XPU Tensor Compilation Library (XTCL),即昆仑芯针对机器学习领域实践而提供的图编译引擎库,可提供基于昆仑芯硬件相关的图层分析框架和加速优化能力。
## 支持现状
### 已支持的芯片
-- 昆仑 818-100(推理芯片)
-- 昆仑 818-300(训练芯片)
+- 昆仑芯1代AI芯片CK10/CK20
+- 昆仑芯2代AI芯片CR20
-### 已支持的设备
+### 已支持的AI加速卡
-- K100/K200 昆仑 AI 加速卡
-- R200 昆仑 AI 加速卡
+- 昆仑芯 AI 加速卡 K100/K200
+- 昆仑芯 AI 加速卡 R200
### 已验证支持的 Paddle 模型
@@ -72,6 +73,10 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
- [开源模型支持列表](../quick_start/support_model_list.md)
+**Note: 以上全部模型目前只在R200上测试验证通过,部分模型支持K100/K200.**
+
+
+
#### 性能
性能仅供参考,以实际运行效果为准。
@@ -85,9 +90,9 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
| [Inception-v4](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/InceptionV4.tgz) | 151.721399 | 3.128800 |
| [MobileNet-v1](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/MobileNetV1.tgz) | 23.442400 | 0.500800 |
| [MobileNet-v2](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/MobileNetV2.tgz) | 19.889200 | 1.411200 |
-| [ResNet-101](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/ResNet101.tgz) | 200.134998 | 1.392200 |
| [ResNet-18](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/ResNet18.tgz) | 47.691199 | 0.429400 |
| [ResNet-50](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/ResNet50.tgz) | 108.112999 | 0.815200 |
+| [ResNet-101](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/ResNet101.tgz) | 200.134998 | 1.392200 |
| [ResNeXt50](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/ResNeXt50_32x4d.tgz) | 110.684799 | 1.648600 |
| [SqueezeNet-v1](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/SqueezeNet1_0.tgz) | 33.140800 | 0.902400 |
| [VGG16](https://paddlelite-demo.bj.bcebos.com/NNAdapter/models/PaddleClas/VGG16.tgz) | 491.237994 | 1.542200 |
@@ -116,15 +121,15 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
## 参考示例演示
-### 测试设备( K100 昆仑 AI 加速卡)
+### 测试设备( 昆仑芯AI加速卡R200)
-![kunlunxin_xpu](https://paddlelite-demo.bj.bcebos.com/devices/baidu/baidu_xpu.jpg)
+
### 准备设备环境
-- K100/200 昆仑 AI 加速卡[规格说明书](https://paddlelite-demo.bj.bcebos.com/devices/baidu/K100_K200_spec.pdf);
-- K100 为全长半高 PCI-E 卡,K200 为全长全高 PCI-E 卡,要求使用 PCI-E x16 插槽,且需要单独的 8 针供电线进行供电;
-- 安装 K100/K200 驱动,目前支持 Ubuntu 和 CentOS 系统,由于驱动依赖 Linux kernel 版本,请正确安装对应版本的驱动安装包。
+- 昆仑芯AI加速卡R200[产品手册](https://baidu-kunlun-public.su.bcebos.com/paddle_lite/R200%20%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8C%E5%A4%96%E9%83%A8%E7%89%88_0923.pdf);
+- R200 为全高全长 PCI-E 卡,要求使用 PCIe4.0 x16 插槽,且需要单独的 8 针供电线进行供电;
+- 安装 [R200 XRE 驱动](https://baidu-kunlun-public.su.bcebos.com/paddle_lite/XRE%20%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C_v1.0.pdf),目前支持 Ubuntu 和 CentOS 系统,由于驱动依赖 Linux kernel 版本,请正确安装对应版本的驱动安装包。
### 准备本地编译环境
- 为了保证编译环境一致,建议根据机器的实际情况参考[ linux(x86) 编译](../source_compile/linux_x86_compile_linux_x86.rst)或[ linux(ARM) 编译](../source_compile/arm_linux_compile_arm_linux.rst)中的``准备编译环境``进行环境配置
@@ -189,11 +194,9 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
- ssd_detection_demo # 基于 ssd 的目标检测示例程序
```
-
- 进入 `PaddleLite-generic-demo/image_classification_demo/shell/`;
- 执行以下命令比较 mobilenet_v1_fp32_224 模型的性能和结果;
-
```shell
运行 mobilenet_v1_fp32_224 模型
@@ -233,10 +236,9 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
$ ./build.sh linux arm64
```
-### 更新支持昆仑芯XTCL 的 Paddle Lite 库
+### 更新支持昆仑芯XTCL的Paddle Lite库
- 下载 Paddle Lite 源码
-
```shell
$ git clone /~https://github.com/PaddlePaddle/Paddle-Lite.git
$ cd Paddle-Lite
@@ -244,18 +246,14 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
```
- 编译并生成 PaddleLite+NNAdapter+kunlunxin_xtcl for amd64 and arm64 的部署库
-
- - For amd64
-
- - full_publish 编译
-
+ - For amd64
+ - full_publish 编译
```shell
# 默认自动从云上下载kunlunxin_xtcl_sdk,如需指定,请使用参数--nnadapter_kunlunxin_xtcl_sdk_root
$ ./lite/tools/build_linux.sh --arch=x86 --with_extra=ON --with_log=ON --with_exception=ON --with_nnadapter=ON --nnadapter_with_kunlunxin_xtcl=ON full_publish
```
- - 替换头文件和库
-
+ - 替换头文件和库
```shell
# 清理原有 include 目录
$ rm -rf PaddleLite-generic-demo/libs/PaddleLite/linux/amd64/include/
@@ -272,50 +270,46 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
```
- For arm64
-
- - full_publish 编译
-
- ```shell
- # arm 环境下需要设置环境变量 CC 和 CXX,分别指定 C 编译器和 C++ 编译器的路径
- # 默认自动从云上下载kunlunxin_xtcl_sdk,如需指定,请使用参数--nnadapter_kunlunxin_xtcl_sdk_root
- $ export CC=
- $ export CXX=
- $ ./lite/tools/build_linux.sh --arch=armv8 --with_extra=ON --with_log=ON --with_exception=ON --with_nnadapter=ON --nnadapter_with_kunlunxin_xtcl=ON full_publish
- ```
-
- - 替换头文件和库
-
- ```shell
- # 清理原有 include 目录
- $ rm -rf PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/include/
- # 替换 include 目录
- $ cp -rf build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/include/ PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/include/
- # 替换 NNAdapter 运行时库
- $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libnnadapter.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/kunlunxin_xtcl/
- # 替换 NNAdapter device HAL 库
- $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libkunlunxin_xtcl.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/kunlunxin_xtcl/
- # 替换 libpaddle_full_api_shared.so
- $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libpaddle_full_api_shared.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/
- # 替换 libpaddle_light_api_shared.so
- $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libpaddle_light_api_shared.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/
- ```
-
-- 替换头文件后需要重新编译示例程序
+ - full_publish 编译
+ ```shell
+ # arm 环境下需要设置环境变量 CC 和 CXX,分别指定 C 编译器和 C++ 编译器的路径
+ # 默认自动从云上下载kunlunxin_xtcl_sdk,如需指定,请使用参数--nnadapter_kunlunxin_xtcl_sdk_root
+ $ export CC=
+ $ export CXX=
+ $ ./lite/tools/build_linux.sh --arch=armv8 --with_extra=ON --with_log=ON --with_exception=ON --with_nnadapter=ON --nnadapter_with_kunlunxin_xtcl=ON full_publish
+ ```
+
+ - 替换头文件和库
+ ```shell
+ # 清理原有 include 目录
+ $ rm -rf PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/include/
+ # 替换 include 目录
+ $ cp -rf build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/include/ PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/include/
+ # 替换 NNAdapter 运行时库
+ $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libnnadapter.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/kunlunxin_xtcl/
+ # 替换 NNAdapter device HAL 库
+ $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libkunlunxin_xtcl.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/kunlunxin_xtcl/
+ # 替换 libpaddle_full_api_shared.so
+ $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libpaddle_full_api_shared.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/
+ # 替换 libpaddle_light_api_shared.so
+ $ cp build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8.nnadapter/cxx/lib/libpaddle_light_api_shared.so PaddleLite-generic-demo/libs/PaddleLite/linux/arm64/lib/
+ ```
## 高级特性
+本节主要说明在不同的昆仑芯AI加速卡上如何设置不同的参数。以下列出了paddle lite下支持的两种高级参数。
- 高级参数
- KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS
-
- 指定昆仑芯 XPU 的 ID号,例如KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0,1,2,3或KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0。
+ 指定昆仑芯产品的 ID号。例如KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0或KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0,1,2,3
- KUNLUNXIN_XTCL_DEVICE_TARGET
+ 指定昆仑芯的不同类型的AI加速卡。例如KUNLUNXIN_XTCL_DEVICE_TARGET=xpu -libs=xdnn -device-type=xpu1或者KUNLUNXIN_XTCL_DEVICE_TARGET=xpu -libs=xdnn -device-type=xpu2
+ XPU 代指昆仑芯自主研发的芯片硬件架构,XPU1 用在昆仑芯 1 代系列产品,包括K100和K200;XPU2 用在昆仑芯 2 代系列产品,包括R200等。
- 指定昆仑芯 XPU 的不同类型的推理卡。例如KUNLUNXIN_XTCL_DEVICE_TARGET=xpu -libs=xdnn -device-type=xpu1或者KUNLUNXIN_XTCL_DEVICE_TARGET=xpu -libs=xdnn -device-type=xpu2
- **使用方式:**
- c++代码示例
+- 使用方式
+ - c++代码示例
```c++
// Run inference by using light api with MobileConfig
paddle::lite_api::MobileConfig mobile_config;
@@ -323,13 +317,13 @@ Paddle Lite 已支持昆仑芯 XPU 在 X86 和 ARM 服务器上进行预测部
std::string nnadapter_context_properties = "KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0;KUNLUNXIN_XTCL_DEVICE_TARGET=xpu -libs=xdnn -device-type=xpu1"
mobile_config.set_nnadapter_context_properties(nnadapter_context_properties);
```
- shell脚本示例
+
+ - shell脚本示例
```shell
export KUNLUNXIN_XTCL_SELECTED_DEVICE_IDS=0
export KUNLUNXIN_XTCL_DEVICE_TARGET="xpu -libs=xdnn -device-type=xpu1"
```
-
## 其他说明
-- 昆仑芯的研发同学正在持续适配更多的 Paddle 算子,以便支持更多的 Paddle 模型。
+- 昆仑芯的研发团队正在持续适配更多的 Paddle 算子,以便支持更多的 Paddle 模型。