目前处于AI大爆发时期,异构计算的选择主要在FPGA和GPU之间。尽管目前异构计算使用最多的是利用GPU来加速,FPGA作为一种高性能、低功耗的可编程芯片,在处理海量数据时,FPGA计算效率更高,优势更为突出,尤其在大量服务器部署时,隐形的运营成本会得到显著降低。本文来自CTAccel的研发总监周小鹏在LiveVideoStackCon2019 北京站上的分享。
文 / 周小鹏
整理 / LiveVideoStack
大家好,我是来自CTAccel的研发负责人周小鹏,我分享的题目是《基于FPGA的异构计算在多媒体中的应用》。FPGA从1984年被发明到现在已经35年了,现在的FPGA有足够的规模去做大规模计算。我们团队主要是研究它能否解决多媒体领域中的现有问题。

1. 团队介绍

联捷计算科技成立于2016年,英文名CTAccel。实际上我们团队从2014年就开始研究这项技术了,主要致力于以FPGA为载体的数据中心的异构计算,让它能帮助我们解决一些实际的问题。

2. 主题

今天分享的主题包括两点,一个是基于FPGA的异构计算的一般性问题,另一个就是我们团队(CTAccel)基于FPGA的异构计算方案。
2.1 基于FPGA的异构计算的一般性问题
对于FPGA在异构计算的一般性问题,结合我们的认识,从以下五个方面来说。
2.1.1 当前处理的困境
上图左边描述的是2016年AMD发布的一个报告。Intel宣布停止CPU的Tick-Tock发展模式,Moore定律的失效意味着CPU性能的提升慢于之前18个月为一周期的速度。但是数据计算需求增长却越来越快,对计算的需求越来越多。这些需求包括多媒体转码,搜索计算,加解密以及矩阵的计算。由于计算需求越来越大,就需要新的底层硬件来支持大规模计算。
上图描述的是网络和存储本身的技术发展,数据中心内部网络速度越来越快,从最早的1Gbps到现在100Gbps;存储速度也从机械硬盘的0.7MB/s加快到固态驱动器的1GB。但是CPU处理IO的速度没有那么快,例如AES256加密和SHA-1签名,如果是使用单核CPU处理,处理能力只有100MB/s,与存储速度之间存在很大的差距。从网络的角度来讲,如今处理网路协议所需要的CPU核数也是很大的,CPU处理速度是不能匹配网络处理速度的。如果从硬件方面解决此问题,FPGA可以提供一些帮助。
2.1.2 FPGA及其历史
传统的FPGA概念,就像图中所示。实际是把电路板上一些小的门电路,安装在芯片上通过改变连线来改变它的功能,叫做现场可编程门列阵。它其实是一个半定制化专用集成电路,里面已经有一些基本门电路,也会有一些触发器,以及互联资源。通过改变这些互连资源对门电路、触发器的连接方式来改变功能,这样就可能实现例如数字滤波器、矩阵变换等基本功能。现在的FPGA相较之前已经发生了巨大的改变。之前只有门电路、触发器,互连资源,但是现在里面已经包含了比较高层一点的功能模块,例如增加dsp、bram,甚至包括ddr控制器、pcie控制器、serdes、光口,以及arm、powerpc、gpu等系统级的单元。
在30多年的时间里,FPGA大致有四个发展阶段,从1984年赛灵思发明FPGA到1991年这段时间的主要发展体现是芯片晶体管数目的逐渐增多,主要解决的问题是如何扩大电路的规模。从1992年到1999年是FPGA的扩张阶段,这一阶段依然在探求扩大电路规模的方法。由于当时芯片规模依然较小,为实现复杂功能,这一阶段解决的另一个问题就是通过软件进行芯片间的功能分治。第三阶段是从2000年到2007年,当时FPGA的规模已经相对较大,这一阶段主要解决的是数字信号处理方面的问题,比如软件对互连资源的布局布线,如何充分利用晶体管等问题。从2008年开始进入到FPGA的转型阶段,这一阶段不仅包含可编程逻辑,还包括Ethernet MAC和PCI Express以及一些高速接口、微处理器,甚至包括GPU、浮点计算器单元。FPGA在朝着系统化方向发展,规模越来越大,为计算机提供最底层的技术基础。在不断发展的过程中,FPGA的功耗越来越小,容量越来越大,速度也越来越快,这也是它现在可以用于数据中心的技术基础。
2.1.3 基于FPGA的异构计算的特点
CPU、GPU都基本采用冯诺依曼架构,它的组成部件包括指令存储、数据存储、译码逻辑、算数逻辑单元以及共享内存。它的工作原理是将取得的指令和数据进行指令译码,然后执行返回结果。
CPU、GPU都是典型的单指令多数据的模型。CPU中ALU数量有限,可以支持复杂的控制逻辑,对应的缓存容量也较大。在GPU中,算术逻辑单元较多,但是可完成的控制种类较少,相应缓存容量也有限。两者解决的问题不同,但他们的最小执行单元都是指令。编程的本质就是将算法和业务逻辑拆解为顺序执行的指令的过程。
对于FPGA来讲,它是自由指令架构,本身只提供部件池。组成部件包括CLB(可编程逻辑单元)、BRAM、DSP单元、PCIE控制器、时钟单元、高速收发器等。可以通过设计,利用这些部件实现不同功能。工作流程也可根据应用定制。从计算的角度来讲,它可以支持单操作多数据,因为它不需要译码,故也不存在指令的概念。同时它也支持单数据多操作,可对同一数据多次操作。FPGA的最小执行单位是寄存器和算术逻辑单元,FPGA编程的本质是将算法和业务逻辑映射到FPGA基本部件,这与CPU也是不同的。
基于FPGA的计算过程,相比于CPU/GPU的优点:
1)延时低稳定性强
FPGA可定制单操作多数据、单数据多操作以及混合模型,可形成更细粒度的操作、流水和并行。并且由于数据流动路径固定,处理延迟也是固定的。因此,它会有低延时强稳定的优点。
2)功耗低
晶体管全部用于算法和业务处理,冗余少,利用率更高。
3)并发度高
对于FPGA,芯片资源是足够控制并行和顺序执行之间平衡的。在FPGA的应用单元和CPU、GPU有效率利用核数相当时,由于延时更低,所以FPGA并发度更高。
4)IO资源丰富
FPGA有高速接口,甚至包括光口、以太网接口,可以支撑靠近接口的计算。
下面将以最基本的编解码原理来说明FPGA适合图像编码的原因。上图描述了视频编码的过程。首先将视频划分为不同编码单元,然后对每个单元进行编码,先经过变换然后进行量化,之后进行反量化反变化,得到重构的数据再和原数据进行预测编码,对量化的残差数据进行熵编码。功能单元的划分和每个单元的处理是串行的过程;而处理过程的预测、变换、量化都是矩阵乘的过程,又是并行过程;熵编码也是串行的。整体过程是串行并行相结合的,CPU、GPU难以支撑这个过程,FPGA中可由不同电路完成。
从实测数据来看,上图柱状图展示了JPEG图压缩到一定大小时,FPGA和GPU方式下QPS值的大小。可以看出,无论在何种情况下,FPGA相对来说是有一定优势的。这种优势来源于它的底层技术架构。
2.1.4 FPGA异构计算的系统级问题
FPGA可以带来一定优势,但仍然存在许多需要解决的问题。在单个功能上,它有很大的优势,但是从系统应用来看,这种优势会大打折扣,因为它有很多系统限制条件。
  1. 算法和业务逻辑在FPGA映射上还需进行优化以充分利用深度流水线与并行。

  2. 加速卡上的资源配比仍存在问题,做图像视频编解码常需要使用外部缓存,而缓存的容量、带宽等是需要与之匹配的,数据传输的延迟也会对性能产生影响。同时部分算法需要使用非常大容量的片内块缓存。

  3. FPGA在系统级别的资源配比,Host调度上也会存在一定的效率问题。我们如何在用户无感知的情况下,对系统状态进行监控,这是我们在软件侧要解决的问题。为适应部署需求,还需要解决虚拟机支持和docker部署方面的问题。

