日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          "); //-->

          博客專欄

          EEPW首頁(yè) > 博客 > 征程 6 | BPU trace 簡(jiǎn)介與實(shí)操

          征程 6 | BPU trace 簡(jiǎn)介與實(shí)操

          發(fā)布人:地平線開(kāi)發(fā)者 時(shí)間:2025-10-15 來(lái)源:工程師 發(fā)布文章
          一、BPU trace 理論基礎(chǔ)

          在學(xué)習(xí) BPU trace 前,希望大家對(duì) UCP trace 已經(jīng)有簡(jiǎn)單的了解,詳情可見(jiàn)工具鏈用戶手冊(cè)《統(tǒng)一計(jì)算平臺(tái)(UCP)-UCP 性能分析工具-UCP Trace 使用說(shuō)明》章節(jié)。

          1.1 BPU Trace 配置文件模板

          在 system 模式下抓取 BPU trace,需在 perfetto 配置文件中加入 BPU trace 的數(shù)據(jù)源,ucp_bpu_trace.cfg 中已默認(rèn)添加了 BPU trace 數(shù)據(jù)源,具體配置項(xiàng)如下所示:

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

          bputrace_period_ms 用于設(shè)置讀取 BPU trace 的周期,可根據(jù)實(shí)際使用場(chǎng)景調(diào)整該參數(shù),當(dāng) BPU 負(fù)載較大時(shí),可以適當(dāng)縮短讀取周期,避免發(fā)生因讀寫(xiě)速度不匹配導(dǎo)致的 trace 數(shù)據(jù)被覆蓋的問(wèn)題。

          當(dāng)前 BPU Trace 功能暫不支持運(yùn)行時(shí)動(dòng)態(tài)開(kāi)啟,若需在應(yīng)用運(yùn)行期間實(shí)時(shí)捕獲 BPU Trace 數(shù)據(jù),需在應(yīng)用啟動(dòng)前通過(guò)命令手動(dòng)開(kāi)啟該功能,具體操作指令為:echo 1 > /sys/devices/system/bpu/bpu0/trace

          補(bǔ)充:配置時(shí)出現(xiàn) Invalid argument,可能的原因:bpu trace 只支持在 power_enable 為 0 時(shí)設(shè)置,需要在 tracebox perfetto 終端(先繼續(xù)閱讀) 先把這個(gè)節(jié)點(diǎn)修改為 0??蓞⒖既缦路绞叫薷?/p>

          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 常用數(shù)據(jù)源介紹

          Description

          二、BPU trace 使用基礎(chǔ)示例
          2.1 基礎(chǔ)示例運(yùn)行
          • 終端 A

          # 啟動(dòng) trace 服務(wù)。
          # 只需要啟動(dòng)一次,如果已經(jīng)啟動(dòng),則不需要再次啟動(dòng)。
          tracebox traced --background
          
          # 運(yùn)行數(shù)據(jù)捕獲服務(wù)。
          # 只需要啟動(dòng)一次,如果已經(jīng)啟動(dòng),則不需要再次啟動(dòng)。
          tracebox traced_probes --background --reset-ftrace
          
          # -c:指定perfetto 配置文件。
          # -o:指定輸出trace數(shù)據(jù)文件路徑。
          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,內(nèi)容如下

          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

          運(yùn)行 run.sh

          為了能夠抓取完整的數(shù)據(jù),需要確保 hrt_model_exec 執(zhí)行結(jié)束前,perfetto 進(jìn)程未退出,即終端 B 任務(wù)先結(jié)束。

          2.2 BPU Trace 文件解讀

          使用官方的 Perfetto UI 打開(kāi) ucp_traceprocessor 處理后的 ucp_new.pftrace,展示從 UCP 模型推理任務(wù)的創(chuàng)建,提交,調(diào)度執(zhí)行,直至任務(wù)完成執(zhí)行并最終釋放的完整流程。

          Description

          bpu_trace 和 ucp_trace 進(jìn)行了關(guān)聯(lián)。

          三、進(jìn)階內(nèi)容
          3.1 偶發(fā)推理問(wèn)題如何 trace

          問(wèn)題描述:長(zhǎng)穩(wěn)測(cè)試時(shí),偶發(fā)某問(wèn)題,復(fù)現(xiàn)概率很低,希望在出現(xiàn)該問(wèn)題前后,能抓到現(xiàn)場(chǎng)的 trace info,應(yīng)該如何進(jìn)行?

          處理建議:

          1. 對(duì)于不知何時(shí)觸發(fā)問(wèn)題的長(zhǎng)穩(wěn)測(cè)試場(chǎng)景,需要開(kāi)啟環(huán)境變量 HB_UCP_ENABLE_PERFETTO,執(zhí)行 perfetto 命令,將 duration_ms 設(shè)置為 0 進(jìn)行持續(xù)抓取 trace。

          2. 通過(guò)設(shè)置 ucp_system.cfg 中 buffers 的 fill_policy: RING_BUFFER,實(shí)現(xiàn)新數(shù)據(jù)對(duì)舊數(shù)據(jù)的 buffer 覆蓋。

          3. ucp_system.cfg 配置信息如下所示,注意,buffer 的大小,需要根據(jù)用戶實(shí)際場(chǎng)景先驗(yàn)證下,根據(jù)實(shí)際情況調(diào)整。

          # Sampling duration: 單位是ms,0表示持續(xù)抓取
          duration_ms: 0
          
          write_into_file: true    # 按照設(shè)定的周期,將buffer寫(xiě)入到文件
          # Writes the userspace buffer into the file every 2.5 seconds.
          file_write_period_ms: 2500    # 控制buffer寫(xiě)文件,不是覆蓋,相當(dāng)于控制落盤(pán),這個(gè)參數(shù)一般不需要特別指定
          
          # buffer 0
          buffers {
            size_kb: 65536    # 如果出現(xiàn)數(shù)據(jù)丟失,則設(shè)置更大一些
            fill_policy: RING_BUFFER
          }
          
          # buffer 1
          buffers {
            size_kb: 131072    # 如果出現(xiàn)數(shù)據(jù)丟失,則設(shè)置更大一些
            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 線程簡(jiǎn)介

          問(wèn):ucp 中 bpu_lb_schedule 線程的作用是什么?線程數(shù)是多少?

          Description

          答:BPU_LB_Schedule 只有 1 個(gè)線程,負(fù)責(zé) bpu 任務(wù)調(diào)度。

          BPU-LB_schedule 只有一個(gè),如果有多個(gè)核,會(huì)根據(jù)核的數(shù)量啟動(dòng) BPU-Worker 線程,單核就不啟動(dòng)。


          問(wèn):bpu 調(diào)度線程優(yōu)先級(jí)能否提高,優(yōu)先保證模型 infer 完成?

          答:可以提高,BPU-LB_schedule 是負(fù)責(zé)下發(fā) bpu 任務(wù)的線程,需要占用 CPU 資源。

          通過(guò) HB_UCP_SCHEDULE_PRIORITY 環(huán)境變量控制。默認(rèn)為 1,數(shù)值越大,優(yōu)先級(jí)越高。BPU 的調(diào)度線程是 FIFO。

          Description

          3.3 CPU-OP-Processe 線程簡(jiǎn)介

          問(wèn):ucp 中 CPU-OP-Processe 線程的作用是什么?線程數(shù)是多少?

          答:CPU-OP-Processe 線程負(fù)責(zé) cpu 算子計(jì)算。

          征程 6E 上 CPU-OP-Processe 線程默認(rèn)有 6 個(gè),CPU-OP-Processe 是根據(jù) CPU 核的數(shù)量來(lái)啟動(dòng)線程,可以通過(guò) HB_UCP_ENABLE_CPU_BACKEND_CORE_NUM 環(huán)境變量來(lái)設(shè)置數(shù)量。

          在 hbm 模型中沒(méi)有 CPU 算子時(shí),trace 示意圖如下:

          Description

          里面是沒(méi)有 CPU-OP-Processe 線程的。


          問(wèn):異構(gòu)模型中(bpu+cpu),cpu 算子如何分發(fā)?通過(guò) bpu_lb_schedule 還是喚醒 cpu_op_procese 線程?

          答:有 task_schedule,bpu 任務(wù)結(jié)束后,通過(guò) task_schedule 進(jìn)行 cpu 算子分發(fā)。沒(méi)有 CPU 調(diào)度線程,CPU-OP-Process 就是用于運(yùn)行 cpu 算子,優(yōu)先級(jí)是寫(xiě)死的 0,也就是非 FIFO。


          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