BananaPiBPI-M7RK3588开发板在Linux上...

开源不如不打烊 2024-07-13 15:14:55

如下介绍如何监控 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/loadNPU 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 # VariablesCLEAR=""# Parameters checkif [[ $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"fiwhile true; do eval $CLEAR # If empty, will not clear cat /sys/kernel/debug/rknpu/load sleep 0.5done

重点是最后的while循环,下面是使用该脚本检查NPU使用情况的示例。

结论

如您所见,没有标准的 top 类命令来显示各个制造商的 NPU 使用情况。目前,我只有 Rockchip,所以我的探索有限,因此本教程仅限于 Rockchip NPU。如果我有机会接触到更多这样的硬件,我也会写关于它们的文章。

0 阅读:0