上云无忧 > 文档中心 > 百度智能云FPGA云服务器示例工程说明
FPGA云服务器
百度智能云FPGA云服务器示例工程说明

文档简介:
FPGA示例工程说明 概述 为方便您掌握FPGA云服务器的使用流程,快速创建自己定制的加速卡逻辑,百度智能云提供一个demo工程作为示例。 该demo工程支持了基于FPGA云服务器开发的几个基础功能,主要包括:
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

FPGA示例工程说明

概述

为方便您掌握FPGA云服务器的使用流程,快速创建自己定制的加速卡逻辑,百度智能云提供一个demo工程作为示例。

该demo工程支持了基于FPGA云服务器开发的几个基础功能,主要包括:

  • 工程分成静态和动态两部分逻辑,支持基于pcie总线的partial reconfiguration开发及配置流程。
  • 静态逻辑支持pcie-3.0-8x xdma,并提供了配套的driver。用户不能修改也无需关注静态部分的逻辑。
  • 动态逻辑为用户自定制部分,用户需基于当前提供的接口实现所需功能逻辑。demo工程中的动态逻辑是一个element-wise向量加法模块,基于HLS开发。接口包括:
  • 一个axi slave(256bit)和一个axi lite slave(32bit)接口,可分别用于传输逻辑所需的数据和控制命令。
  • 4个axi master(512bit),用于连接DDR MIG控制器(可选)。
  • 中断、时钟。
  • 支持基于pcie总线的ila debug,可在云服务器上的vivado中抓取信号波形进行调试。

您可根据此demo工程的结构及提供的配套脚本了解fpga云服务器的开发流程,并以该工程为基础,修改其中的动态逻辑,实现所需的其他功能。

工程结构

demo工程主要包含了两个部分,分别是static_bd_wrapper和rp_bd_wrapper。

其中static_bd_wrapper属于工程的静态部分,提供了pcie xdma,基于pcie的debug模块,flash控制器等。静态部分的逻辑不暴露给用户,用户不能修改也不用关心静态部分的逻辑。

rp_bd_wrapper则是动态逻辑,这部分逻辑中有rp_bd和其他一些组件。其中只有rp_bd是用户可以修改的内容。其他组件主要用于支持用户利用虚拟jtag进行调试或其他功能,这些组件不需要用户关心,用户不能修改。

rp_bd通过两组AXI总线与static_bd_wrapper传输数据,可以此为基础实现您所需的功能。

demo工程的rp_bd结构框图如下:

模块 说明
Block Ram rp_bd内部有一个64KB的block ram用来存储计算所用的数据和计算结果,这个block ram可同时被host和卡上的用户逻辑访问,这是通过rp_bd中的一个AXI Interconnect实现的。
AXI Interconnect AXI Interconnect用于协调两个AXI master访问rp_bd中的Block Ram;static_bd内的xdma输出的AXI4连接到AXI Interconnect的一个slave端口,demo工程提供的drive支持host通过dma访问这个block ram;PE内的Vector Add模块输出的AXI4连接到AXI Interconnect的另一个端口,使得用户逻辑也可以访问这个block ram。
CU 命令处理单元,static_bd输出的AXI-lite接口连接到PE中的CU模块,CU模块解析从AXI lite收到的命令,并产生符合ap_ctrl总线的请求信号与Vector Add模块相连。ap_ctrl是通过HLS综合出的逻辑模块采用的一种标准状态控制总线。有关其详细介绍可以参考Xilinx ug902文档。
Vector Add 计算处理单元,Vector Add模块完成向量加法运算,他是使用HLS高级综合工具开发的,它的控制输入为一组HLS模块使用的ap_ctrl信号;他使用AXI总线协议将Block Ram中的数据读出,进行加法运算后,将数据写回Block Ram中。

PE工作流程

  1. 软件发起dma_to_dev将输入向量A,B拷贝至dev;A,B的长度必须8个float数据对齐。(单精度浮点数)
  2. 软件通过配置寄存器发起PE计算指令,然后等待PE计算完成。
  3. PE计算完成后,通过中断通知CPU上的软件驱动程序。
  4. 软件发起dma_from_dev将输出向量C拷贝至host。(单精度浮点数)
相似文档
  • FPGA具有低功耗,低延时,高性能的特点,在深度学习计算领域有很广阔的应用前景。FPGA从2013年开始就应用在许多典型的深度学习模型中,如DNN,RNN,CNN,LSTM等,涵盖了语音识别,自然语言处理,推荐算法,图像识别等广泛的应用领域。
  • CNN图像分类API接口 设备管理接口 查询FPGA设备通道数量 定义:int get_fpga_tunnel_num() 功能:获取FPGA设备通道数量 参数:无 返回:当前主机FPGA设备上独立通道数量 初始化FPGA设备句柄 定义:init_fpga_handle(FpgaHandle& fh, const FpgaHandle::Mode mode = FpgaHandle::FPGA_MODE, const int tunnel = 0) 功能:初始化FPGA设备句柄
  • CNN图像分类DEMO说明 目录结构如下: fpga-cnn |----demo |----env.sh |----fpga_demo.cpp |----Makefile |----run_fpga.sh |----run.sh |----models |----ResNet-50 |----ResNet-50.caffemodel |----ResNet-50.labels |----ResNet-50.means.binaryproto |----ResNet-50.prototxt |----ResNet-50.test.jpg |----dependency/ |----include/ |----lib/
  • CNN图像分类DEMO 为了便于用户开发,FPGA 云服务器包装了CNN图像分类demo: 目录结构 fpga-cnn |----demo |----env.sh |----fpga_demo.cpp |----Makefile |----run_fpga.sh |----run.sh |----models |----ResNet-50 |----ResNet-50.caffemodel |----ResNet-50.labels |----ResNet-50.means.binaryproto |----ResNet-50.prototxt |----ResNet-50.test.jpg |----dependency/ |----include/ |----lib/
  • RSA算法是一种最广为使用的“非对称加密算法”,一般公钥/私钥长度越长,安全性就越好,计算也越复杂。百度智能云https改造中应用了RSA 2048加解密算法,针对高计算复杂度的RSA解密任务,我们运用FPGA上的并行计算资源和定制化的数据通路,提供了高达45000QPS的解密能力
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部