Banana Pi BPI-M7 RK3588开发板在 Linux 上检查 Rockchip NPU 使用情况 电子说
如下介绍如何监控 Rockchip 设备的 NPU 使用情况。

如今,新型设备开始配备内置 AI 芯片。“AI 芯片”的正确技术术语是 NPU,即神经处理单元。
如果您有板载 NPU,您可能想知道您的系统是否正在使用它。
在本教程中,我将分享如何监控 Rockchip 处理器上的 NPU 使用情况。
这里讨论的方法仅适用于 Rockchip 处理器中集成的 NPU。我使用带有 RK3588 处理器的ArmSoM Sige7设备对其进行了测试。
你可以用以下命令检查你的系统是否有 npu:
dmesg | grep -i npu
分析输出以确定是否存在 NPU。
检查 Rockchip NPU 利用率
值得庆幸的是,Rockchip 使用了debugfs功能。Debugfs 是一种特殊类型的虚拟文件系统,可以实时提供调试信息,类似于 proc 提供的信息。
可随时提供 NPU 使用情况的文件是:
/sys/kernel/debug/rknpu/load
这是我在ArmSoM设备上运行它时显示的内容。它显示了 NPU 所有三个核心的使用情况:
abhishek@armsom:~$ sudo cat /sys/kernel/debug/rknpu/load NPU load: Core0: 0%, Core1: 0%, Core2: 0%, abhishek@armsom:~$
如您所见,它仅提供当前的 NPU 使用情况并结束它。如果您想监控 NPU 使用情况,这不是很有用。
另一种方法是将其与 watch 命令结合起来,该命令将每两秒运行一次(默认):
watch sudo cat /sys/kernel/debug/rknpu/load
这是我在本地运行利用 NPU 的 LLM 的屏幕截图:

要停止正在运行的监视命令,请按 Ctrl+C。
要实际查看 NPU 使用情况,您应该运行一个应该使用 NPU 的程序。否则,所有核心的使用率将始终为 0。
还有另一种监控NPU使用情况的方法。我在用ezrknpu项目试验使用Rockchip NPU运行LLM时发现了它。
该项目有一个ntop.sh 脚本,它以类似 top 命令的方式显示 NPU 使用情况。这并不完全正确,因为 top 命令不会污染屏幕。另一方面,ntop.sh 脚本会用所有这些行充斥屏幕,并且在您按下 Ctrl+C 后它们不会消失。
脚本内容如下:
#!/bin/bash
# Title: ntop.sh
# Author: Pelochus
# Brief: A very basic 'top' style program that shows the status of the NPU in Rockchip's SoCs
# Variables
CLEAR=""
# Parameters check
if [[ $1 = '-h' ]]
then
echo
echo "ntop Help"
echo
echo "-c: Clears output every refresh"
echo "-h: Shows this help screen"
echo
echo "For more information visit https://github.com/Pelochus/ezrknpu"
echo
exit
elif [[ $1 = '-c' ]]
then
CLEAR="clear"
fi
while true; do
eval $CLEAR # If empty, will not clear
cat /sys/kernel/debug/rknpu/load
sleep 0.5
done
重点是最后的while循环,下面是使用该脚本检查NPU使用情况的示例。

结论
如您所见,没有标准的 top 类命令来显示各个制造商的 NPU 使用情况。目前,我只有 Rockchip,所以我的探索有限,因此本教程仅限于 Rockchip NPU。如果我有机会接触到更多这样的硬件,我也会写关于它们的文章。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !