赞
踩
OrangePi AIpro(8T) 开发板,是香橙派与华为联合打造的,偏向人工智能应用。
OrangePi Kunpeng Pro 与 OrangePi AIpro 都是和华为合作产品。
华为麒麟、昇腾、鲲鹏等几大系列芯片中,昇腾和鲲鹏都致力于成为算力底座,昇腾面向AI计算,鲲鹏面向通用计算。
昇腾 Ascend 310 系列有 310B1 和 310B4。
310B1:表示芯片算力规格为20T。
310B4:表示芯片算力规格为8T。
目前已知,OrangePi AIpro(8T) 和 Atlas 200I DK A2 都采用 310B4 芯片。算力都是 8 TOPS。
OrangePi AIpro(8T) 使用 Hi1910 模块,其中包含一个芯片 Ascend 310B4,对应算力是 8 TOPS。Ascend 310B1 芯片算力是 16 TOPS。
(base) root@orangepiaipro:/home/HwHiAiUser/Desktop# npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.0 Version: 23.0.0 |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) |
| Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) |
+===============================+=================+======================================================+
| 0 310B4 | Alarm | 0.0 47 15 / 15 |
| 0 0 | NA | 0 1985 / 7545 |
+===============================+=================+======================================================+
# npu-smi info -t board -i 0 -c 0
NPU ID : 0
Chip ID : 0
Chip Type : Ascend
Chip Name : 310B4
Chip Version : V1
Board ID : 0x280b
Module Board ID : NA
PCB ID : NA
BOM ID : 1
Die ID : V1, 17450D64 01C20310 519BD217 5A69090A 26B80000
Atlas 200I DK A2 采用 310B4 芯片。
Atlas 200I DK A2 是 Atlas 200DK 之后的一款产品,从2022年一直酝酿至今,终于在2023年5月6日-7日昇腾AI开发者峰会2023正式发布。
该开发者套件,算力 8 TOPS,通常配备有4GB RAM和128GB的microSD存储空间,操作系统为Ubuntu 22.04 LTS。此外,它还支持CANN(Compute Architecture for Neural Networks)7.0.RC1版本,用于神经网络计算的优化和加速。
售价 1999。
账户:HwHiAiUser
密码:Mind@123
可以看到预装系统是Ubuntu,版本是22.04
先连接 wifi,然后使用 ifconfig 查看 IP 地址 192.168.0.115
电脑中在 cmd 窗口中输入
ssh root@192.168.0.115
然后输入密码进入
WinSCP 连接后,方便传输文件。
如下图,本开发板有40pin引脚。
开发板 40 pin 接口引脚的功能如下表所示,其中标红部分的引脚默认配置为GPIO 功能,可以直接使用,其他具有 GPIO 复用功能的引脚需要修改DTS 配置才能正常使用 GPIO 的功能。
Linux 镜像中预装了 gpio_operate 工具用于设置 GPIO 管脚的输入与输出方向,也可将每个 GPIO 管脚独立的设为 0 或 1。
类型 | 描述 |
---|---|
gpio_group | GPIO组号,取值为[0,8] |
gpio_pin | GPIO管脚号,取值为[0,31] |
direction | GPIO 管脚方向,取值为[0,1] 0:输入方向 1:输出方向 |
value | GPIO 管脚值,取值为[0,1] 当 GPIO 管脚方向为输入方向时,不允许设置 GPIO 管脚值 |
# gpio_operate help (base) root@orangepiaipro:~# gpio_operate -h Usage: gpio_operate <Command|-h> [Options...] gpio_operate Command: -h : This command's help information. set_value : Set gpio pin value. get_value : Get gpio pin value. set_direction : Set gpio pin direction value. get_direction : Get gpio pin direction value. # 查询GPIO管脚方向 gpio_operate get_direction gpio_group gpio_pin eg: gpio_operate get_direction 7 3 # 设置GPIO管脚方向 gpio_operate set_direction gpio_group gpio_pin direction eg: gpio_operate set_direction 7 3 1 # 查询GPIO管脚值 gpio_operate get_value gpio_group gpio_pin eg: gpio_operate get_value 7 3 # 用于设置GPIO管脚值为高电平或者低电平 # 注意设置管脚值前,请确保已将 GPIO 管脚的方向设置为输出 gpio_operate set_value gpio_group gpio_pin value eg: gpio_operate set_value 7 3 1
(base) root@orangepiaipro:~# gpio_operate get_direction 7 3
Get gpio pin direction value successed, value is 0.
(base) root@orangepiaipro:~# gpio_operate set_direction 7 3 1
Set gpio pin direction value successed.
(base) root@orangepiaipro:~# gpio_operate get_value 7 3
Get gpio pin value successed, value is 0.
(base) root@orangepiaipro:~# gpio_operate set_value 7 3 1
Set gpio pin value successed.
(base) root@orangepiaipro:~# gpio_operate get_value 7 3
Get gpio pin value successed, value is 1.
(base) root@orangepiaipro:~#
12:IO [7,3]
13:IO [1,6]
14:GND
15:IO [2,15]
gpio_operate set_direction 7 3 1
gpio_operate set_direction 1 6 1
gpio_operate set_direction 2 15 1
gpio_operate set_value 7 3 1
gpio_operate set_value 1 6 1
gpio_operate set_value 2 15 1
都不做实时优化的情况下进行对比:
(base) root@orangepiaipro:# sysctl kernel.sched_rt_runtime_us
kernel.sched_rt_runtime_us = 950000
(base) root@orangepiaipro:# sudo sysctl kernel.sched_rt_period_us
kernel.sched_rt_period_us = 1000000
(base) root@orangepiaipro:#
/proc/sys/kernel/sched_rt_period_us //默认是1000000us
/proc/sys/kernel/sched_rt_runtime_us //默认是950000us
表示1s内,实时进程最多占用cpu 0.95s的时间,其余0.05s需要留给TASK_RUNNING的普通进程,以免普通进程被饿死。
设置参数
sudo sysctl -w kernel.sched_rt_runtime_us=950000
sudo sysctl -w kernel.sched_rt_period_us=1000000
cyclictest 所测得的延时是中断延时加调度延时。
(1)Debian / Ubuntu 系统可直接安装
apt-get install rt-tests
(2)git 仓库源码下载编译安装【最新版本】
git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
cd rt-tests
make
(3)git 仓库源码下载编译安装【推荐稳定版】
# 需要安装libnuma-devel包后make编译
apt install numactl-devel
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
cd rt-tests
git checkout stable/v1.0
make all
make install
make cyclictest
直接运行会报错
(base) root@orangepiaipro:/opt/worthsen/rt-tests# ./cyclictest
Unable to change scheduling policy!
either run as root or join realtime group
(base) root@orangepiaipro:/opt/worthsen/rt-tests#
进程调度策略(特别是与实时(realtime)调度相关的)需要特殊权限,并需要加入实时用户组。
# 检查是否存在一个名为 rt 或其他名称的实时用户组
grep rt /etc/group
# 创建一个新的实时用户组(如果尚不存在)
sudo groupadd rt
# 将你的用户添加到实时用户组
sudo usermod -aG rt your_username
# 退出并重新登录,或者重启你的会话,以使组更改生效。
# 验证你是否已加入实时用户组:
groups
(base) root@orangepiaipro:# sudo sysctl -w kernel.sched_rt_runtime_us=-1
kernel.sched_rt_runtime_us = -1
./cyclictest -t 4 -p 99 -n -m -d 0 & ./hackbench -l -1 -g 15 -f 25 -P
hackbench -l -1 -g 15 -f 25 -P 是用来制作负载的
cyclictest -t 4 -p 99 -n -m -d 0
(1)满载测试会卡,为了顺利控制测试时间,一个 cmd Terminal 先关闭cyclictest,让统计数据先停止
(base) root@orangepiaipro:# killall cyclictest
(2)运行命令的 cmd Terminal 中后关闭 hackbench
# kill hackbench
ctrl + c
CPU 序号 | 线程优先级 | 时间间隔(ms) | 计数器 | 最小值 | 平均值 | 最大值 |
---|---|---|---|---|---|---|
0 | 99 | 1000 | 307071 | 4 | 13 | 140 |
1 | 99 | 1000 | 307074 | 4 | 14 | 242 |
2 | 99 | 1000 | 312029 | 4 | 11 | 232 |
3 | 99 | 1000 | 312025 | 4 | 14 | 2249 |
(base) root@orangepiaipro:# cyclictest -t 4 -p 99 -n -m -d 0 & hackbench -l -1 -g 15 -f 25 -P [1] 5885 Running in process mode with 15 groups using 50 file descriptors each (== 750 tasks) Each sender will pass -1 messages of 100 bytes # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 152.37 122.29 85.64 96/1423 6738 T: 0 ( 5935) P:99 I:1000 C: 307071 Min: 4 Act: 13 Avg: 13 Max: 140 T: 1 ( 5992) P:99 I:1000 C: 307074 Min: 4 Act: 14 Avg: 14 Max: 242 T: 2 ( 6041) P:99 I:1000 C: 312029 Min: 4 Act: 10 Avg: 11 Max: 232 T: 3 ( 6082) P:99 I:1000 C: 312025 Min: 4 Act: 13 Avg: 14 Max: 2249 ^CSignal 2 caught, longjmp'ing out! longjmp'ed out, reaping children sending SIGTERM to all child processes signaling 750 worker threads to terminate Time: 325.087 [1]+ Done cyclictest -t 4 -p 99 -n -m -d 0 (base) root@orangepiaipro:#
./cyclictest -t 4 -p 99 -n -m -d 0
CPU 序号 | 线程优先级 | 时间间隔(ms) | 计数器 | 最小值 | 平均值 | 最大值 |
---|---|---|---|---|---|---|
0 | 99 | 1000 | 300325 | 3 | 6 | 1826 |
1 | 99 | 1000 | 300320 | 3 | 6 | 609 |
2 | 99 | 1000 | 300314 | 3 | 5 | 500 |
3 | 99 | 1000 | 300308 | 3 | 5 | 234 |
(base) root@orangepiaipro:# cyclictest -t 4 -p 99 -n -m -d 0
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 17.53 17.41 17.18 2/669 5453
T: 0 ( 5367) P:99 I:1000 C: 300325 Min: 3 Act: 9 Avg: 6 Max: 1826
T: 1 ( 5368) P:99 I:1000 C: 300320 Min: 3 Act: 7 Avg: 6 Max: 609
T: 2 ( 5369) P:99 I:1000 C: 300314 Min: 3 Act: 9 Avg: 5 Max: 500
T: 3 ( 5370) P:99 I:1000 C: 300308 Min: 3 Act: 7 Avg: 5 Max: 234
(base) root@orangepiaipro:#
(base) root@orangepiaipro:/home/HwHiAiUser/Desktop#
步骤同上
CPU 序号 | 线程优先级 | 时间间隔(ms) | 计数器 | 最小值 | 平均值 | 最大值 |
---|---|---|---|---|---|---|
0 | 99 | 1000 | 305747 | 3 | 13 | 1209 |
1 | 99 | 1000 | 305763 | 3 | 12 | 394 |
2 | 99 | 1000 | 305747 | 3 | 12 | 921 |
3 | 99 | 1000 | 305738 | 3 | 11 | 2106 |
sh-5.1# cyclictest -t 4 -p 99 -n -m -d 0 & hackbench -l -1 -g 15 -f 25 -P [1] 4141 Running in process mode with 15 groups using 50 file descriptors each (== 750 tasks) Each sender will pass -1 messages of 100 bytes # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 134.12 97.08 52.06 120/1240 4990 T: 0 ( 4191) P:99 I:1000 C: 305747 Min: 3 Act: 80 Avg: 13 Max: 1209 T: 1 ( 4255) P:99 I:1000 C: 305763 Min: 3 Act: 14 Avg: 12 Max: 394 T: 2 ( 4297) P:99 I:1000 C: 305747 Min: 3 Act: 20 Avg: 12 Max: 921 T: 3 ( 4413) P:99 I:1000 C: 305738 Min: 3 Act: 12 Avg: 11 Max: 2106 ^CSignal 2 caught, longjmp'ing out! longjmp'ed out, reaping children sending SIGTERM to all child processes signaling 750 worker threads to terminate Time: 312.209 [1]+ Done cyclictest -t 4 -p 99 -n -m -d 0 sh-5.1#
CPU 序号 | 线程优先级 | 时间间隔(ms) | 计数器 | 最小值 | 平均值 | 最大值 |
---|---|---|---|---|---|---|
0 | 99 | 1000 | 300700 | 3 | 4 | 100 |
1 | 99 | 1000 | 300693 | 3 | 4 | 1842 |
2 | 99 | 1000 | 300688 | 3 | 4 | 175 |
3 | 99 | 1000 | 300681 | 3 | 3 | 135 |
sh-5.1# cyclictest -t 4 -p 99 -n -m -d 0
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 17.21 17.35 15.56 1/486 3961
T: 0 ( 3859) P:99 I:1000 C: 300700 Min: 3 Act: 4 Avg: 4 Max: 100
T: 1 ( 3860) P:99 I:1000 C: 300693 Min: 3 Act: 3 Avg: 4 Max: 1842
T: 2 ( 3861) P:99 I:1000 C: 300688 Min: 3 Act: 3 Avg: 4 Max: 175
T: 3 ( 3862) P:99 I:1000 C: 300681 Min: 3 Act: 3 Avg: 3 Max: 135
sh-5.1#
详细步骤请看用户手册。https://orangepi.net/wp-content/uploads/2024/05/OrangePi_AI_Pro_v0.3.1.pdf
(1)32GB 或更大容量的 TF卡
(2)TF 卡插入读卡器,然后插入电脑
如果 TF 卡已经有系统,需要格式化。工具软件 SDCardFormatter。
(3)下载镜像 openEuler
(4)下载烧录工具软件 balenaEtcher
Portable 版本无需安装,双击打开就可以使用
以管理员身份运行
选择镜像,选择盘符,开始烧录
烧录中
校验
成功
显示校验失败,不过 TF 卡插入板子,可以运行。
(5)打开 balenaEtcher,以管理员身份运行
电脑中在 cmd 窗口中输入
ssh root@192.168.0.100
然后输入密码进入
-sh-5.1# cat /proc/version Linux version 5.10.0+ (root@orangepi-M600) (aarch64-target-linux-gnu-gcc (Do-Compiler V100R001C13B001) 7.3.0, GNU ld (Do-Compiler V100R001C13B001) 2.38) #1 SMP Tue Jan 30 11:14:55 CST 2024 -sh-5.1# cat /etc/os-release NAME="openEuler" ID="openEuler" VERSION_ID="22.03" ANSI_COLOR="0;31" VERSION="22.03 LTS dracut-055-4.oe2203" PRETTY_NAME="openEuler 22.03 LTS dracut-055-4.oe2203 (Initramfs)" DRACUT_VERSION="055-4.oe2203" -sh-5.1# npu-smi info +--------------------------------------------------------------------------------------------------------+ | npu-smi 23.0.0 Version: 23.0.0 | +-------------------------------+-----------------+------------------------------------------------------+ | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) | | Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) | +===============================+=================+======================================================+ | 0 310B4 | Alarm | 0.0 47 15 / 15 | | 0 0 | NA | 0 1580 / 7545 | +===============================+=================+======================================================+ -sh-5.1#
# 安装
sudo dnf install package_name
# 查看Ubuntu发行版版本号
lsb_release -a
# 查看当前系统的内核名称、主机名、内核发型版本、节点名
uname -a
# 查询设备信息
npu-smi info
# 查询设备0中编号为0(NPU)的芯片的详细信息
npu-smi info -t board -i 0 -c 0
# 查看昇腾芯片的详细信息
ascend-dmi -i -dt
# ubuntu 锁屏快捷键
Ctrl+Alt+L
# 截屏
Ctrl + Shift + Print Screen键
官方使用 Unixbench 进行跑分测试,结果数据如下:
在主频 1.0GHz 的情况下,OrangePi AIPro 的单核分数平均为 590.6,四核分数平均为 1932.9;
CPU 的频率提升至 1.6GHz 的情况下,OrangePi AIPro 的单核分数平均为 911.9,四核分数平均为 2909.5。
主频提升之后,OrangePi AIPro 开发板的 CPU 性能得到提升,单核测试得分提高了 54.4%,四核测试得分提高了 50.5%。
1、香橙派(Orange Pi) 官网
2、香橙派(Orange Pi) 官方–OrangePi AIpro(8T)
3、华为–迈向智能世界白皮书
4、昇腾Ascend之npu-smi工具在Atlas 200I DK A2的简单使用
5、华为Atlas 200I DK A2开箱!
6、HUAWEI Atlas 200I DK A2 昇腾AI开发者套件 “小藤”开发者套件 8TOPS算力
7、昇腾Ascend之npu-smi工具在Atlas 200I DK A2的简单使用
8、香橙派和华为合作的开发板,一个从来没想过的组合-香橙派 Al Pro
9、openEuler 22.03 LTS 版本新增了 Preempt_RT 内核实时补丁
10、Atlas 200I A2 Accelerator Module 23.0.3 Driver Development Guide 03
11、Linux 实时性能测试工具——Cyclictest
12、Linux 实时性能测试工具——Cyclictest 的使用与分析
13、实时性测试:cyclictest详解
14、cyclictest无法执行问题
15、14. RT-Linux
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。