从产品侧来讲,系统在FPGA异构卡、网卡、ssd与其他异构平台之间能否P2P传递数据,让系统更有效也是需要考虑的。FPGA与Host之间能否有效传递数据也是我们研究的一部分,并且也尝试了不同的技术。
2.1.5 FPGA异构计算的开发流程和方法学
上图展示了异构系统开发的流程。左图展现了传统FPGA的开发流程,可以看出和芯片的开发流程是相像的,由于是硬件开发,所以需要代码转换的过程,还需要分析电路是否满足要求,要做仿真、测试、优化,最后才能得到满足要求的设计进行板级测试。为了满足数据中心的快速落地的需求,FPGA需要用到更高层的工具和编程语言。
除了工具、开发流程,平台也是一个方面。在我们的开发中,有固定的hdk和sdk,会提供对应的接口操作基本驱动、hdk里的监控接口。真正的设计在于功能的设计。
从产品的角度讲,我们主要考虑数据可用、接口可用、系统稳定易用、迁移成本低、性能这五个维度。应用要能提供足够多的接口对接原有的软件生态。系统稳定是最基本的,能否一键升级、一键部署也是需要考虑的。另外迁移成本包括修改接口对用户流程的影响,端对端整体分析才能确定系统性能的提升量。从性能指标来看,,除了吞吐,还有延时、任务工作时长、CPU利用率等。当单卡无法实现功能时,多张卡之间的调度、功能切分,以及使用多卡时性能是否能线性增长都是需要考量的。
2.2 CTAccel基于FPGA的异构计算方案
接下来,我讲一下针对以上谈到的一般问题,我们团队所做的方案。虽然是具体应用,但是它不会违背我们之前分析的问题。具体从目前主要产品及产品形态、多媒体图像的处理,和视频视频以及目前已落地应用的情况四个方面分享。
2.2.1 CTAccel主要产品和产品形态
目前,CTAccel主要有两款产品。一个用于图像处理,一个用于视频。产品设计的主要目的是为了提升计算性能,提高用户体验。节省客户投资也是我们产品的优点之一。
我们的产品有两种形态,一种是基于硬件卡形态的。这种主要集中于私有部署,用于客户有自己的数据中心或者自己的服务器的情况。客户可以自行购买硬件卡插入服务器,将我们的软件安装在卡上就可以使用我们的产品。另一种是基于公有云的。我们的产品可以支持不同的云平台。
2.2.2 CTAccel的图像处理方案
图像处理主要有三个功能,分别是解码器,像素处理,编码器。像素处理上,我们主要做缩放、旋转、裁剪、水印、去噪等处理。功能可以串行调用,也可以顺序调用。编码器目前可支持JPEG,Webp,HEIC。这些都是有损压缩,相互之间可以通过编解码互转。除最基本的以外,JPEG目前还可以实现渐进式转码。Lepton是专门用于无损压缩的,它可对JPEG格式的图片再一次压缩,达到更好的压缩效果,主要用于存储。软件栈可以支持OpenCV、ImageMagick、GraphicsMagick、Lepton以及ffmpeg,我们目前还在设计支持restful web API的软件。我们也做了一个图片处理服务的设计供大家参考。最右侧的图展现了我们产品的分布,包括AFU和Service&Driver以及OpenCV等接口。客户可以直接调用外面的接口,如果需要WEB接口的话,我们也可以再封装一层。
我们做了很多的功能,也聚焦了几个主要应用领域。其中一个是AI预处理。在GPU处理器前,需要对图像进行解码,压缩到规定尺寸,还有一些归一化处理。针对这个问题,我们希望能对图像进行流量清洗处理,直接得到可以被GPU处理的图片。图像转码的应用,即各种格式图像进行互转。图像存储主要用Lepton格式。
这张图展现了我们产品优点体现在哪里。通过计算加速,整个链路延时会缩短。对于计算资源消耗大的问题,通过优化可以增大系统的吞吐量。可以看出,存储上的优点是明显的,资源压缩到越小,越节省空间。
通过使用FPGA卡预处理,可以更好的与GPU匹配,更好的发挥GPU性能。下面是一些具体的案例及其性能。
  • JPEG转码WebP案例

  • JPEG与Lepton互转案例

