BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

FPGA掌控计算性能

| 作者 Rob Taylor 关注 0 他的粉丝 ,译者 马卓奇 关注 1 他的粉丝 发布于 2017年12月4日. 估计阅读时间: 9 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

本文要点

  • FPGA能够满足全球范围以指数式增长的人工智能和大数据的性能需求。
  • FPGA通过同时运行大量的进程和优化管理数据流来提高处理速度,并降低硬件成本。
  • 诸如亚马逊F1实例的开发正在消除成本和可用性的障碍,使所有企业都能访问FPGA。
  • FPGA对于任何需要对大量数据进行低延迟处理的项目(包括推理和深度神经网络)都是理想的。
  • 随着FPGA的编程变得更加简单、基于云,并且使用更方便的语言,如GO,其采用率将迅速上升。

由于人工智能和深度学习技术的不断升级,数据的创建和消耗量正在急剧增长。据麦肯锡的Nicolaus Henke估计,如今90%的可访问数据两年前还不存在,而IDC预测,到2020年,全球大数据投资将超过2030亿美元,所有这一切都对下一代计算芯片提出了指数级性能要求。

传统上一直通过缩减硅的工艺来达到提高性能的要求,但长期以来,由于Dennard Scaling规律(单位面积晶体管数不断增加而功耗保持不变),晶体管体积的缩小并没有带来速度的指数增长。

多核扩展和虚拟化有助于缓解这一点,但是由于实际的功率限制,这个工艺现在已经停滞不前了。

因此,英特尔预计未来几代处理器的性能将只有边际收益——“和往常一样”已经无法满足对计算能力的指数需求。

随着CPU只提供边际效益,企业必须寻找能满足计算性能的替代品。

最可行的解决方案之一是现场可编程门阵列(FPGA),它最初是为开发新硬件而设计的。

那么如何使用FPGA来提升计算性能呢?自八十年代中期投入使用以来,FPGA实现了芯片上的可编程电路。

最初FPGA是用来模拟芯片,并确保设计的可行性,现在由于它们能够有效地处理大量的数据,软件工程师对它们越来越感兴趣。

FPGA像GPU或CPU一样是可编程的,但它主要针对并行、低延迟及高吞吐量的问题,比如推理或深度神经网络。

是什么让FPGA与众不同?

FPGA有许多优点,使它们对软件工程师很有吸引力,其中最显著的一点就是速度。与现代CPU相比,FPGA以较慢的时钟速度运行,它们基本上是并行的,而不是运行顺序指令流,并且在并行操作之间优化数据流, 使得性能大幅增加。对于同样的代码,应用程序在FPGA上的运行速度可能比在传统CPU上运行要快100倍。

FPGA中包含数百万的可编程逻辑块,可以用来同时进行许多操作,具有并行性和并发性的优点。在编写代码时,工程师可以利用这种并行体系结构,将问题分解为结构良好、自包含的进程,并且可以并行运行。

例如,一个图像在非同时处理时,一个工作人员需要按像素来处理整个图像。但是当同样的图像在同时处理时,它被分解成不同的碎片,由不同的工作人员同时进行处理,然后再拼凑回一起。过程虽然变复杂了,但是速度快了许多,要求输入数据必须以最优的方式分解,并有效地分配给工作人员,然后将处理后的数据收集并重新组装,理想的情况是不堵塞工作管道。

在一个普通的CPU中,这一过程涉及到数据从内存中存入和取出,以及使进程对当前内存状态保持一致的复杂协议。即使是最大的英特尔CPU也只有18个内核。相比之下,在FPGA中,数据流可以被设计,因此它永远不会离开芯片。数以万计的并发进程可以同时存在,并且处理的时间得到了优化,因此吞吐量始终是最大的。

通过FPGA实现的处理速度是它们的第二大好处——成本。使用FPGA可以节省大量成本,它们提高速度的同时减少了硬件需求,因为一个FPGA可以执行许多服务器的任务。

最后,FPGA具有强大的下一代互联互通和增强的灵活性,他们可以利用最新的技术发展在器件上重新编程。一旦启动并运行,FPGA就可以随时改变以满足不断变化的业务需求。

