加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 0、Zynq7000系列概覽
    • 1、內(nèi)存占用
    • 2、PipeCNN可實(shí)現(xiàn)性
    • 3、實(shí)現(xiàn)大型神經(jīng)網(wǎng)絡(luò)的方法
    • 4、Virtex-7高端FPGA概覽
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Xilinx Zynq系列FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)中相關(guān)資源評(píng)估

12/17 15:20
771
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

0、Zynq7000系列概覽

1、內(nèi)存占用

1.1 FPGA程序中內(nèi)存的實(shí)現(xiàn)方式

參閱xilinx文檔UG998

FPGA并沒有像軟件那樣用已有的cache,F(xiàn)PGA的HLS編譯器會(huì)在FPGA中創(chuàng)建一個(gè)快速的memory architecture以最好的適應(yīng)算法中的數(shù)據(jù)樣式(data layout)。因此FPGA可以有相互獨(dú)立的不同大小的內(nèi)部存儲(chǔ)空間,例如寄存器,移位寄存器,F(xiàn)IFOs和BRAMs。

寄存器:最快的內(nèi)存結(jié)構(gòu),集成在在運(yùn)算單元之中,獲取不需要額外的時(shí)延。

移位寄存器:可以被當(dāng)作一個(gè)數(shù)據(jù)序列,每一個(gè)數(shù)據(jù)可以在不同的運(yùn)算之中被重復(fù)使用。將其中所有數(shù)據(jù)移動(dòng)到相鄰的存儲(chǔ)設(shè)備中只需要一個(gè)時(shí)鐘周期。

FIFO:只有一個(gè)輸入和輸出的數(shù)據(jù)序列,通常被用于循環(huán)或循環(huán)函數(shù),細(xì)節(jié)會(huì)被HLS編譯器處理。

BRAM:集成在FPGA fabric模塊中的RAM,每個(gè)xilinx的FPGA中集成有多個(gè)這樣的BRAM。可以被當(dāng)作有以下特性的cache:1.不支持像處理器cache中那樣的緩存一致性(cache coherency,collision),不支持處理器中的一些邏輯類型。2.只在設(shè)備有電時(shí)保持內(nèi)存。3.不同的BRAM塊可以同時(shí)傳輸數(shù)據(jù)。

1.2?Zynq的BRAM內(nèi)存大小

zynq 7z020的BRAM為4.9Mb,7z035的BRAM為17.6Mb(2.2MB)

1.3?一個(gè)卷積操作占用的內(nèi)存

例如,我們實(shí)現(xiàn)的卷積函數(shù),輸入27×600,卷積核16×27,輸出16×600,數(shù)據(jù)類型為float。

  //convolution operation????????for (i = 0; i < 16; i++) {    for (j = 0; j < 600; j++) {      result = 0;      for (k = 0; k < 27; k++) {        temp = weights[i*27+k] * buf_in[k*600+j];        result += temp;      }      buf_out[i*600+j] = result;    }  }

在HLS中生成的IPcore占用硬件資源為:

vivado中搭建好系統(tǒng),占用的資源為:

2、PipeCNN可實(shí)現(xiàn)性

PipeCNN是一個(gè)基于OpenCL的FPGA實(shí)現(xiàn)大型卷積網(wǎng)絡(luò)的加速器。

PipeCNN解析文檔:

PipeCNN論文解析:用OpenCL實(shí)現(xiàn)FPGA上的大型卷積網(wǎng)絡(luò)加速

github地址:https://github.com/doonny/PipeCNN#how-to-use

2.1 已實(shí)現(xiàn)的PipeCNN資源消耗

對(duì)于Altera FPGA,運(yùn)用?Intel's OpenCL SDK?v16.1 toolset.

對(duì)于Xilinx FPGAs, the?SDAccel?development environment v2017.2 can be used.

Xilinx's?KCU1500?(XCKU115 FPGA)(已經(jīng)有xilin的板子實(shí)現(xiàn)過pipeCNN,但是型號(hào)比zynq高很多)

硬件資源可以被三個(gè)宏調(diào)控,device/hw_param.cl. Change the following macros

VEC_SIZE

LANE_NUM

CONV_GP_SIZE_X

消耗資源為:

3、實(shí)現(xiàn)大型神經(jīng)網(wǎng)絡(luò)的方法

方案一:壓縮模型到<2.2MB,可實(shí)現(xiàn)在BRAM中

優(yōu)點(diǎn):1.速度快 2.實(shí)現(xiàn)方便

缺點(diǎn):1.模型壓縮難度 2.難以實(shí)現(xiàn)大型網(wǎng)絡(luò)

方案二:用FPGA調(diào)用DDR

優(yōu)點(diǎn):1.速度中等 2.可實(shí)現(xiàn)大型網(wǎng)絡(luò)

缺點(diǎn):調(diào)用DDR有難度,開發(fā)周期長(zhǎng)

方案三:用片上單片機(jī)調(diào)用DDR(插入SD卡)分包傳入IPcore運(yùn)算

優(yōu)點(diǎn):可實(shí)現(xiàn)大型網(wǎng)絡(luò)

缺點(diǎn):速度較慢

4、Virtex-7高端FPGA概覽

Virtex-7為高端FPGA,比Zynq高了一個(gè)檔次。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

任何技術(shù)的學(xué)習(xí)就好比一個(gè)江湖,對(duì)于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。