无损存储的性能
  • JPEG转码JPEG案例

  • Heic转码JPEG案例

  • AI互转匹配情况

2.2.3 CTAccel的视频处理方案
视频处理方案包括H264,H265的编解码处理以及一些像素处理。软件支持ffmpeg和gstreamer。
2.2.4 落地应用
1)手机落地应用
2)O2O平台落地应用
3)社交网站落地应用
4)直播平台落地应用(测试中)

赛灵思视频加速技术研讨会

假如您想了解更多关于FPGA的硬件加速特性,以及在视频、图片编码与转码以及AI计算方面的技术探索与实践。12月13日·深圳,LiveVideoStack联合赛灵思,邀请CTAccel、Aupera、DeePoly等4位技术专家共同打造【赛灵思视频加速技术】专题,您可以近距离与众多专家深入探讨,还能现场体验产品Demo

点击【阅读原文】进入报名页面

基于FPGA的异构计算在多媒体中的应用相关推荐

  1. 基于FPGA的扩频系统设计(中)

    今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,中篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...

  2. 基于FPGA的DDS在Vivado中仿真以及在ZYNQ7020上板的实现(2)

    接上一节,从仿真文件的编写开始 (三)仿真文件testbench 1)首先先点击add source 2)建立 simulation source文件 3)点击create file 4)给文件命名 ...

  3. 基于FPGA的DDS在Vivado中仿真以及在ZYNQ7020上板的实现(1)

    本系列文章详细介绍了DDS在Vivado中的仿真实现.综合.布线.生成bit流以及上板的过程. (一)初始配置 1)先下载Vivado软件,本人使用的是2019.1版本的Vivado,使用其他版本Vi ...

  4. 基于FPGA的扩频系统设计(上)

    今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...

  5. 基于FPGA的双盘NVMe SSD的RAID0模式读写实现及测试

    文章目录 项目背景 RAID模式 实现架构设计 独立RC主控,独立控制器架构 独立RC主控,共享控制器架构 共享RC主控及控制器架构 架构实现 测试验证 准确性测试 数据写入测试 数据读出测试 个人的 ...

  6. 基于FPGA异构计算快速构建高性能图像处理解决方案

    FPGA与CPU相比进一步强化了算力,尤其适合各类并行化计算:而与GPU相比,其更细粒度及灵活的并行化及流水线控制天然的对复杂算法有更强的适应性,能够充分发挥出算力优势,从而带来计算效率的提升.针对数 ...

  7. 基于FPGA的以太网控制器(MAC)设计(中)

    今天给大侠带来基于FPGA的以太网控制器(MAC)设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,以太网控制器(MAC)程序的实现.话不多说,上货. 导读 当前,互联网已经极大地改变了我们的生产和生 ...

  8. 基于FPGA的单目内窥镜定位系统设计(中)

    今天给大侠带来基于FPGA的单目内窥镜定位系统设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,话不多说,上货. 导读 随着现科技的发展和社会的进步,信息科技迅速发展,我们可从互联网.电台等媒体获取大 ...

  9. 基于FPGA的VGA/LCD显示控制器设计(中)

    今天给大侠带来基于FPGA的VGA/LCD显示控制器设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,VGA 显示原理以及VGA/LCD 显示控制器的基本框架,话不多说,上货. 之前也有图像处理以及V ...

