【ATU Book-i.MX8系列 - eIQ NNStreamer】eIQ NNShark介紹

一.   概述

此篇文章為 eIQ 系列的延伸應用,相信各位已經對於  NXP 所開發的 eIQ 機器學習開發環境 有一定程度上的認識了!! 並於本系列的上兩篇文章介紹了 GStreamerNNStreamer 的用法,若尚未理解的夥伴,請點選上述連結溫習一下 !! 本文章將要介紹的  NNShark ,與先前的 NNStreamer 或 GStreamer 大有不同, NNShark 是一套專門分析 i.MX8 硬體資源的工具 !! 這裡分享給讀者們作參考與應用 !!

如下圖所示,本系列是隸屬於 機器學習開發環境 eIQ 應用層(Application Layer) 中。而本篇將介紹 “eIQ NNShark介紹”。

若新讀者欲理解更多人工智慧、機器學習以及深度學習的資訊,可點選查閱下方博文
 大大通精彩博文   【ATU Book-i.MX8系列】博文索引

 

eIQ NNStreamer 系列博文-文章架構示意圖

二.  NNShark 介紹

NNShark 是一套分析工具(profiling tool),由 NNStreamer 改良 GstShark 工具而成。此工具能夠使用在 NXP i.MX8M Plus 平台中,並分析 CPU(A53) / 2D GPU(GC520L) / 3D GPU(GC7000UL) / NPU(VIP8000) 等各個硬體資源所耗費多寡。

◎ 如何安裝 NNShark ?

NNShark 提供作業系統 Ubuntu / Debian 的安裝說明,僅須要依照該網站指令即可安裝完成。至於 i.MX8 平台則是內建置入 NNShark 分析工具,故使用者直接使用即可

 

◎ 如何使用 NNShark ?

在安裝完成 NNShark 後,直接開啟 終端機(Terminal) 並輸入指令即可完成 !!

(1) 修改 Uboot

在啟動系統時,於 log 顯示 “Hit any key to stop autoboot” 後,按下任意鍵,即可進入 uboot !


輸入 editenv mmcargs 指令後,即可添加下列 uboot變數。

$ galcore.gpuProfiler=1 galcore.powerManagement


輸入 saveenv 指令後,並輸入 boot 重啟系統

 

(2) 設定環境變數

進入系統後,即可設置環境變數(environment variables)

$ export GST_DEBUG="GST_TRACER:7"

$ export GST_TRACERS="live"



(3) 運行範例

成功運行範例後,即會顯示分析畫面,如同下圖所示 ; 依序可以看到 CPU 與 GPU 的使用量,以及各硬體所配置 DDR 的用量,以及所耗費的功耗。

$ export MODEL=$(pwd)/ssd_mobilenet_v2_coco_quant_postprocess.tflite
$ export LABELS=$(pwd)/coco_labels.txt
$ gst-launch-1.0 --no-position v4l2src device=/dev/video3 ! \
video/x-raw,width=640,height=480,framerate=30/1 ! \
tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! \
video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! \
video/x-raw,format=RGB ! tensor_converter ! \
tensor_filter framework=tensorflow-lite model=${MODEL} custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! \
tensor_decoder mode=bounding_boxes option1=tf-ssd option2=${LABELS} \
option3=0:1:2:3,50 option4=640:480 option5=300:300 ! \
mix. t. ! queue max-size-buffers=2 ! \
imxcompositor_g2d name=mix sink_0::zorder=2 sink_1::zorder=1 ! waylandsink



三.  結語

由上述介紹的概念與實作方式,就可以透過 NNShark 來解析所花費的硬體資源,像是 CPU 與 GPU 佔多少使用資源,以及各硬體的記憶體傳輸速度等等。雖然本篇文章是搭配 NNStreamer 作應用,而讀者亦可搭配任何程式來查看資源,像是 C 或 Python 的應用程序。而系列已經講述完 NNStreamer 與 NNShark 的基本用法。若有不理解的地方,歡迎留言討論,謝謝 !! 若欲查詢 i.MX8M Plus 的功耗、電壓的狀態,可參考官方文件 i.MX Power Measurement Tool !! 而此工具需要配合 i.MX 8M Plus Evaluation Kit enabling Power Measurement 的開發板,未來有機會再向各位介紹 !! 

 

四.  參考文件

[1] 官方文件 - i.MX8 GStreamer User Guide pdf
[2] 第三方資源 - GStreamer 維基百科
[3] 第三方資源 -什么是Gstreamer?
[4] 官方文件 - i.MX Machine Learning User's Guide pdf
[5] 官方文件 - NNStreamer Github
[6] 官方文件 - NNStreamer

如有任何相關 eIQ NNStreamer 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 eIQ NNStreamer 的技術文章 !!敬請期待 【ATU Book-i.MX8 系列 - eIQ NNStreamer
 !!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能

參考來源