背景:深鑒科技的DNNDK,是一個基于Xilinx FPGA的SDK端的深度學習開發工具包,能夠快速的實現深度學習的硬件化。
目的:了解深鑒科技DNNDK內容。
參考內容:
http://www.deephi.com/technology/dnndk
deephi_dnndk_1.10_betadocs user Guide
本篇目錄
1. 概覽
1.1 DNNDK基于什么?
1.2DP-8000開發板
2. DNNDK Framework
3. DPU應用部署
3.1模型壓縮
3.2模型編譯
4. DPU編程
4.1DPU Kernel
4.2DPU Task
4.3DPU Node
4.4DPU Tensor
5. 混合編譯
6. 運行
7. 重要信息
7.1 板子是否為xilinx的開發板?
7.2 源碼是否公開?
正文
1概覽
DNNDK (Deep Neural Network Development Kit) - DeePhi deep learning SDK, is designed as an integrated framework, which aims to simplify & accelerate DL (Deep Learning) applications development and deployment on DeePhi DPU (Deep Learning Processing Unit) platform. (Click DNNDK for more information.)
1.1 DNNDK基于什么?
深鑒科技基于 XILINX FPGA芯片 (包括 ZYNQ-7020,ZU2,ZU3,ZU9, KU115等)實現了多個DPU開發平臺(2018年將對外提供深鑒自主研發的對外提供深鑒自主研發的 DPU Soc芯片) ,DNNDK對所有 DPU開發平臺向用 戶提供統一的工具鏈和戶編程接口 APIs。
1.2DP-8000開發板
運用zynq7020芯片,開發板與FPGA芯片是不一樣的。
A complete set of solid optimization toolchains, covering compression, compilation and runtime
Lightweight standard C/C++ programming APIs
Easy-to-use & flat/gentle learning curve
2DNNDK Framework
DNNDK組成:
DEep ComprEssioN Tool (DECENT),深度壓縮工具:提供剪枝和定點化運算。
Deep Neural Network Compiler (DNNC), 神經網絡編譯器:將網絡算法編譯到DPU平臺高效運行。運用DECENT后的caffe網絡模型作為輸入。
Deep Neural Network Assembler (DNNAS), 神經網絡集成器:將DPU指令流會編程標準的ELF二進制文件
Neural Network Runtime (N2Cube), 神經網絡運行,運行時支持環境,神經網絡的加載,資源管理,調度。N2Cube核心組件包括四個部分 : DPU驅動程序 (Driver),加載器 (Loader)、性能分析器 (Profiler)及編程開發庫編程開發庫 (Library)。
DPU Simulator and Profiler. 深度學習處理單元模擬器。simulator用于驗證二進制指令流,只是深鑒科技內部使用,沒有對外發布。

3DPU應用部署
1. 模型壓縮 (主機)
2. 模型編譯 (主機)
3. DPU編程開發 (主機或開發板)
4. 混合編譯 (開發板)
5. 運行 (開發板)
3.1模型壓縮
DECENT工具:

3.2模型編譯

編譯器前端( Parser)主要處理網絡模型的分析與轉換,解析輸入網絡模型的拓撲結構并將其為 DNNC內部與深度學習框架生成的計算圖用IR表示。
中端為優化器 (Optimizer),它基于內部IR實施各種編譯優化遍 ,包括融合計算圖中不同節點間的操作 、高效調度指令 、充分復用 DPU片上數據等 。
代碼生成器 (Code-generator)為DNNC編譯后端, 主要負責把經過中端優化后的計算圖IR映射成為高效運行在DPU上的指令流 。
4DPU編程
4.1DPU Kernel
將神經網絡實現為FPGA上實體(可以看作IPcore)。DPU Kernel可以理解為在DPU平臺上部署的平臺上部署的一個深度學習網絡模型的實 體。每個神經網絡對應 一個 DPU匯編文件,通過調用DPU運行N2Cube時的dpuLoadKernel()成為一個可運行實體。 DPU的運行時將其加載到特定內存空間并為其分配硬件資源。 然后通過調用 dpuCreateTask()將其實例化為多個DPU Task。
4.2DPU Task
DPU Task是 DPU Kernel的一個運行實例 。每個 DPU Task中處理一個具體的計算任務。每個 DPU Task之間的內存空間相互獨立,使得我們可以通過多線程來運行多個 DPU Task,以此來提高系統效率和吞吐量 。
4.3DPU Node
DPU Node是DPU上運行網絡模型的一個組成部分 。每個 DPU Node都有其對應的輸入、出以及其對應的輸入、出以及相關參數。DPU Node依靠其名稱來索引,我們可以依靠其名稱來索引,我們可以通過 DNNDK提供的 API來獲取每個 Node的相關信息 的相關信息 。
4.4DPU Tensor
DPU Tensor是多維數據的集合 ,用來存儲網絡在運行過程中的數據信息。我們可以通過DNNDK提供的 API獲取某個 Tensor對應的屬性,如 Height, Width,Channel以及地址信息。
5混合編譯

6運行

DPU運行時主要包含四部分:加載器 (Loader)、性能 、性能分析器( Profiler)、庫( Library)和 DPU驅動( DPU Driver)。
7重要信息
7.1 板子是否為xilinx的開發板?
不是Xilinx的開發板,只是包含Xilinx的FPGA芯片7z020,開發板是深鑒科技的開發板DP-8000,但是有DPU及相應工具的情況下可以運用Xilinx的開發板來實現。
7.2 源碼是否公開?
僅僅公開了主函數和.h頭文件,并沒有公開驅動和IPcore的源碼。
相當于對DPU的定義封裝到安裝文件和二進制文件中,無法看到源碼。
責任編輯:lq
-
神經網絡
+關注
關注
42文章
4838瀏覽量
107859 -
Xilinx
+關注
關注
73文章
2201瀏覽量
131198 -
驅動程序
+關注
關注
19文章
869瀏覽量
50502
原文標題:深鑒科技DNNDK概覽
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
入門宇樹機器人開發:從SDK源碼探索到實戰操作
Microchip推出SDI IP內核與四通道CoaXPress?橋接工具包,進一步擴展PolarFire? FPGA智能嵌入式視頻生態系統
PYQT 應用程序框架及開發工具
三種開發工具的功能和優勢
eForce無線通信軟件開發工具包兼容WLAN模塊WKR612AA1
IAR開發工具鏈有什么優勢
IQM 宣布 Resonance 量子云平臺重大升級,推出全新軟件開發工具包
Silicon Labs最新版本Simplicity Studio開發工具包SiSDK 2025.6.0增添多項無線技術協作
IAR開發平臺升級Arm和RISC-V開發工具鏈,加速現代嵌入式系統開發
AI開發工具分類與功能
鴻蒙北向開發OpenHarmony5.0 DevEco Studio開發工具安裝與配置
基于Xilinx FPGA的SDK端的深度學習開發工具包
評論