基于FPGA的异构计算在多媒体中的应用

简介: 目前处于AI大爆发时期,异构计算的选择主要在FPGA和GPU之间。 尽管目前异构计算使用最多的是利用GPU来加速,FPGA作为一种高性能、低功耗的可编程芯片,在处理海量数据时,FPGA计算效率更高,优势更为突出,尤其在大量服务器部署时,隐形的运营成本会得到显著降低。 本文来自CTAccel的研发总监周小鹏在LiveVideoStackCon2019 北京站上的分享。

文 / 周小鹏

整理 / LiveVideoStack

大家好,我是来自CTAccel的研发负责人周小鹏,我分享的题目是《基于FPGA的异构计算在多媒体中的应用》。 FPGA从1984年被发明到现在已经35年了,现在的FPGA有足够的规模去做大规模计算。 我们团队主要是研究它能否解决多媒体领域中的现有问题。


1. 团队介绍

image.png

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


2. 主题

image.png

今天分享的主题包括两点,一个是基于FPGA的异构计算的一般性问题,另一个就是我们团队(CTAccel)基于FPGA的异构计算方案。


2.1 基于FPGA的异构计算的一般性问题

image.png

对于FPGA在异构计算的一般性问题,结合我们的认识,从以下五个方面来说。


2.1.1 当前处理的困境

image.png

上图左边描述的是2016年AMD发布的一个报告。 Intel宣布停止CPU的Tick-Tock发展模式,Moore定律的失效意味着CPU性能的提升慢于之前18个月为一周期的速度。 但是数据计算需求增长却越来越快,对计算的需求越来越多。 这些需求包括多媒体转码,搜索计算,加解密以及矩阵的计算。 由于计算需求越来越大,就需要新的底层硬件来支持大规模计算。

image.png

上图描述的是网络和存储本身的技术发展,数据中心内部网络速度越来越快,从最早的1Gbps到现在100Gbps; 存储速度也从机械硬盘的0.7MB/s加快到固态驱动器的1GB。 但是CPU处理IO的速度没有那么快,例如AES256加密和SHA-1签名,如果是使用单核CPU处理,处理能力只有100MB/s,与存储速度之间存在很大的差距。 从网络的角度来讲,如今处理网路协议所需要的CPU核数也是很大的,CPU处理速度是不能匹配网络处理速度的。 如果从硬件方面解决此问题,FPGA可以提供一些帮助。


2.1.2 FPGA及其历史

image.png

传统的FPGA概念,就像图中所示。 实际是把电路板上一些小的门电路,安装在芯片上通过改变连线来改变它的功能,叫做现场可编程门列阵。 它其实是一个半定制化专用集成电路,里面已经有一些基本门电路,也会有一些触发器,以及互联资源。 通过改变这些互连资源对门电路、触发器的连接方式来改变功能,这样就可能实现例如数字滤波器、矩阵变换等基本功能。 现在的FPGA相较之前已经发生了巨大的改变。 之前只有门电路、触发器,互连资源,但是现在里面已经包含了比较高层一点的功能模块,例如增加dsp、bram,甚至包括ddr控制器、pcie控制器、serdes、光口,以及arm、powerpc、gpu等系统级的单元。

image.png

在30多年的时间里,FPGA大致有四个发展阶段,从1984年赛灵思发明FPGA到1991年这段时间的主要发展体现是芯片晶体管数目的逐渐增多,主要解决的问题是如何扩大电路的规模。 从1992年到1999年是FPGA的扩张阶段,这一阶段依然在探求扩大电路规模的方法。 由于当时芯片规模依然较小,为实现复杂功能,这一阶段解决的另一个问题就是通过软件进行芯片间的功能分治。 第三阶段是从2000年到2007年,当时FPGA的规模已经相对较大,这一阶段主要解决的是数字信号处理方面的问题,比如软件对互连资源的布局布线,如何充分利用晶体管等问题。 从2008年开始进入到FPGA的转型阶段,这一阶段不仅包含可编程逻辑,还包括Ethernet MAC和PCI Express以及一些高速接口、微处理器,甚至包括GPU、浮点计算器单元。 FPGA在朝着系统化方向发展,规模越来越大,为计算机提供最底层的技术基础。 在不断发展的过程中,FPGA的功耗越来越小,容量越来越大,速度也越来越快,这也是它现在可以用于数据中心的技术基础。


