如何榨干BPU的所有算力,测试温升

针对您的问题,直接运行 bpu_os_test 工具并不能完全实现“榨干算力 + 测试温升”的完整目标。该工具主要用于基础功能验证,而非极限压力测试。

要实现满载算力测试监控温升,建议采用以下组合方案:


:white_check_mark: 推荐方案:多线程推理 + 实时监控

1. 满载 BPU 算力(压力测试)

通过多线程并发运行模型推理来占满 BPU 资源:

# 示例:启动多个线程运行 YOLO 模型(以 RDK X5 为例)
# 方法 A: 使用 hrt_model_exec 多实例
for i in {1..8}; do
  hrt_model_exec perf --model yolov8n.bin --thread_num 2 &
done

# 方法 B: 使用官方 demo 多进程
# 修改示例代码中的 thread_num 参数,启动多个进程

:light_bulb: 关键点

  • 单模型单线程通常无法跑满 BPU,需多模型或多线程并发
  • RDK X5 双 BPU 核心,建议 thread_num ≥ 4 才能接近满载
  • 参考社区案例:RDK X5 BPU 负载测试

2. 实时监控 BPU 负载

使用 hrut_somstatus 或读取系统文件:

# 方法 1: 使用官方工具(推荐)
watch -n 1 hrut_somstatus

# 方法 2: 直接读取 BPU 负载百分比
watch -n 1 'cat /sys/devices/system/bpu/bpu0/ratio; cat /sys/devices/system/bpu/bpu1/ratio'

:pushpin: 注意ratio 值范围是 0-100,代表 BPU 利用率百分比

3. 监控温度变化

# 查看 CPU 温度(BPU 无独立温度传感器,通常参考 SoC 温度)
watch -n 1 'cat /sys/class/thermal/thermal_zone*/temp'

# 或使用 RDK Studio 一键诊断工具
device_diagnose

:open_book: 参考:RDK 开发板全面健康检查教程


:wrench: 完整测试脚本示例

#!/bin/bash
# bpu_stress_test.sh

echo "=== 开始 BPU 压力测试 ==="

# 1. 启动 8 个推理线程
for i in {1..8}; do
  hrt_model_exec perf --model /path/to/your/model.bin --thread_num 2 > /dev/null 2>&1 &
  echo "启动线程 $i"
done

# 2. 监控负载和温度
echo "监控中... (按 Ctrl+C 停止)"
while true; do
  clear
  echo "=== BPU 负载 ==="
  cat /sys/devices/system/bpu/bpu0/ratio 2>/dev/null || echo "BPU0: N/A"
  cat /sys/devices/system/bpu/bpu1/ratio 2>/dev/null || echo "BPU1: N/A"
  
  echo -e "\n=== 温度 (°C) ==="
  cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null | awk '{printf "SoC: %.1f°C\n", $1/1000}'
  
  sleep 2
done

:warning: 注意事项

  1. 散热条件:长时间满载可能导致降频,建议加散热片或风扇
  2. 电源稳定:确保供电充足(特别是 USB 供电场景)
  3. 版本差异
    • RDK X3/X5:使用 hrut_somstatus
    • RDK S100:部分命令可能不同,需查阅对应文档
  4. bpu_os_test 局限性:该工具主要用于验证 BPU 基础功能,不适合长时间压力测试

:books: 相关资源

建议将测试结果(温度曲线、负载稳定性)整理后发布到社区,帮助其他开发者参考!