0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用AXI CDMA制作FPGA AI加速器通道

OpenFPGA ? 來源:OpenFPGA ? 2023-02-08 09:33 ? 次閱讀

介紹

使用 AMD-Xilinx FPGA設(shè)計一個全連接DNN核心現(xiàn)在比較容易(Vitis AI),但是利用這個核心在 DNN 計算中使用它是另一回事。本項目主要是設(shè)計AI加速器,利用Xilinx的CDMA加載權(quán)重,輸入到PL區(qū)的Block Ram。

原理框圖

73a568dc-a733-11ed-bfe3-dac502259ad0.png

首先,我們創(chuàng)建了整個系統(tǒng)的示意圖。有兩個 Block RAW 分別用于存儲輸入特征和權(quán)重數(shù)據(jù)。每個Block RAM 都連接到一個 CDMA ,允許 DRAM 訪問 Bram。每個 Block RAM 還連接到由 8 個 FCN 內(nèi)核和 FSM 組成的主加速器,控制內(nèi)核的操作。

完整的激活順序如下:

DDR 內(nèi)存中存儲特征和權(quán)重。

使用CDMA 將這些數(shù)據(jù)分別發(fā)送到block ram1 和block ram2。

向 FC core 發(fā)送 activate 信號,進行 FCN 計算。

將結(jié)果存儲在 blcok ram 中。

重復(fù)此過程,直到完成第一層前向傳播。

重復(fù)整個過程,將輸入鏈接到存儲在Block RAM 中的結(jié)果。

碼分多址

為了直接訪問內(nèi)存,我們使用了 cdma??梢栽赬Iinx 網(wǎng)站上參考 xilinx turoial(https://www.xilinx.com/support/university/vivado/vivado-workshops/Vivado-adv-embedded-design-zynq.html)。

首先,配置處理器啟用 S_AXI_HP0 接口。

73b703d0-a733-11ed-bfe3-dac502259ad0.png

二、添加cdma和bram模塊。Vivado 通過 Run Connection Automation 將 cdma 和 bram 連接到處理器。那么設(shè)計應(yīng)該類似于下圖。

73ecac74-a733-11ed-bfe3-dac502259ad0.png

加速器IP

加速器 IP 由 4 個源文件組成。

加速器:連接 AXI4-lite 模塊和 bram_to_fc 模塊。

AXI4-lite :它執(zhí)行 AXI4-lite 接口將結(jié)果值從 PL 傳輸?shù)?PS。并將 fsm 信號傳輸?shù)?bram_to_fc 模塊。

bram_to_fc :它從 bram0、bram1 接收特征圖和權(quán)重,并將它們發(fā)送到 sumproduct_core。

sumproduct_core :它使用 8 位輸入執(zhí)行 sumproduct 計算。并返回 32 位輸出。

創(chuàng)建 AXI4 外設(shè)來制作 AXI4-lite 模板。接口類型是lite版,制作 10 個寄存器。然后修改模板來制作 AXI4-lite 模塊。

74143a1e-a733-11ed-bfe3-dac502259ad0.png

添加以上 4 個 Verilog 文件來生成加速器 IP。

7431700c-a733-11ed-bfe3-dac502259ad0.png

Vivado Block設(shè)計

然后我們使用 VIVADO block digram 工具構(gòu)建整個設(shè)計。我們使用具有 64 位數(shù)據(jù)寬度的雙端口 bram 來最大化系統(tǒng)的效率。

在地址編輯器中,將 axi_bram_ctrl 范圍從 8k 更改為 64k。

7455f558-a733-11ed-bfe3-dac502259ad0.png

測試

在 FPGA 板卡上測試了我們的加速器,將硬件導(dǎo)出到 VITIS,為了測試我們的加速器性能,我們比較了軟件和硬件之間的相同任務(wù)運行時間。

HW運行時間:數(shù)據(jù)發(fā)送時間+HW計算時間+數(shù)據(jù)接收時間

SW runtime : SW計算時間

1. 使用 CDMA 將特征圖和權(quán)重從 DDR3 傳輸?shù)?BRAM。

//transferfeauturemapfromDDR3toBram0
XAxiCdma_IntrEnable(&xcdma,XAXICDMA_XR_IRQ_ALL_MASK);
Status=XAxiCdma_SimpleTransfer(&xcdma,(u32)source_0,(u32)cdma_memory_destination_0,numofbytes,Example_CallBack,(void*)&xcdma);

