高通SNPE開發筆記

引言

從2011年甚至更早開始,智能手機,智能終端,車載芯片等等智能終端中,高通芯片無處不在。相比較Intel,高通抓住了移動處理器中續航的問題,不斷推出低功耗移動處理器,從而抓住移動處理器的市場。日常工作中接觸到很多冠以高通之名的產品,記錄以習之。

性能排行榜

收集了一下2018年高通驍龍CPU處理器排行榜各種手機品牌的處理器性能對比,從中可以看出,驍龍系列 處理器也是分爲高中低端處理器的,其中去年最常見的845系列,佔據較大的市場份額。與之爭鋒麒麟 980雖然在HUWEI Meta 20 Pro的跑分彙總獲得更高名次,性能前10中高通獨佔8席。

驍龍

爲什麼要選擇驍龍處理器? 驍龍移動處理器是Qualcomm開發的完整片上系統解決方案系列產品,該系列適應用戶需求而提供卓越的用戶體驗和更長的電池壽命。利用驍龍處理器先進的處理能力和併發性能,您可以同時運行多個高級應用,而對電池的消耗卻可以降到最少。

驍龍處理器經過發展,早已不再僅僅支持先進的手機,還可在各種智能產品和互連設備上看到它的身影,包括可穿戴設備、智能家電、智能電話亭和數字標識系統等。我們的一系列軟硬件解決方案專門提供您所需要的,以幫助您最大限度地利用採用驍龍處理器的設備。我們的SDK、Profiler分析器和調試器能幫助您分析和提升應用性能、打造創新特性和創造新的互連體驗。我們甚至能幫助您開始按照您自身的設計打造設備(從原型設計到生產的全過程)。如果您要打造下一代設備,採用驍龍處理器的開發設備,您便已經可以將未來握在手中了。

高通公司官網開發文檔

CPU

有了高品質的處理內核,驍龍處理器中經優化的CPU是專爲讓您的應用運行得更快、更流暢而設計。我們所有CPU的目標是將世界級的移動體驗帶進生活,同時智能地控制電池壽命。但是如果沒有能完全發揮其特性的軟件,即使是最高性能的CPU也不能開發出自身的全部潛力。採用驍龍LLVM編譯器編譯的代碼在驍龍處理器上會執行的更好,因爲它具有獨特的優化處理和漏洞修復。

GPU

圖形性能對於現代移動體驗是一個重要部分,這就是爲什麼我們的Qualcomm驍龍處理器要內置開拓性的Adreno™圖形處理器的原因。Adreno是目前最先進的移動圖形處理背後的發電站,它能加速遊戲、用戶界面和網絡瀏覽器中複雜幾何體的渲染。快來下載Adreno SDK,優化您針對Adreno GPU的應用,該SDK含打造沉浸式手機遊戲體驗所需的工具、庫、示例、文檔和輔導資料。您還可利用Adreno Profiler分析器來分析和優化您應用的圖形性能。該分析器具有的特性包括:基於硬件的性能監視器、渲染調用指標、Shader原型設計等。

DSP

在最適合的處理引擎上運行適當的任務能爲開發者帶來性能優勢。這就是爲什麼開發Hexagon DSP的原因,該產品專爲優化調制解調器和多媒體應用而設計,具有的特性包括硬件輔助多線程。Hexagon SDK使您能最大化發揮DSP的性能,提供一個用於生成動態Hexagon DSP代碼模塊的環境,並且使您能訪問Hexagon DSP上的內置計算資源。該SDK是專爲幫助確保處理效率而設計,這意味着它具備更高的流動性、更低的延遲和卓越的應用性能。

CSDN中高通專欄

【中科創達-王慶民】關於Hexagon DSP功能介紹

