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

news2024/11/17 22:40:48

在上篇文章中,我们学习了移植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

  • 下载地址:http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist

1.1 编译npu样例

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

  • 详细介绍参考musl官方参考手册
  • musl与glibc的差异点请参考musl与glibc功能对比
  • OpenHarmony使用llvm开源项目的C++ 标准库libc++作为C++运行时库。

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

image.png

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

image.png

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

image.png

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

  • 自行下载:https://releases.linaro.org/components/toolchain/gcc-linaro/
  • OpenHarmony源码也提供了,位于prebuilts/gcc/linux-x86/aarch64/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

image.png

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

image.png

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目录

image.png

将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

image.png

样例中的rknn_matmul_api_dynshape_demo默认依赖的库路径在开发板的lib目录下,所以需要将librknnrt.so依赖的glibc所有so复制到开发板的lib目录

image.png

3.执行样例

cd rknn_matmul_api_demo_Linux

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

image.png

如果没有成功移植npu驱动,执行样例会出现如下显示

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【球形空间产生器】

题目 代码 #pragma GCC optimize(3) #include <bits/stdc.h> using namespace std; const double eps 1e-6; const int N 12; double g[N][N]; double ss[N]; int n; void gauss() {int c, r, t;for(c 1, r 1; c < n; c){int t r;for(int i r1; i < n; i)i…

Wayfair封号的常见原因及解决方案解析

近期关于Wayfair账号封禁的问题引发了广泛讨论。许多用户报告称&#xff0c;他们的Wayfair账户被突然封禁&#xff0c;这一现象不仅影响了用户的购物体验&#xff0c;也对Wayfair的品牌形象造成了一定的冲击。本文将深入探讨Wayfair封号的原因&#xff0c;并提出相应的解决方案…

【SpringCloud】服务注册/服务发现-Eureka

服务注册/服务发现-Eureka 1. 背景1.1 问题描述1.2 解决思路1.3 什么是注册中⼼1.4 CAP理论1.5 常⻅的注册中⼼ 2. Eureka 介绍3. 搭建Eureka Server 1. 背景 1.1 问题描述 上个章节的例⼦中可以看到, 远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:90…

Flink CDC实时同步MySQL到Doris

文章目录 1.开启Flink集群2.MySQL准备数据并开启Binlog3.FlinkCDC 提交任务到集群任务提交同步变更库表迁移 问题总结 Apache Flink CDC&#xff08;Change Data Capture&#xff09;是一个用于捕获和跟踪数据库更改的技术&#xff0c;它能够实时地从数据库中获取数据变更&…

★ C++进阶篇 ★ map和set

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C进阶篇第四章----map和set ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博…

AVLTree【c++实现】

目录 AVL树1.AVL树的概念2.AVLTree节点的定义3.AVLTree的插入4.AVLTree的旋转4.1左单旋4.2右单旋4.3左右双旋4.4右左双旋 5.AVLTree的验证6.AVLTree的性能 AVL树 AVLTree的代码实现连接&#xff1a; AVLTree 代码链接 1.AVL树的概念 学习了二叉搜索树之后&#xff0c;我们知…

18年408数据结构

第一题&#xff1a; 解析&#xff1a;这道题很简单&#xff0c;按部就班的做就可以了。 画出S1&#xff0c;S2两个栈的情况&#xff1a; S1: S2: 2 3 - 8 * 5 从S1中依次弹出两个操作数2和3&a…

甄选范文“论企业应用系统的数据持久层架构设计”,软考高级论文,系统架构设计师论文

论文真题 数据持久层(Data Persistence Layer)通常位于企业应用系统的业务逻辑层和数据源层之间,为整个项目提供一个高层、统一、安全、并发的数据持久机制,完成对各种数据进行持久化的编程工作,并为系统业务逻辑层提供服务。它能够使程序员避免手工编写访问数据源的方法…

IDEA 高版本创建 Spring Boot 项目选不到 java 8

一、场景分析 现在高版本的 IDEA&#xff0c;创建 Spring Boot 项目时常常会选不到 Java 8&#xff1a; 直接使用 Java 17 新建项目&#xff0c;又会报错&#xff1a; Selected version of Java 17 is not supported by the project SDK 1.8. Either choose a lower version o…