采用FPGA的阻碍

尽管FPGA有许多好处,但它们也带来了许多挑战。获得FPGA的高初始成本、持续拥有的总成本和可用性问题一直阻止了FPGA的使用成为主流。

直到最近,FPGA的编程还需要硬件工程师能够用复杂、底层的硬件定义语言如Verilog进行编程和重新编程。

硬件工程是一门高度专业化的技能,需要多年的经验才能将知识付诸实践,每年只有很少的本科毕业生具备这种专门知识。硬件配置所需的专业芯片设计技能使FPGA成本一直很高,这也意味着创新是有限的和垂直的。

从历史上看,想要使用FPGA的企业需要获得自定义的硬件,建立专门的交付团队,并将其集成到现有的解决方案中。迄今为止,只有非常高价值的解决方案,例如军事项目和对冲基金,才有资源使用FPGA进行计算。

FPGA的未来

虽然FPGA在计算方面的实现相对较慢,但最近的创新正在稳步打破采用它的障碍。例如亚马逊网络服务集成FPGA 的F1实例,旨在构建定制的加速器处理计算密集型问题,外界对其发布产生了格外积极的响应。

FPGA厂商和平台提供商也可以使用不同语言进行编程,如OpenCL,并且FPGA的发展逐渐让软件工程师越来越容易在内嵌的基于云的环境下对FPGA进行编程。这可以使用更方便的语言,如GO,它对于来自不同背景和语言的用户来说更容易,更高效。微软已经表示,未来它的Azure云服务也将让开发者能够使用FPGA

这些发展将绕过重金难求的硬件专家或昂贵的开发预算等困难。尽管FPGA仍然十分昂贵,但与以前相比,FPGA的购置和所有权相关的成本不再是一个阻碍,因为FPGA现在可以按小时出租。

过去,FPGA只用来处理大量的数据,但价值回报已经足够高,足以证明投资的深度,或者用于非常复杂和具有挑战性的问题,例如军事或金融部门的问题。但随着FPGA变得越来越容易访问,该技术适用于任何速度和成本都很重要的项目。

通过FPGA进行的并行计算通过在单个服务器上同时运行大量计算过程,加快了对海量数据的处理和分析工作,意味着FPGA可用于图像和视频处理、在线语音识别、实时数据分析、广告技术以及软件定义网络(SDN)。

云FPGA正被用于许多研究方向。安全部门正在用它研究加密算法加速,电信公司用它研究网络和安全,航空公司用它处理卫星数据和应用机器学习算法,金融服务用它进行硬件加速和确定衍生产品组合的信用风险。

虽然这些使用案例令人兴奋,但它们仅仅是FPGA能力的冰山一角,发掘这项技术的全部潜力还需要时间。虽然在硬件世界中新产品层出不穷,但这些产品的创新往往是渐进式的。但是,随着平台的出现,并行设计和创新在硬件开发中成为可能,对所有企业,无论大或小,FPGA的使用将变得越来越便宜和现实,也会得到越来越多的应用。

业界对它的使用仍然停留在起步阶段,但随着使用量的增加,FPGA将让每个企业,无论是单人初创企业还是已经成立的跨国企业,都可以利用高性能并行计算来持续推动技术创新。

关于作者

Rob Taylor 是全球公认的技术领导者,自上世纪90年代以来一直活跃在软件创新和开源技术的前沿。他创建了两个价值百万英镑的软件公司,其中包括Codethink,它向诺基亚以及领先的汽车制造商和金融服务提供商交付软件基础设施解决方案,Rob希望建立一个产品市场,专注于在后Moore时代用工具来武装今天的开发者。在2015年,Reconfigure.io诞生,从位于英国和北美洲的办事处向全球客户提供服务。迄今为止,该公司已从英国、美国、瑞士、日本和荷兰的天使公司筹集了总计500000美元的种子投资。2017年4月,Reconfigure.io宣布成为亚马逊网络服务行业第一的F1实例的早期合作伙伴。

查看英文原文:FPGAs Supercharge Computational Performance

感谢冬雨对本文的审校。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT