背景
随着异构计算越来越火,FPGA加速卡在诸多领域的应用也越来越多。
FPGA加速卡与GPU加速卡加速原理完全不同。
GPU本质上是依靠海量的并行运算单元,提升整体的吞吐量,来吃尽内存带宽。
FPGA是通用的门阵列,按照数据结构和运算特点搭建专用运算单元,能够以更低功耗和时延实现高吞吐。
上一篇我们已经完成了环境搭建,本篇将主要介绍项目结构和工作原理
整体架构
使用GPU加速时,CPU发送数据和指令到GPU即可,无需考虑执行指令的运算核的设计,FPGA芯片运算核是需要开发的。如下图所示:主机通过PCIe连接FPGA加速卡。因此在Host端和Device端都有相应的代码。
传统的FPGA开发方式使用HDL语言,无法动态的修改FPGA内部的功能。FPGA加速的核心就是运算核更贴近数据,当数据结构或是处理流程变化,就需要修改运算核结构。如果每次替换运算核需要让服务器断电显然不现实,因此行业的普遍做法就是将芯片内分区,分为不可修改的静态区和可以修改的动态区。静态区内就是DMA、PCIe、DDR等基础的功能核,用户的运算核则部署到动态区中,通过AXI接口连接。
xilinx提供了Host端和Device端的数据交互,我们需要解决的Host的程序和Device的Kernel。
如下图所示,项目构建分为3个部分。Host端的程序、FPGA的Kernel、以及衔接Kernel和FPGA内部的Link。由于有link的存在,消除了一部分FPGA芯片规格差异,降低了Kernel的开发难度也可以在一定程度上与硬件解耦。
创建第一个工程
官方推荐的第一个DEMO工程就是向量加法,方便初学者快速掌握项目结构和运行原理。
创建工程首先需平台文件,我这里使用的是Alveo U50。常用的还有Alveo U200 , Alveo U50
随便取个项目名字文章来源:https://www.toymoban.com/news/detail-452532.html
导入官方提供的例程,推荐初学者选择这个,包括了HLS、OpenCL的使用以及任务并行化的使用。文章来源地址https://www.toymoban.com/news/detail-452532.html
到了这里,关于Xilinx Alveo系列FPGA加速卡软件开发入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!