最新文章

  1. javaScript的调试(二)
  2. 卡壳了~~~ 解决了~~~My Site创建成功了.....
  3. 在.NET中编辑器在用伪静态后不能正常使用的解决方法
  4. MFC对话框控件访问的七种方式
  5. C. Little Girl and Maximum Sum【差分 / 贪心】
  6. Cacti 每日导出图形及流量报表 [未完成]
  7. boost::cuthill_mckee_ordering用法的测试程序
  8. 最新Django2.0.1在线教育零基础到上线教程(九)
  9. TCP 协议的三次握手、四次分手
  10. 车牌识别算法库EasyPR的编译实战
  11. c++项目实例_.NET Core CLI来启动应用程序的多个实例
  12. 楼梯计算机方法,怎么计算楼梯踏步方法是什么
  13. 从支点网CEO李岩经历中,我读到的一些东西
  14. 甘肃康县乡村“蝶变”:北方山沟引来“南方媳妇”
  15. 存储及可编程是未来物联网芯片发展的关键
  16. 终于有人来盘一盘安卓ASO技巧了,安卓市场aso优化技巧
  17. Infragistsitcs NetAdvantage WebCombo 控件
  18. P1149 火柴棒等式
  19. 变身“流程公司” 什么工作流合适
  20. CAS单点登录(十一)——单点退出

热门文章

  1. 分析工厂模式中的问题并改造
  2. 短期目标[Till 2011-08-05]
  3. DataGrid 功能实现收集(一)
  4. 阿里数据库内核月报:2015年11月
  5. Validate + Boostrap tooltip 表单验证示例
  6. android 应用退到后台,类似最小化
  7. PLSQL_性能优化系列20_Oracle Result Cash结果缓存
  8. JS高效关键字搜索---转
  9. CodeForces - 1363E Tree Shuffling(树上贪心)
  10. android 固定大小,android 固定大小取图片缩略图