//transferweightfromDDR3toBram1
XAxiCdma_IntrEnable(&xcdma,XAXICDMA_XR_IRQ_ALL_MASK);
Status=XAxiCdma_SimpleTransfer(&xcdma,(u32)source_1,(u32)cdma_memory_destination_1,numofbytes,Example_CallBack,(void*)&xcdma);

2. 發(fā)送 FSM 運行信號和要傳輸?shù)妮斎霐?shù)量。

Xil_Out32((XPAR_ACCELERATOR_0_BASEADDR)+(CTRL_REG*4),(u32)(numofbytes|0x80000000));

3. 檢查硬件計算結(jié)果。

OT_RSLT_HW[0]=Xil_In64((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_0_REG*AXI_DATA_BYTE));
OT_RSLT_HW[1]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_1_REG*AXI_DATA_BYTE));
OT_RSLT_HW[2]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_2_REG*AXI_DATA_BYTE));
OT_RSLT_HW[3]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_3_REG*AXI_DATA_BYTE));
OT_RSLT_HW[4]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_4_REG*AXI_DATA_BYTE));
OT_RSLT_HW[5]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_5_REG*AXI_DATA_BYTE));
OT_RSLT_HW[6]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_6_REG*AXI_DATA_BYTE));
OT_RSLT_HW[7]=Xil_In32((XPAR_ACCELERATOR_0_BASEADDR)+(RESULT_7_REG*AXI_DATA_BYTE));

