久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > 征程 6 | BPU trace 簡介與實操

征程 6 | BPU trace 簡介與實操

發布人:地平線開發者 時間:2025-10-15 來源:工程師 發布文章
一、BPU trace 理論基礎

在學習 BPU trace 前,希望大家對 UCP trace 已經有簡單的了解,詳情可見工具鏈用戶手冊《統一計算平臺(UCP)-UCP 性能分析工具-UCP Trace 使用說明》章節。

1.1 BPU Trace 配置文件模板

在 system 模式下抓取 BPU trace,需在 perfetto 配置文件中加入 BPU trace 的數據源,ucp_bpu_trace.cfg 中已默認添加了 BPU trace 數據源,具體配置項如下所示:

# BPU trace
data_sources: {
    config {
        name: "linux.sys_stats"
        sys_stats_config {
            bputrace_period_ms: 500
            # bpuinfo_period_ms: 500
        }
    }
}

bputrace_period_ms 用于設置讀取 BPU trace 的周期,可根據實際使用場景調整該參數,當 BPU 負載較大時,可以適當縮短讀取周期,避免發生因讀寫速度不匹配導致的 trace 數據被覆蓋的問題。

當前 BPU Trace 功能暫不支持運行時動態開啟,若需在應用運行期間實時捕獲 BPU Trace 數據,需在應用啟動前通過命令手動開啟該功能,具體操作指令為:echo 1 > /sys/devices/system/bpu/bpu0/trace

補充:配置時出現 Invalid argument,可能的原因:bpu trace 只支持在 power_enable 為 0 時設置,需要在 tracebox perfetto 終端(先繼續閱讀) 先把這個節點修改為 0。可參考如下方式修改

root@hobot:/map/xxx/inner# echo 1 > /sys/devices/system/bpu/bpu0/trace
-bash: echo: write error: Invalid argument
root@hobot:/map/xxx/inner# cat /sys/devices/system/bpu/bpu0/power_enable
1
root@hobot:/map/xxx/inner# echo 0 > /sys/devices/system/bpu/bpu0/power_enable
root@hobot:/map/xxx/inner# cat /sys/devices/system/bpu/bpu0/power_enable
0
root@hobot:/map/xxx/inner# echo 1 > /sys/devices/system/bpu/bpu0/trace
root@hobot:/map/xxx/inner#
1.2 常用數據源介紹

Description

二、BPU trace 使用基礎示例
2.1 基礎示例運行
  • 終端 A

# 啟動 trace 服務。
# 只需要啟動一次,如果已經啟動,則不需要再次啟動。
tracebox traced --background

# 運行數據捕獲服務。
# 只需要啟動一次,如果已經啟動,則不需要再次啟動。
tracebox traced_probes --background --reset-ftrace

# -c:指定perfetto 配置文件。
# -o:指定輸出trace數據文件路徑。
tracebox perfetto --txt -c ucp_bpu_trace.cfg -o ucp.pftrace
  • 終端 B

export HB_UCP_PERFETTO_CONFIG_PATH=ucp_system.json
export HB_UCP_ENABLE_PERFETTO=true

新建 run.sh,內容如下

hrt_model_exec perf --model_file xxx.hbm --frame_count 50 --thread_num 1 &
hrt_model_exec perf --model_file ***.hbm --frame_count 10 --thread_num 1

運行 run.sh

為了能夠抓取完整的數據,需要確保 hrt_model_exec 執行結束前,perfetto 進程未退出,即終端 B 任務先結束。

2.2 BPU Trace 文件解讀

使用官方的 Perfetto UI 打開 ucp_traceprocessor 處理后的 ucp_new.pftrace,展示從 UCP 模型推理任務的創建,提交,調度執行,直至任務完成執行并最終釋放的完整流程。

Description

bpu_trace 和 ucp_trace 進行了關聯。

三、進階內容
3.1 偶發推理問題如何 trace

問題描述:長穩測試時,偶發某問題,復現概率很低,希望在出現該問題前后,能抓到現場的 trace info,應該如何進行?

處理建議:

  1. 對于不知何時觸發問題的長穩測試場景,需要開啟環境變量 HB_UCP_ENABLE_PERFETTO,執行 perfetto 命令,將 duration_ms 設置為 0 進行持續抓取 trace。

  2. 通過設置 ucp_system.cfg 中 buffers 的 fill_policy: RING_BUFFER,實現新數據對舊數據的 buffer 覆蓋。

  3. ucp_system.cfg 配置信息如下所示,注意,buffer 的大小,需要根據用戶實際場景先驗證下,根據實際情況調整。

# Sampling duration: 單位是ms,0表示持續抓取
duration_ms: 0

write_into_file: true    # 按照設定的周期,將buffer寫入到文件
# Writes the userspace buffer into the file every 2.5 seconds.
file_write_period_ms: 2500    # 控制buffer寫文件,不是覆蓋,相當于控制落盤,這個參數一般不需要特別指定

# buffer 0
buffers {
  size_kb: 65536    # 如果出現數據丟失,則設置更大一些
  fill_policy: RING_BUFFER
}

# buffer 1
buffers {
  size_kb: 131072    # 如果出現數據丟失,則設置更大一些
  fill_policy: RING_BUFFER
}

# UCP data source
data_sources: {
    config {
        name: "track_event"
        target_buffer: 0
        track_event_config {
           enabled_categories: "dnn"
        }
    }
}
3.2 BPU_LB_Schedule 線程簡介

問:ucp 中 bpu_lb_schedule 線程的作用是什么?線程數是多少?

Description

答:BPU_LB_Schedule 只有 1 個線程,負責 bpu 任務調度。

BPU-LB_schedule 只有一個,如果有多個核,會根據核的數量啟動 BPU-Worker 線程,單核就不啟動。


問:bpu 調度線程優先級能否提高,優先保證模型 infer 完成?

答:可以提高,BPU-LB_schedule 是負責下發 bpu 任務的線程,需要占用 CPU 資源。

通過 HB_UCP_SCHEDULE_PRIORITY 環境變量控制。默認為 1,數值越大,優先級越高。BPU 的調度線程是 FIFO。

Description

3.3 CPU-OP-Processe 線程簡介

問:ucp 中 CPU-OP-Processe 線程的作用是什么?線程數是多少?

答:CPU-OP-Processe 線程負責 cpu 算子計算。

征程 6E 上 CPU-OP-Processe 線程默認有 6 個,CPU-OP-Processe 是根據 CPU 核的數量來啟動線程,可以通過 HB_UCP_ENABLE_CPU_BACKEND_CORE_NUM 環境變量來設置數量。

在 hbm 模型中沒有 CPU 算子時,trace 示意圖如下:

Description

里面是沒有 CPU-OP-Processe 線程的。


問:異構模型中(bpu+cpu),cpu 算子如何分發?通過 bpu_lb_schedule 還是喚醒 cpu_op_procese 線程?

答:有 task_schedule,bpu 任務結束后,通過 task_schedule 進行 cpu 算子分發。沒有 CPU 調度線程,CPU-OP-Process 就是用于運行 cpu 算子,優先級是寫死的 0,也就是非 FIFO。


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



相關推薦

技術專區

關閉