OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) 原创

离北况归
发布于 2024-9-28 19:46
浏览
2收藏

在上篇文章中,我们学习了移植rk的npu驱动到OpenHarmony提供的内核。本文我们来学习如何在OpenHarmony标准系统rk系列芯片如何使用npu

OpenHarmony RK系列芯片运行npu测试用例

在移植npu驱动到OpenHarmony之后,来运行npu样例进行简单测试

1.O 测试准备

1.下载 rknpu2,下载地址:https://github.com/airockchip/rknn-toolkit2/tree/master

2.hdc工具:https://forums.openharmony.cn/forum.php?mod=viewthread&tid=1458

1.1 编译npu样例

OpenHarmony采用musl作为C标准库,而不是glibc

下载好rknpu2后,找到瑞芯微提供的librknnrt.so,它是一个板端的runtime库,npu运行需要该库。瑞芯微提供了两种,一种是安卓的so,一种是liunx的so。在OpenHarmony上使用linux的so。

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

librknnrt.so本文档采用linux aarch64位的,执行readelf -d librknnrt.so可知64位的so依赖以下库。

libpthread.so.0
libdl.so.2
libstdc++.so.6
libm.so.6
libgcc_s.so.1

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

rknpu2自带了一些测试用例,选择只依赖librknnrt.so库,不依赖其他库的。做最小化测试。所以编译rknn_matmul_api_demo测试样例,路径位于rknn-toolkit2-master/rknpu2/examples/rknn_matmul_api_demo。

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

1.编译工具链选择gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

2.在rknn_matmul_api_demo目录下执行如下命令

export GCC_COMPILER=/xxx/xxx/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu 

./build-linux.sh -t rk3568 -a aarch64 -b Release

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

3.编译好的二进制位于rknpu2/examples/rknn_matmul_api_demo/install

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib下的所有so复制到rknpu2/examples/rknn_matmul_api_demo/install/rknn_matmul_api_demo_Linux/lib目录

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

将rknn_matmul_api_demo二进制文件压缩为rknn_matmul_api_demo.tar.gz文件

cd rknn_matmul_api_demo
tar -czvf rknn_matmul_api_demo.tar.gz rknn_matmul_api_demo

1.2 运行编译好的npu样例

1.将rknn_matmul_api_demo.tar.gz发送至开发板data目录下面

hdc file send rknn_matmul_api_demo.tar.gz /data

2.解压文件并写将glibc的所有so复制到开发板的lib目录

hdc shell 

# 进入开发板data目录
cd data

# 解压rknn_matmul_api_demo.tar.gz文件
tar -zxvf  rknn_matmul_api_demo_Linux.tar.gz

# 将glibc的所有so复制到开发板的lib目录
mount -o remount,rw /
cp /data/rknn_matmul_api_demo_Linux/lib/* /lib

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

样例中的rknn_matmul_api_dynshape_demo默认依赖的库路径在开发板的lib目录下,所以需要将librknnrt.so依赖的glibc所有so复制到开发板的lib目录
OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

3.执行样例

cd rknn_matmul_api_demo_Linux

./rknn_matmul_api_dynshape_demo 2 1,64,32#4,64,32#8,64,32 1 1

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

如果没有成功移植npu驱动,执行样例会出现如下显示
OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用) -鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2024-11-20 20:38:59修改
收藏 2
回复
举报
回复
    相关推荐