0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OpenFPGA 来源:OpenFPGA 2023-02-08 09:33 次阅读

介绍

使用 AMD-Xilinx FPGA设计一个全连接DNN核心现在比较容易(Vitis AI),但是利用这个核心在 DNN 计算中使用它是另一回事。本项目主要是设计AI加速器,利用Xilinx的CDMA加载权重,输入到PL区的Block Ram

原理框图

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

首先,我们创建了整个系统的示意图。有两个 Block RAW 分别用于存储输入特征和权重数据。每个Block RAM 都连接到一个 CDMA ,允许 DRAM 访问 Bram。每个 Block RAM 还连接到由 8 个 FCN 内核和 FSM 组成的主加速器,控制内核的操作。

完整的激活顺序如下:

DDR 内存中存储特征和权重。

使用CDMA 将这些数据分别发送到block ram1 和block ram2。

向 FC core 发送 activate 信号,进行 FCN 计算。

将结果存储在 blcok ram 中。

重复此过程,直到完成第一层前向传播。

重复整个过程,将输入链接到存储在Block RAM 中的结果。

码分多址

为了直接访问内存,我们使用了 cdma。可以在XIinx 网站上参考 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 连接到处理器。那么设计应该类似于下图。

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

加速器IP

加速器 IP 由 4 个源文件组成。

加速器:连接 AXI4-lite 模块和 bram_to_fc 模块。

AXI4-lite :它执行 AXI4-lite 接口将结果值从 PL 传输到 PS。并将 fsm 信号传输到 bram_to_fc 模块。

bram_to_fc :它从 bram0、bram1 接收特征图和权重,并将它们发送到 sumproduct_core。

sumproduct_core :它使用 8 位输入执行 sumproduct 计算。并返回 32 位输出。

创建 AXI4 外设来制作 AXI4-lite 模板。接口类型是lite版,制作 10 个寄存器。然后修改模板来制作 AXI4-lite 模块。

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

添加以上 4 个 Verilog 文件来生成加速器 IP。

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

Vivado Block设计

然后我们使用 VIVADO block digram 工具构建整个设计。我们使用具有 64 位数据宽度的双端口 bram 来最大化系统的效率。

在地址编辑器中,将 axi_bram_ctrl 范围从 8k 更改为 64k。

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

测试

在 FPGA 板卡上测试了我们的加速器,将硬件导出到 VITIS,为了测试我们的加速器性能,我们比较了软件和硬件之间的相同任务运行时间。

HW运行时间:数据发送时间+HW计算时间+数据接收时间

SW runtime : SW计算时间

1. 使用 CDMA 将特征图和权重从 DDR3 传输到 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. 发送 FSM 运行信号和要传输的输入数量。

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

3. 检查硬件计算结果。

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计算结果。

可以在下面看到测试结果。

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

正如在这个结果中看到的那样,我们加速器的使用时间(11.40+13.44+4.71 us)比在 PS 区域(104.99 us)上要少得多。