2.1.3 基于FPGA的异构计算的特点

image.png

CPU、GPU都基本采用冯诺依曼架构,它的组成部件包括指令存储、数据存储、译码逻辑、算数逻辑单元以及共享内存。 它的工作原理是将取得的指令和数据进行指令译码,然后执行返回结果。


CPU、GPU都是典型的单指令多数据的模型。 CPU中ALU数量有限,可以支持复杂的控制逻辑,对应的缓存容量也较大。 在GPU中,算术逻辑单元较多,但是可完成的控制种类较少,相应缓存容量也有限。 两者解决的问题不同,但他们的最小执行单元都是指令。 编程的本质就是将算法和业务逻辑拆解为顺序执行的指令的过程。

image.png

对于FPGA来讲,它是自由指令架构,本身只提供部件池。 组成部件包括CLB(可编程逻辑单元)、BRAM、DSP单元、PCIE控制器、时钟单元、高速收发器等。 可以通过设计,利用这些部件实现不同功能。 工作流程也可根据应用定制。 从计算的角度来讲,它可以支持单操作多数据,因为它不需要译码,故也不存在指令的概念。 同时它也支持单数据多操作,可对同一数据多次操作。 FPGA的最小执行单位是寄存器和算术逻辑单元,FPGA编程的本质是将算法和业务逻辑映射到FPGA基本部件,这与CPU也是不同的。

image.png

基于FPGA的计算过程,相比于CPU/GPU的优点:


1)延时低稳定性强


FPGA可定制单操作多数据、单数据多操作以及混合模型,可形成更细粒度的操作、流水和并行。 并且由于数据流动路径固定,处理延迟也是固定的。 因此,它会有低延时强稳定的优点。


2)功耗低


晶体管全部用于算法和业务处理,冗余少,利用率更高。


3)并发度高


对于FPGA,芯片资源是足够控制并行和顺序执行之间平衡的。 在FPGA的应用单元和CPU、GPU有效率利用核数相当时,由于延时更低,所以FPGA并发度更高。


4)IO资源丰富


FPGA有高速接口,甚至包括光口、以太网接口,可以支撑靠近接口的计算。

image.png

下面将以最基本的编解码原理来说明FPGA适合图像编码的原因。 上图描述了视频编码的过程。 首先将视频划分为不同编码单元,然后对每个单元进行编码,先经过变换然后进行量化,之后进行反量化反变化,得到重构的数据再和原数据进行预测编码,对量化的残差数据进行熵编码。 功能单元的划分和每个单元的处理是串行的过程; 而处理过程的预测、变换、量化都是矩阵乘的过程,又是并行过程; 熵编码也是串行的。 整体过程是串行并行相结合的,CPU、GPU难以支撑这个过程,FPGA中可由不同电路完成。

image.png

从实测数据来看,上图柱状图展示了JPEG图压缩到一定大小时,FPGA和GPU方式下QPS值的大小。 可以看出,无论在何种情况下,FPGA相对来说是有一定优势的。 这种优势来源于它的底层技术架构。


2.1.4 FPGA异构计算的系统级问题

image.png

FPGA可以带来一定优势,但仍然存在许多需要解决的问题。 在单个功能上,它有很大的优势,但是从系统应用来看,这种优势会大打折扣,因为它有很多系统限制条件。


  1. 算法和业务逻辑在FPGA映射上还需进行优化以充分利用深度流水线与并行。


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


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


