驍龍(SnapDragon)神經處理引擎(SNPE)是一個針對高通驍龍加速深層神經網路的運行時軟體,高通在CSDN和其官網都提供了下載。

本文以SNPE 1.23為基準,將結合高通官方的SDK說明文檔(高通在CSDN也提供了開發者社區,中文社區論壇,以及SNPE部分文檔),介紹SNPE這一高通官方的神經網路處理引擎開發包。

開發中有疑問可在高通的CreatePoint檢索相關文檔或者在SNPE論壇提交疑問,或發郵件到[email protected]

因為SNPE的特殊性,本文重點考察:

  • 不同runtime架構特點,調度關係,尤其是對DSP/AIP的HVX與HTA;
  • 性能:CPU,FXP-CPU,GPU,GPU-FP16,FXP-DSP/FXP-AIP(FXP是int8量化);
  • 模型的int8量化與DSP/AIP的載入時的量化策略。

本文將以如下目錄展開:

  1. 高通與驍龍處理器
  2. SNPE特點與工作流
  3. SNPE組成架構
  4. SNPE性能與精度
  5. int8量化策略

1. 高通與驍龍處理器

這部分的內容改寫自百度百科的詞條:驍龍。高通驍龍是Qualcomm Technologies(美國高通公司)的產品。

1.1 歷代產品

在2013年之前,驍龍處理器分為S1,S2,S3,S4四個層級,以區分不同的四代產品。

  1. 驍龍S1(2007-2011):MSM7225/7265採用ARM v6架構、單CPU核心,45nm製程,320MHz的Hexagon QDSP5,未集成GPU;2008年QSD8250/8650發布,Scorpion核心(ARM v7架構),Adreno 200 GPU,600MHz的Hexagon QDSP6。奠定S2/S3形態;
  2. 驍龍S2:由MSM8255/8655、MSM7230/7630和APQ8055構成。均採用了Scorpion CPU、Adreno 204 GPU、256MHz Hexagon QDSP5以及支持雙通道333MHz LPDDR2內存,45nm製程,功耗降低。MSM8255處理器:HTC Incredible S、HTC Desire S、索尼愛立信LT15i、LT18i、OPPO R807、諾基亞Lumia 800等大多數的WP7系統手機;
  3. 驍龍S3:進入雙核+1080P時代,產品線短,僅有MSM8260/8660和APQ8060三個版本(MSM8260如HTC Sensation、HTC Sensation XE、索尼LT26i、OPPO X905、小米手機),差異在於網路制式,相同點是均為雙核Scorpion CPU、Adreno 220 GPU和400MHz Hexagon QDSP6。驍龍S3與驍龍S2、驍龍S1構成了2010年、2011年間QualcommSoC高中低搭配。
  4. 驍龍S4:
  5. Play系列:雙核MSM8225/8625和四核MSM8225/8625Q,45nm,CPU為Cortex-A5核心與Adreno 203 GPU
  6. Plus系列:雙核Krait CPU、Adreno 205 GPU
  7. 高端Pro,Prime系列:MSM8260A/8660A擁有雙核Krait CPU、雙核/四核Adreno 320。APQ8064擁有高性能四核心Krait CPU

這一部分雖然只是羅列,但是能看出S1~S4的每一代都幾乎都是基於ARM架構+自家DSP+GPU的異構平台。

1.2 驍龍處理器

後來的驍龍處理器,主要包括:800系列、700系列、600系列、400系列和200系列處理器。

800系列特點

  1. 該系列定位高端。截至目前,855是高通最新的旗艦級手機處理器;
  2. 9款:855/845/835/821/820/810/808/805/801/800;
  3. Krait架構、ARM公版架構、定製的Kyro架構:
  4. 800、801、805都基於Krait架構:該架構基於ARMv7-A指令集、自主設計採用28納米工藝的全新處理器微架構;
  5. 810使用64位ARM公版架構;
  6. 驍龍820採用定製架構Kryo:高通推出的首款定製設計的64位CPU架構。821比820性能提升高達10%,此外Hexagon? 680 DSP 帶來性能、電池續航的優化。

其它系列:

  • 700系列:高端級,支持人工智慧引擎(我猜應該是指SNPE)、功耗優化;
  • 600系列:高端級,手機、平板電腦、嵌入式等。15款:670/636/632/660/653/630/626/652/650/617/616/615/610/602A/600;
  • 400系列:大眾級,10款:450/439/429/427/435/430/425/415/412/400;
  • 200系列:入門級,4款:212/210/208/200。

1.3 支持SNPE的處理器

支持SNPE的驍龍處理器列表如下:

  • 9款800系列中的5款(855/845/835/821/820);
  • 1款700系列(710);
  • 15款600系列中的6款(660/652/636/630/625/605);
  • 1款400系列(450)。

參照前面驍龍處理器系列,可以看出SNPE主要針對中高端機型中的800、600系列。

除了關注CPU和GPU外,比較引人注目的是DSP和AIP。其實AIP也是一種DSP,但根據表格中的值發現有CDSP和ADSP之分。只在官方文檔中的支持設備表格與例子部分看到有CDSP,其它地方並沒檢索到更多信息,不過文檔中說CDSP還是ADSP取決於設備:

This module runs on the ADSP or the CDSP, depending on the target. Please refer to the Snapdragon Device Support Matrix table in the Overview section to determine SNPE support of DSP on various Snapdragon devices. SNPE automatically detects the appropriate DSP.

但也在網上查到高通有2種DSP:

  1. mDSP is the Modem DSP, which allows the modem to outsource processing;
  2. aDSP is the Application DSP, which allows the device to process simple sets of data on low power, without having to wake up the Application processor (AP).

下圖是驍龍800處理器,來自Hexagon hotchips2013的PPT,可以看到有aDSP與mDSP。

1.4 Hexagon DSP

列表中CPU、GPU都比較熟悉,但是對後兩個DSP和AIP不了解。根據和高通平台的手機產品中的Hexagon百度百科對詞條Hexagon(高通驍龍處理器的DSP名稱,DSP是數字信號處理器)的解釋:

Hexagon Digital Signal Processor (DSP),高通的Hexagon計算DSP,作為高通研發的世界一流處理器,集成了CPU和DSP功能,能支持移動平台多媒體和modem功能的深度嵌入處理。擁有高級的可變指令長度、超長指令字、支持硬體多線程機制的處理器架構,Hexagon架構和核心家族給高通帶來了modem和多媒體應用的性能和功耗優勢,是高通驍龍處理器的關鍵組件。

?

自驍龍品牌建立之初就有了DSP,早期DSP僅用於語音和簡單的音頻視頻解碼播放,隨著智能手機使用需求加大,包括攝像頭和感測器功能的信號處理任務都可由DSP完成,DSP比CPU更擅長在低功耗下處理這些任務。

其基本特點有:

  • DSP相比CPU可實現高性能計算和高能效(省電);
  • 用於卸載CPU任務,利用異構計算支持實時在線任務;
  • 音頻任務。在無延遲、無失真的情況下流式傳輸音頻,消除背景雜訊;
  • 視覺任務。文本識別、對象識別、圖像增強和圖像內的面部識別。

因為原文太長了,很多圖片和表格貼出來有格式或者顯示問題,這裡附上原文鏈接

高通神經網路處理引擎SNPE分析與評測?

yuenshome.space
圖標

推薦閱讀:
相关文章