for(ii=0;ii<8;?ii++){
???????printf("%d?
",?OT_RSLT_HW[ii]);
??????????}

4. 檢查SW計算結(jié)果。

可以在下面看到測試結(jié)果。

74689438-a733-11ed-bfe3-dac502259ad0.png

正如在這個結(jié)果中看到的那樣,我們加速器的使用時間(11.40+13.44+4.71 us)比在 PS 區(qū)域(104.99 us)上要少得多。

代碼

https://github.com/Hyunho-Won/cdma_accelerator

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600454
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5402

    瀏覽量

    133701
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    788

    瀏覽量

    37557
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29359

    瀏覽量

    267635
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16557

原文標題:使用 AXI CDMA 制作 FPGA AI 加速器通道

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)中心加速器就看GRVI Phalanx FPGA加速器

    數(shù)據(jù)中心采用FPGA加速器已經(jīng)成為主流,像MS的Catapult,Amazon基于Xilinx FPGA的AWS F1,Intel的Altera,Baidu公司等
    的頭像 發(fā)表于 10-16 11:49 ?8835次閱讀
    數(shù)據(jù)中心<b class='flag-5'>加速器</b>就看GRVI Phalanx <b class='flag-5'>FPGA</b><b class='flag-5'>加速器</b>

    家居智能化,推動AI加速器的發(fā)展

    電子發(fā)燒友網(wǎng)報道(文/黃山明)AI加速芯片,也稱為人工智能加速器AI Accelerator),是一種專為執(zhí)行機器學(xué)習(xí)和深度學(xué)習(xí)任務(wù)而設(shè)計的ASIC或定制化處理
    的頭像 發(fā)表于 02-23 00:18 ?4465次閱讀

    #硬聲創(chuàng)作季 電子制作:磁性加速器

    加速器DIY
    Mr_haohao
    發(fā)布于 :2022年10月19日 00:19:38

    機器學(xué)習(xí)實戰(zhàn):GNN加速器FPGA解決方案

    的場景。如上所述種種設(shè)計挑戰(zhàn)的存在,使得業(yè)界急需一種可以支持高度并發(fā)實時計算、巨大內(nèi)存容量和帶寬、以及在數(shù)據(jù)中心范圍可擴展的GNN加速解決方案。5. GNN加速器FPGA設(shè)計方案Achronix 公司
    發(fā)表于 10-20 09:48

    使用AMD-Xilinx FPGA設(shè)計一個AI加速器通道

    介紹使用 AMD-Xilinx FPGA設(shè)計一個全連接DNN核心現(xiàn)在比較容易(Vitis AI),但是利用這個核心在 DNN 計算中使用它是另一回事。本項目主要是設(shè)計AI加速器,利用X
    發(fā)表于 02-21 15:01

    【書籍評測活動NO.18】 AI加速器架構(gòu)設(shè)計與實現(xiàn)

    經(jīng)驗總結(jié)圖解NPU算法、架構(gòu)與實現(xiàn),從零設(shè)計產(chǎn)品級加速器當前,ChatGPT和自動駕駛等技術(shù)正在為人類社會帶來巨大的生產(chǎn)力變革,其中基于深度學(xué)習(xí)和增強學(xué)習(xí)的AI計算扮演著至關(guān)重要的角色。新的計算范式需要
    發(fā)表于 07-28 10:50

    AI加速器架構(gòu)設(shè)計與實現(xiàn)》+第2章的閱讀概括

    首先感謝電子發(fā)燒友論壇提供的書籍和閱讀評測的機會。 拿到書,先看一下封面介紹。這本書的中文名是《AI加速器架構(gòu)設(shè)計與實現(xiàn)》,英文名是Accelerator Based on CNN Design
    發(fā)表于 09-17 16:39

    優(yōu)化基于FPGA的深度卷積神經(jīng)網(wǎng)絡(luò)的加速器設(shè)計

    CNN已經(jīng)廣泛用于圖像識別,因為它能模仿生物視覺神經(jīng)的行為獲得很高識別準確率。最近,基于深度學(xué)習(xí)算法的現(xiàn)代應(yīng)用高速增長進一步改善了研究和實現(xiàn)。特別地,多種基于FPGA平臺的深度CNN加速器被提出
    發(fā)表于 11-17 13:31 ?7949次閱讀

    基于Xilinx FPGA的Memcached硬件加速器的介紹

    本教程討論基于Xilinx FPGA的Memcached硬件加速器的技術(shù)細節(jié),該硬件加速器可為10G以太網(wǎng)端口提供線速Memcached服務(wù)。
    的頭像 發(fā)表于 11-27 06:41 ?3669次閱讀

    基于FPGA的SIMD卷積神經(jīng)網(wǎng)絡(luò)加速器

    一種基于FPGA的SIM卷積神經(jīng)網(wǎng)絡(luò)加速器架構(gòu)。以YOOV2目標檢測算法為例,介紹了將卷積神經(jīng)網(wǎng)絡(luò)模型映射到FPGA上的完整流程;對加速器的性能和資源耗費進行深λ分析和建模,將實際傳輸
    發(fā)表于 05-28 14:00 ?24次下載

    什么是AI加速器 如何確需要AI加速器

    AI加速器是一類專門的硬件加速器或計算機系統(tǒng)旨在加速人工智能的應(yīng)用,主要應(yīng)用于人工智能、人工神經(jīng)網(wǎng)絡(luò)、機器視覺和機器學(xué)習(xí)。
    發(fā)表于 02-06 12:47 ?4439次閱讀

    如何采用帶專用CNN加速器AI微控制實現(xiàn)CNN的硬件轉(zhuǎn)換

    服務(wù)農(nóng)場或昂貴的現(xiàn)場可編程門陣列(FPGA)為載體。AI應(yīng)用的挑戰(zhàn)在于提高計算能力的同時保持較低的功耗和成本。當前,強大的智能邊緣計算正在使AI應(yīng)用發(fā)生巨大轉(zhuǎn)變。與傳統(tǒng)的基于固件的
    的頭像 發(fā)表于 05-16 01:05 ?726次閱讀

    Rapanda流加速器-實時流式FPGA加速器解決方案

    電子發(fā)燒友網(wǎng)站提供《Rapanda流加速器-實時流式FPGA加速器解決方案.pdf》資料免費下載
    發(fā)表于 09-13 10:17 ?0次下載
    Rapanda流<b class='flag-5'>加速器</b>-實時流式<b class='flag-5'>FPGA</b><b class='flag-5'>加速器</b>解決方案

    PCIe在AI加速器中的作用

    從線上購物時的“猜你喜歡”、到高等級自動駕駛汽車上的實時交通信息接收,再到在線視頻游戲,所有的這些都離不開人工智能(AI加速器AI加速器是一種高性能的并行計算設(shè)備,旨在高效處理神經(jīng)
    的頭像 發(fā)表于 11-18 10:36 ?1905次閱讀
    PCIe在<b class='flag-5'>AI</b><b class='flag-5'>加速器</b>中的作用

    粒子加速器加速原理是啥呢?

    粒子加速器加速原理是啥呢? 粒子加速器是一種重要的實驗設(shè)備,用于研究粒子物理學(xué)、核物理學(xué)等領(lǐng)域。其主要原理是通過電場和磁場的作用,對帶電粒子進行加速,在高速運動過程中使其獲得較大的動
    的頭像 發(fā)表于 12-18 13:52 ?1848次閱讀