代码

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21326

    浏览量

    593216
  • amd
    amd
    +关注

    关注

    25

    文章

    5201

    浏览量

    132638
  • 加速器
    +关注

    关注

    2

    文章

    744

    浏览量

    36600
  • AI
    AI
    +关注

    关注

    87

    文章

    26458

    浏览量

    264072
  • AXI
    AXI
    +关注

    关注

    1

    文章

    126

    浏览量

    16286

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

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【国产FPGA+OMAPL138开发板体验】(原创)5.FPGAAI加速源代码

    使用硬件加速器来进一步提升性能。我写的这个简化的代码只是为了帮助理解FPGA如何可能参与AI计算的过程。在实际的FPGA AI
    发表于 02-12 16:18

    一个模型带你了解#回旋加速器原理

    加速器DIY
    jf_49445761
    发布于 :2022年08月28日 08:57:57

    #硬声创作季 电子制作:磁性加速器

    加速器DIY
    Mr_haohao
    发布于 :2022年10月19日 00:19:38

    怎么使用AXI CDMA从OCM/DDR写入BRAM

    提交一个事务,并将我提交的缓冲区中的数据写入块存储生成器创建的BRAM中。据我所知,我上面描述的设置应该允许这样做。在我的地址编辑中,在sys_ps7下,有一个AXI_CDMA_0条目,其偏移地址
    发表于 04-19 07:50

    机器学习实战:GNN加速器FPGA解决方案

    的场景。如上所述种种设计挑战的存在,使得业界急需一种可以支持高度并发实时计算、巨大内存容量和带宽、以及在数据中心范围可扩展的GNN加速解决方案。5. GNN加速器FPGA设计方案Achronix 公司
    发表于 10-20 09:48

    基于arm Cortex-M3处理与深度学习加速器的实时人脸口罩检测SoC设计方案

    CMSDK工具设计了AHB总线系统,在基于单级AHB总线的框架下,通过APB桥接器和AXI桥接器扩展了APB总线和AXI总线,进而构成该SoC高效的总线框架。通过搭建高效的总线系统将M3处理与硬件
    发表于 08-26 15:23

    使用AMD-Xilinx FPGA设计一个AI加速器通道

    介绍使用 AMD-Xilinx FPGA设计一个全连接DNN核心现在比较容易(Vitis AI),但是利用这个核心在 DNN 计算中使用它是另一回事。本项目主要是设计AI加速器,利用X
    发表于 02-21 15:01

    【书籍评测活动NO.18】 AI加速器架构设计与实现

    经验总结图解NPU算法、架构与实现,从零设计产品级加速器当前,ChatGPT和自动驾驶等技术正在为人类社会带来巨大的生产力变革,其中基于深度学习和增强学习的AI计算扮演着至关重要的角色。新的计算范式需要
    发表于 07-28 10:50

    AI加速器架构设计与实现》+第2章的阅读概括

    首先感谢电子发烧友论坛提供的书籍和阅读评测的机会。 拿到书,先看一下封面介绍。这本书的中文名是《AI加速器架构设计与实现》,英文名是Accelerator Based on CNN Design
    发表于 09-17 16:39

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

    本教程讨论基于Xilinx FPGA的Memcached硬件加速器的技术细节,该硬件加速器可为10G以太网端口提供线速Memcached服务。
    的头像 发表于 11-27 06:41 3471次阅读

    FPGA取代AI加速器中的GPU

    AI软件初创公司Mipsology正在与Xilinx合作,以使FPGA能够仅使用一个附加命令即可替换AI加速器应用程序中的GPU。Mipsology的“零努力”软件Zebra将GPU代
    的头像 发表于 07-21 15:14 1.1w次阅读

    如何创建AXI CDMA Linux用户空间示例应用

    本篇博文将为您演示如何创建 AXI CDMA Linux 用户空间示例应用。 示例设计将在 Zynq UltraScale+ RFSoC ZCU111 评估板上实现通过 AXI CDMA
    的头像 发表于 09-28 15:31 2311次阅读
    如何创建<b class='flag-5'>AXI</b> <b class='flag-5'>CDMA</b> Linux用户空间示例应用

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

    AI加速器是一类专门的硬件加速器或计算机系统旨在加速人工智能的应用,主要应用于人工智能、人工神经网络、机器视觉和机器学习。
    发表于 02-06 12:47 3755次阅读

    Rapanda流加速器-实时流式FPGA加速器解决方案

    电子发烧友网站提供《Rapanda流加速器-实时流式FPGA加速器解决方案.pdf》资料免费下载
    发表于 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加速器是一种高性能的并行计算设备,旨在高效处理神经
    的头像 发表于 11-18 10:36 1238次阅读
    PCIe在<b class='flag-5'>AI</b><b class='flag-5'>加速器</b>中的作用