看過一些資料上的介紹,NPU設計的思路一般有兩類套路,第一種是帶指令集的,類似于DSP的設計思路,通過定義專用NN指令集配合緊致記憶體,邏輯上比較靈活,另一種是邏輯硬體化的,比如卷積算子,就真的去設計一個卷積電路,然后用過CMD驅使它去作業,今天介紹的NVDLA神經網路加速單元的實作思路屬于后者,
NVDLA官網:
NVIDIA Deep Learning Accelerator
NVDLA和做顯卡也做加速器的NVDIA拼寫很像,這也正象征了它們的關系,nvidla應該是NVIDIA主導的專案,從NVIDIA官網右上角的明顯的NVIDIA Logo可以看的出來,

follow中部的github鏈接打開github開源專案地址,這股聯系更加赤果果了,郵箱后綴直接就是nvidia的,據此可以得出結論,nvdla是nvidia主導的開源專案,
GITHUB地址:nvdla · GitHub

關于Licenses
提到開源就不得不提license,nvdla的license是 NVIDIA Open NVDLA License,看到沒,關系是赤果果的,

而且代碼是用Verilog寫的,熟悉C語言的同學一定不會感到陌生:

硬體架構:
深度學習推理的大部分計算作業是基于數學操作,這些操作可以分為四個部分:卷積,激活,池化,和規范化(規則化,歸一化).

NPU和系統的關系:

軟體呼叫流程:
從應用->模型加載->用戶態runtime library->設備檔案系統(devfs ioctl)->內核態驅動->NPU硬體的呼叫來看,它和VIP的開發思路是一樣的,


系統集成

代碼下載:

實作在這里vmod/nvdla/: 
簡單分析一下,看有多少MAC
NVDLA有多少MAC:
想知道NVDLA默認實作有多少個MAC,可以看檔案vmod/nvdla/cmac/NV_NVDLA_CMAC_CORE_mac.v,打開后,找到實體化MAC的地方,可以看到,最大實體化到了63個MAC,

暫時寫道這里,當前是初識,等有時間了再Deep Dive一下,做一遍仿真,近距離接觸一下NVIDIA的大作,
總結:
看來NPU的做法和思路和CPU不同,CPU設計上無論馮諾伊曼還是哈弗架構,都有統一而且標準的設計規范,NPU則不同,雖說也是一個處理器,但是是沒有標準的,每家的做法都不一樣,從這個角度看,似憾訓可以將名字區分一下,對于利用指令集來實作的,叫做NPU(xPU),屬于可以執行指令的,對于純粹硬體實作加速的,可以叫做NN引擎,也就是NNA,特點是沒有指令集,不能執行指令,
參考資料
NVDLA Primer — NVDLA Documentation
結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421400.html
標籤:AI
上一篇:模擬退火演算法詳解