Linux增加一个回收站功能(实用功能)

在linux中,默认是没有回收站的概念的,文件被删除之后,就没有了,很难进行恢复,本章教程,教你如何在linux中安装一个回收站功能,让你的文件即使删掉了,也有即使找回来。 一、安装插件 需要注意的是, python版本需要大于3.8,否则安装之后可能无法使用。 1、下载插件 ht…

基于Qt的多功能串口通信工具分享:实时数据收发与波形绘制

需要工程源码请私信 基于 Qt 框架开发的多功能串口通信工具&#xff0c;旨在为用户提供稳定、流畅的串口数据收发体验。该工具不仅支持基本的串口通信功能&#xff0c;还集成了定时发送、多线程数据处理、粘包问题解决、实时波形绘制等多种高级功能。通过使用 QSerialPort 进行…

录屏小白福音!三款神器助你轻松上手

生活工作中&#xff0c;需要借助录屏功能越来越家常便饭了&#xff0c;选择录屏软件时&#xff0c;主要考虑的是软件的易用性、功能以及用户评价等因素。以下是如何进行录屏的步骤&#xff0c;以及推荐的四个录屏软件的使用说明&#xff1a;关于如何录屏的步骤操作&#xff0c;…

使用 PowerShell 命令更改 RDP 远程桌面端口(无需修改防火墙设置)

节选自原文&#xff1a;Windows远程桌面一站式指南 | BOBO Blog 原文目录 什么是RDP&#xfffc;开启远程桌面 检查系统版本启用远程桌面连接Windows 在Windows电脑上在MAC电脑上在Android或iOS移动设备上主机名连接 自定义电脑名通过主机名远程桌面使用Hosts文件自定义远程主…

(undone) MIT6.824 Lecture1 笔记

参考1MIT课程视频&#xff1a;https://www.bilibili.com/video/BV16f4y1z7kn/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考2某大佬笔记&#xff1a;https://ashiamd.github.io/docsify-notes/#/study/%E5%88%86%E5%B8%83%…

TDSQL-C电商可视化,重塑电商决策新纪元

前言&#xff1a; 在数字化浪潮席卷全球的今天&#xff0c;电子商务行业以其独特的魅力和无限潜力&#xff0c;成为了推动全球经济增长的重要引擎。然而&#xff0c;随着业务规模的急剧扩张&#xff0c;海量数据的涌现给电商企业带来了前所未有的挑战与机遇。如何高效地处理、…

如何从飞机、电报中提取数据

电报&#xff0c;通常简称TG&#xff0c;是一个跨平台的即时通讯软件。客户端是开源的&#xff0c;而服务器是专有的。用户可以交换加密的、自毁的信息&#xff08;类似于“阅读后烧伤”&#xff09;&#xff0c;并共享各种文件&#xff0c;包括照片和视频。它的安全性很高&…

软件设计之SSM(1)

软件设计之SSM(1) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; Spring框架结构SpringIoC容器SpringIoC实践…

SD2.0 Specification之功能切换

文章目录 简述命令参数含义状态数据结构及含义功能切换流程Mode0(查询功能)步骤Mode1(切换功能)步骤示例 本文章主要讲解关于SD2.0功能切换(CMD6)的内容&#xff0c;基础概念和其它内容请参考以下文章。 SD2.0 Specification简述 简述 SD卡将一些功能进行分组&#xff0c;归属…

Python爬虫之requests(二)

Python爬虫之requests&#xff08;二&#xff09; 前面演示了requests模块的四种请求方式。接下来再来演示下综合的练习。 一、requests模块综合练习 需求&#xff1a;爬取搜狗知乎某一个词条对应的某个范围页码表示的页面数据。 点开搜狗首页&#xff0c;有一个知乎的版块…

基于小波变换与稀疏表示优化的RIE数据深度学习预测模型

加入深度实战社区:www.zzgcz.com&#xff0c;免费学习所有深度学习实战项目。 1. 项目简介 本项目旨在通过深度学习模型进行RSOP&#xff08;Remote Sensing Observation Prediction&#xff09;的数据预测。RSOP数据是基于远程传感技术采集的多维信息&#xff0c;广泛应用于…