Qualcomm的曉龍芯片從創立之幾乎一直內置Hexagon DSP芯片,它是移動異構計算必需的處理引擎。Hexagon架構設計的核心在於如何在低功耗的情況下能夠高性能的處理各種各樣的應用,它具有的特性包括多線程,特權級,VLIW,SIMD以及專門適應於信號處理的指令。該CPU可以在單個時間週期中依序快速的將四個指令(已打包好)處理爲執行單元。硬件多線程則由 TMT(TemporalMultiThreading,時間多線程)來實現,在這種模式下,頻率600MHz的物理核心可以被抽象成三個頻率200MHz的核心。許多體驗如聲音和圖像增強功能以及高級攝像頭和傳感器功能都包括信號處理任務,而DSP尤其擅長在低功耗下處理這些任務。起初,Hexagon DSP作爲處理引擎,主要用於語音和簡單的音頻播放。現在,Hexagon DSP的作用已經擴展至多種用途,如圖像增強、計算機視覺、擴增實境、視頻處理和傳感器處理。隨着智能手機使用需求的不斷加大,現在包括攝像頭和傳感器功能都包括信號處理任務都需要藉助DSP來完成,相比強大的CPU,DSP尤其擅長在低功耗下處理這些任務。

高清圖像處理,低功耗——Qualcomm® Hexagon™ Vector eXtensions (HVX)

摘要:過去幾年,開發人員一直在利用 Hexagon SDK,量身定製 DSP,處理音頻、圖像與計算 。在 HotChips 半導體會議上,我們揭開了即將上市的 Snapdragon 820 處理器中全新 Hexagon DSP 的部分面紗。這款 Hexagon 680 DSP ,集成寬幅向量處理 Hexagon 向量擴展(HVX)核心,充分利用新的DSP 應用實例。 英文原版High-Res Image Processing, Low Power Consumption – Qualcomm® Hexagon™ Vector eXtensions (VX) 關於HVX技術,可以參考如下介紹 https://www.hotchips.org/wp-content/uploads/hc_archives/hc27/HC27.24-Monday-Epub/HC27.24.20-Multimedia-Epub/HC27.24.211-Hexagon680-Codrescu-Qualcomm.pdf

高通向量拓展技術的概括 與NEON編程模型相類似,在計算機視覺應用領域 Alt text

指令和CPU的NEON指令相比,指令簡單,更低功耗 Alt text

性能方面,CPU使用NEON優化雖然能夠提升13的速度,但是單pixel功耗方面大約是DSP的418倍。

Snapdragon Neural Processing Engine (SNPE)

Capabilities

The Snapdragon Neural Processing Engine (SNPE) is a Qualcomm Snapdragon software accelerated runtime for the execution of deep neural networks. With SNPE, users can:

  • Execute an arbitrarily deep neural network
  • Execute the network on the SnapdragonTM CPU, the AdrenoTM GPU or the HexagonTM DSP.
  • Debug the network execution on x86 Ubuntu Linux
  • Convert Caffe, Caffe2, ONNXTM and TensorFlowTM models to a SNPE Deep Learning Container (DLC) file
  • Quantize DLC files to 8 bit fixed point for running on the Hexagon DSP
  • Debug and analyze the performance of the network with SNPE tools
  • Integrate a network into applications and other code via C++ or Java

Workflow

Model training is performed on a popular deep learning framework (Caffe, Caffe2, ONNX and TensorFlow models are supported by SNPE.) After training is complete the trained model is converted into a DLC file that can be loaded into the SNPE runtime. This DLC file can then be used to perform forward inference passes using one of the Snapdragon accelerated compute cores. The basic SNPE workflow consists of only a few steps:

  • Convert the network model to a DLC file that can be loaded by SNPE.
  • Optionally quantize the DLC file for running on the Hexagon DSP.
  • Prepare input data for the model.
  • Load and execute the model using SNPE runtime.

測試模型

  1. 添加環境變量
#include <cstdlib>
#if defined(__linux__) || defined(__ANDROID__)
bool SetAdspLibraryPath(std::string nativeLibPath) {
    std::stringstream path;
    path << nativeLibPath << ";/system/lib/rfsa/adsp;/system/vendor/lib/rfsa/adsp;/dsp";
    return setenv("ADSP_LIBRARY_PATH", path.str().c_str(), 1 /*override*/) == 0;
}
#else
#error "the platform not support dsp"
#endif

./snpe-net-run --container ./modelname.dlc --input_list list.one --use_dsp

參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章