从产品侧来讲,系统在FPGA异构卡、网卡、ssd与其他异构平台之间能否P2P传递数据,让系统更有效也是需要考虑的。 FPGA与Host之间能否有效传递数据也是我们研究的一部分,并且也尝试了不同的技术。


2.1.5 FPGA异构计算的开发流程和方法学

image.png

上图展示了异构系统开发的流程。 左图展现了传统FPGA的开发流程,可以看出和芯片的开发流程是相像的,由于是硬件开发,所以需要代码转换的过程,还需要分析电路是否满足要求,要做仿真、测试、优化,最后才能得到满足要求的设计进行板级测试。 为了满足数据中心的快速落地的需求,FPGA需要用到更高层的工具和编程语言。

image.png

除了工具、开发流程,平台也是一个方面。 在我们的开发中,有固定的hdk和sdk,会提供对应的接口操作基本驱动、hdk里的监控接口。 真正的设计在于功能的设计。

从产品的角度讲,我们主要考虑数据可用、接口可用、系统稳定易用、迁移成本低、性能这五个维度。 应用要能提供足够多的接口对接原有的软件生态。 系统稳定是最基本的,能否一键升级、一键部署也是需要考虑的。 另外迁移成本包括修改接口对用户流程的影响,端对端整体分析才能确定系统性能的提升量。 从性能指标来看,,除了吞吐,还有延时、任务工作时长、CPU利用率等。 当单卡无法实现功能时,多张卡之间的调度、功能切分,以及使用多卡时性能是否能线性增长都是需要考量的。


2.2 CTAccel基于FPGA的异构计算方案

image.png

接下来,我讲一下针对以上谈到的一般问题,我们团队所做的方案。 虽然是具体应用,但是它不会违背我们之前分析的问题。 具体从目前主要产品及产品形态、多媒体图像的处理,和视频视频以及目前已落地应用的情况四个方面分享。


2.2.1 CTAccel主要产品和产品形态

image.png

目前,CTAccel主要有两款产品。 一个用于图像处理,一个用于视频。 产品设计的主要目的是为了提升计算性能,提高用户体验。 节省客户投资也是我们产品的优点之一。

image.png

我们的产品有两种形态,一种是基于硬件卡形态的。 这种主要集中于私有部署,用于客户有自己的数据中心或者自己的服务器的情况。 客户可以自行购买硬件卡插入服务器,将我们的软件安装在卡上就可以使用我们的产品。 另一种是基于公有云的。 我们的产品可以支持不同的云平台。


2.2.2 CTAccel的图像处理方案

image.png

图像处理主要有三个功能,分别是解码器,像素处理,编码器。 像素处理上,我们主要做缩放、旋转、裁剪、水印、去噪等处理。 功能可以串行调用,也可以顺序调用。 编码器目前可支持JPEG,Webp,HEIC。 这些都是有损压缩,相互之间可以通过编解码互转。 除最基本的以外,JPEG目前还可以实现渐进式转码。 Lepton是专门用于无损压缩的,它可对JPEG格式的图片再一次压缩,达到更好的压缩效果,主要用于存储。 软件栈可以支持OpenCV、ImageMagick、GraphicsMagick、Lepton以及ffmpeg,我们目前还在设计支持restful web API的软件。 我们也做了一个图片处理服务的设计供大家参考。 最右侧的图展现了我们产品的分布,包括AFU和Service&Driver以及OpenCV等接口。 客户可以直接调用外面的接口,如果需要WEB接口的话,我们也可以再封装一层。

image.png

我们做了很多的功能,也聚焦了几个主要应用领域。 其中一个是AI预处理。 在GPU处理器前,需要对图像进行解码,压缩到规定尺寸,还有一些归一化处理。 针对这个问题,我们希望能对图像进行流量清洗处理,直接得到可以被GPU处理的图片。 图像转码的应用,即各种格式图像进行互转。 图像存储主要用Lepton格式。

image.png

这张图展现了我们产品优点体现在哪里。 通过计算加速,整个链路延时会缩短。 对于计算资源消耗大的问题,通过优化可以增大系统的吞吐量。 可以看出,存储上的优点是明显的,资源压缩到越小,越节省空间。

image.png

通过使用FPGA卡预处理,可以更好的与GPU匹配,更好的发挥GPU性能。 下面是一些具体的案例及其性能。

 

  • JPEG转码WebP案例

image.png

image.png


  • JPEG与Lepton互转案例

image.png

image.png


  • 无损存储的性能

image.png


  • JPEG转码JPEG案例

image.png

image.png


  • Heic转码JPEG案例

image.png

image.png

 image.png


  • AI互转匹配情况

image.png


2.2.3 CTAccel的视频处理方案

image.png

视频处理方案包括H264,H265的编解码处理以及一些像素处理。 软件支持ffmpeg和gstreamer。

image.png

image.png

image.png

image.png


2.2.4 落地应用


1)手机落地应用

image.png


2)O2O平台落地应用

image.png


3)社交网站落地应用

image.png


4)直播平台落地应用(测试中)

image.png

 

————————————————

版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/103146403


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云视频云@凡科快图.png


相关文章
|
7月前
|
存储 算法 数据处理
FPGA:可编程逻辑设备的领军者及其在数字信号处理中的应用
FPGA:可编程逻辑设备的领军者及其在数字信号处理中的应用
119 2
|
7月前
|
存储 算法 测试技术
FPGA(现场可编程门阵列)技术概述及其应用实例
FPGA(现场可编程门阵列)技术概述及其应用实例
|
7月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
7月前
|
算法 计算机视觉 异构计算
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
|
2月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
6月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
57 4
|
7月前
|
异构计算 机器学习/深度学习 算法
探索FPGA在硬件加速中的应用
【5月更文挑战第31天】本文探讨了FPGA在硬件加速中的应用,阐述了FPGA基于可编程逻辑单元和连接资源实现高效并行处理的优势,如高性能、低功耗、可重构性和灵活性。FPGA广泛用于图像处理、数据压缩、深度学习加速和网络安全等领域。然而,FPGA也面临功耗、散热及开发复杂度的挑战。未来,FPGA将通过优化设计和工具,与CPU、GPU等协同工作,助力异构计算和新兴技术发展。
|
7月前
|
传感器 算法 机器人
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
针对实用化人形机器人的控制系统,以深入应用FPGA技术为指导思想做了一个框架设计,提供一个具象化的设计实例、参考技术方案,协助各研发团队及相关决策者了解这一技术思路的价值。 进而,笔者希望读者将这个框架设计与《在实用化人形机器人研发流程中深入应用FPGA技术的流程图》结合起来进行分析、思考,希望: 进一步降低将FPGA深入应用于人形机器人在纯粹技术维度上的门槛; 助力更多正在人形机器人领域参与竞争的团队 -- 及时做出实质性决策,及时将更多资源分配到深入应用FPGA技术这一竞争维度。
314 4
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
|
7月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
7月前
|
存储 弹性计算 Serverless
什么是阿里云FPGA云服务器?FPGA云服务器产品优势及应用场景介绍
FPGA云服务器是阿里云提供的实例规格,融合现场可编程门阵列的低延迟硬件加速与弹性资源。FaaS平台简化了FPGA开发,提供统一硬件、开发环境和丰富的IP生态。特性包括硬件虚拟化、联合仿真和动态互联配置。产品计费与ECS一致,支持多种计费模式。优势在于分钟级交付、高性能加速、经济性价比和设计复用。应用广泛,如视频转码、人工智能、基因测序等。FPGA云服务器通过FPGA镜像、OSS服务等工具进行管理。
什么是阿里云FPGA云服务器?FPGA云服务器产品优势及应用场景介绍

热门文章

最新文章