写点什么

为何使用 FPGA 取代 CPU 和 GPU?

  • 2018-09-17
  • 本文字数:4362 字

    阅读完需:约 14 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

近日,英特尔收购了Altera 这一全球最大FPGA 制造商之一,为此支付167 亿美元,这也成了迄今为止英特尔最大手笔的一次收购。此外还有其他新闻表示,微软开始在自己的数据中心内使用FPGA 亚马逊也开始提供 FPGA 驱动的云服务。原本 FPGA 主要应用于电子工程领域,软件工程方面鲜少有人使用。这是否意味着 FPGA 已经开始迎来新的发展势头,成为 CPU 和 GPU 之外的另一个重要选择?

FPGA 到底是什么?

如果需要计算一些数据,最常用的方法是针对 CPU 或 GPU 这样基于指令的架构编写计算所需的软件。或者采取一种更麻烦的办法,专门针对特定的计算需求设计出一套专用电路,而非面向 CPU 和 GPU 这样的通用电路编写指令。

在设计出自己的电路后,还要设法实现所需设计,以便真正开始计算。此时可以考虑的一种方式,需要非常深厚的技术能力,你需要真正创建出能实现所需设计的电路(这种方式也叫做 ASIC,即专用集成电路)。

但此时还有一种更简单的方法,这也是本文的重点:使用现场可编程门阵列(Field Programmable Gate Array,FPGA)这种可重构的集成电路来实现自己的电路设计。我们可以将 FPGA 配置为自己需要的任何电路(只要 FPGA 能够容纳下)。这与很多程序员已经熟悉的,基于 CPU、GPU 指令的硬件编程方式有着很大差异。基于指令的硬件是通过软件配置的,而 FPGA 是通过指定所需硬件电路配置的。

FPGA 的优劣

为何要用 FPGA 来完成计算任务,而非选择更通用的 CPU 或 GPU?这种方式与 CPU 和 GPU 的差异主要体现在下列几方面:

  • 延迟:完成计算工作需要多久? → FPGA 在这方面更胜一筹。
  • 连接性:可以连接哪些输入 / 输出,带宽如何? → FPGA 可以直接连接至输入,提供非常高的带宽。
  • 工程成本:为了表达所需计算,需要付出多少精力? → FPGA 的工程成本通常远高于基于指令的架构,那么选择这种方式,肯定是因为其他方面的优势值得这样做。
  • 能效:计算过程能耗如何? → 这往往是 FPGA 最大的优势,但 FPGA 是否真的能胜过 CPU 或 GPU,这主要取决于具体应用。

下文将深入探讨上述这几个差异。

低延迟

如果需要为喷气式战斗机的无人驾驶功能计算数据,或开发高频算法交易引擎,低延迟肯定是必须的,此时需要让输入数据和得出结果之间的等待时间尽可能短。这些领域中 FPGA 远远胜过 CPU(或 GPU,因为 GPU 也需要通过 CPU 进行通信)。

FPGA 很容易可以实现 1 毫秒左右,甚至低于 1 毫秒的延迟,而就算表现最好的 CPU,其延迟通常也在 50 毫秒左右。更重要的是,FPGA 的延迟往往是确定的。能实现如此低的延迟,主要原因之一在于 FPGA 通常专用性更强:无需依赖通用操作系统,也无需通过通用总线(例如 USB 或 PCIe)通信。



(也许)正在天上飞翔的 FPGA

连接性

我们可以借助 FPGA 将任何数据源,例如网络接口或传感器直接连接到芯片。而 CPU 和 GPU 的做法与此大为不同,它们必须通过标准化总线(如 USB 或 PCIe)与数据源建立连接,并依赖操作系统向应用程序提供数据。与芯片直接连接可获得更高带宽(以及更低延迟)。

有些场合中,这样的高带宽是必不可少的,例如 LOFAR SKA 这样的射电天文学应用程序。此类应用场景需要在现场部署大量专用传感器,并产生海量数据。但为了提高整个系统的可管理性,必须大幅减少传感器生成的数据量,随后传递给应用程序进行处理。因此荷兰射电天文研究所 ASTRON 设计了 Uniboard²,这是一种包含四块 FPGA 芯片的基板,其每秒可处理的数据量甚至超过了位于阿姆斯特丹的互联网交换中心!



这些看似小巧的射电天线会生成海量数据。(图源: Svenlafe en.wikipedia

工程成本

在深入讨论能效问题前,先来看看 FPGA 一个最大的劣势:相比基于指令的架构(如 CPU 和 GPU),它们的编程 / 配置工作实在是太难了!一般来说,这些硬件电路是通过硬件描述语言(Hardware Description Languages,HDL)描述的,如 VHDL 和 Verilog,而软件则可通过各种编程语言,例如 Java、C 和 Python 编程而来。

从理论角度来看,硬件描述语言和编程语言都可用于表达任何计算(这两者都是图灵完备的),但工程方面的细节却存在极大差异。

该领域目前有一个新趋势:高级合成(High Level Synthesis,HLS),这是指使用诸如 OpenCL 或 C++ 等常规编程语言为 FPGA 编程,借此也可实现更高级的抽象。然而就算使用此类编程语言,FPGA 编程的困难程度依然要比为基于指令的系统编程高出一个数量级。

FPGA 编程最困难的部分在于漫长的编译过程。例如在使用英特尔 OpenCL 编译器的情况下,典型的 FPGA 程序编译通常需要 4-12 小时,这是因为要进行繁琐的“布局和布线(Place-and-route)”操作,将我们需要的自定义电路映射到 FPGA 资源,同时确保以尽可能短的路径实现所需结果。这是一种非常复杂的优化问题,整个过程需要投入巨大的运算能力。虽然英特尔提供了一种仿真器,让我们可以用较短时间测试最终结果的正确性,但确定并优化性能的过程依然要经历冗长的编译过程。



FPGA 编译过程为你的偷懒提供了一个好借口(图源: XKCD )。

能效

在对外交流中,英特尔始终将能效视作 FPGA 的一大显著优势。然而实际情况并不那么明显,浮点计算方面尤其如此。不过我们首先还是来看看 FPGA 在能效方面远远胜过 CPU 和 GPU 的应用场景。

FPGA 的高能效主要体现在逻辑计算和固定精度计算领域(而非浮点计算领域)。在密码学货币(如比特币)挖矿方面,这一特点让 FPGA 呈现出巨大优势。时至今日,几乎每个人都已经习惯于通过 FPGA 挖矿了。

顺带一提,目前几乎所有人在挖矿时都会使用 ASIC(专用集成电路),这就是一种针对某种具体应用专门设计的特殊集成电路。ASIC 是一种能效更高的解决方案,但前期需要付出更多投资来设计芯片,同时芯片的产量必须足够大才能分摊高昂成本。接着还是继续说回 FPGA 吧。

FPGA 在能效方面的另一个优势在于,FPGA 基板无需主机即可直接通电运行,它有自己的输入 / 输出,因此还可以在主机方面节约能耗和资金。这一点与 GPU 计算完全不同,GPU 需要借助 PCIe 或 NVLink 与主机系统通信,因此必须装在主机中方能运行。(不过也有一个例外, NVidia Jetson 无需主机即可运行,但这并不是什么高端 GPU。)

浮点运算能效 —— FPGA vs GPU

诸如深度学习等很多高性能计算用例中,通常需要依赖浮点算法,这是 GPU 最擅长的领域之一。以前,FPGA 浮点运算效能非常低,因为必须通过逻辑块组装浮点单元,这一过程会耗费大量资源。

一些新型 FPGA,例如 Arria 10 Stratix 10 在 FPGA 构造中直接内置了浮点单元,浮点运算能力有了显著提升。额外增加的浮点运算单元是否可以改善 FPGA 的浮点计算能效?是否能比 GPU 能效更高?

那我们就用最先进的 GPU 和 FPGA 对比看看吧。目前市面上最先进的专业级 GPU 就是 Tesla V100 了,理论上最大运算速度可达 15 TFLOPS(万亿次浮点运算 / 秒,一种衡量浮点运算能力的标准单位),该 GPU 功耗约 250 瓦特。而目前市面上最先进的 FPGA 应该是 Nallatech 520C ,其中搭载了 Altera/ 英特尔联合研发的 Statix 10 芯片,该基板的理论最大运算速度为 9.2 TFLOPS,功耗约为 225 瓦特。

如果从能效角度对比这两个设备,GPU 的能效无疑更高,理论上可实现 56 GFLOP/W(十亿次浮点运算 / 瓦特,这是一种衡量浮点运算能效的标准单位),而 FPGA 仅为 40.9 GFLOP/W。因此如果你目前就需要购买新的浮点运算硬件设备,并且需要配合主机使用,GPU 貌似会是更好的选择,至少从上述这种粗糙的对比中可以得出这样的结论。

然而两者的差距并不大,并且后续发布的新款 FPGA,例如这块即将发布的基于 Stratix 10 的 FPGA 在浮点运算方面很可能会实现比 Volta(译注:Tesla V100 的开发代号)更高能效。更重要的是,上述对比涉及的两种产品本身也有本质差异,毕竟 Tesla V100 使用了 12 纳米制程,而 Stratix 10 使用了更古老的 14 纳米制程。

根据上述对比,如果需要能效更高的浮点运算设备,那么现阶段依然有必要继续坚持选择 GPU,但这个对比并不能证明 GPU 在浮点运算方面能效始终更出色。浮点运算能效这场战役,目前的胜者是 GPU,但不久的将来战果可能会有所变化。



FPGA 的能耗标签:取决于具体应用(图片版权:欧盟)。

如果主机并非必须,那么就有必要对使用高端 GPU 的主机,和完全不使用主机的高端 FPGA 进行一下对比了。如果继续沿用上述对比中使用的数据,对于装备 GPU 的主机和不装备主机的 FPGA,只有主机功耗为 116.7 瓦特(如果是多 GPU 主机,则为每颗 GPU 对应的主机功耗)时,两者的能效才能维持相同。通常,现代化主机的功耗介于 50-250 瓦特之间,这样看来 FPGA 的优势就比较大了。

综述和展望

FPGA 在某些领域是必不可少的。例如军事领域的导弹导航系统中,使用 FPGA 主要是看中了低延迟的特性。射电天文学领域,FPGA 的专用输入 / 输出是顺利处理海量数据的关键。在密码学货币挖矿应用中,高能效固定精度计算和逻辑计算也是 FPGA 的一大优势。



艺术家对在建的 SKA 射电天文望远镜的构想图(图源:SKA Organisation/Swinburne Astronomy Productions)

然而英特尔斥资 167 亿美元收购 Altera 可不仅仅是为了涉足这种利基市场,他们还有更远大的目标。据猜测,他们的目标在于高性能计算和云计算这两个市场(例如被用于亚马逊那样的数据中心)。

面向高性能计算的 FPGA

依个人拙见,我觉得未来几年内,FPGA 都不会在高性能计算市场引起太大轰动。就算 FPGA 在能效方面比 GPU 出色些,FPGA 的软件开发依然要比 GPU 开发困难很多。HPC 社区已经习惯于使用 GPU,让大家从 GPU 改为使用 FPGA 明显需要更大的动力。着眼于更长远的未来,例如未来 5 年以上,届时 FPGA 也许可以提供足够大的收益和动力,而这可能恰恰就是英特尔所希望的。

面向云提供商的 FPGA

云提供商也是个巨大的市场。在英特尔的愿景中,他们希望看到使用 FPGA,或混合使用 CPU 和 FPGA 的云服务器。这种想法的目的在于将某些计算任务分摊给 FPGA,并且 / 或者使用 FPGA 提供定制化的网络拓扑。

微软毫无疑问会与英特尔密切合作,他们正在实现使用 FPGA 的数据中心,并且已经搭建了包含 100000 块 FPGA 的网络。借此,微软的必应搜索引擎已经在性能和灵活性方面获得了巨大收益,现在一部分必应搜索的计算工作已经交由 FPGA 处理。亚马逊也在广受欢迎的 EC2 平台上提供了 FPGA 节点。这趋势是否会成为潮流?我们拭目以待吧。

展望

原本较为“小众”的 FPGA 能否成为主流?个人而言我很怀疑。我认为,FPGA 如果要真正普遍起来,需要满足两个条件:

  • 必须简化编程工作,尤其是缩短编译时间。
  • 执行浮点计算时,必须实现更高能效

英特尔正在努力解决这些问题,只不过摆在他们前方的障碍还有很多。

作者: Atze van der Ploeg ,阅读英文原文: Why use an FPGA instead of a CPU or GPU?

感谢蔡芳芳对本文的审校。

公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

2018-09-17 18:155854
用户头像

发布了 283 篇内容, 共 103.5 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

前端合成海报并保存到本地

南城FE

JavaScript 小程序 前端 图片合成

关于跨国文件传输需要了解的5点

镭速

跨国文件传输

构建DAO,你需要了解的关键要素

这我可不懂

智能合约 数字化 DAO

生成式AI技术发展趋势报告

百度开发者中心

人工智能 百度文心一言

透彻理解 Axios Blob 的使用与优化

Apifox

性能优化 后端 HTTP API web开发

开源XL-LightHouse与Flink、ClickHouse之类技术相比有什么优势

feng

大数据 flink Clickhouse 流式计算 流式统计

LED小间距屏幕的COB封装技术应用和优势

Dylan

技术 封装 PCB LED显示屏

2023中国高校计算机大赛热度再刷新:2100+参赛队伍,获超480所国内知名高校关注!

云智慧AIOps社区

编程 算法 模型 中国大学生计算机设计大赛 计算机大赛

OTP令牌是什么?有什么作用?是怎么实现的?

行云管家

运维 堡垒机 双因子认证 OTP令牌

AI 自动开发软件并部署到云服务器,DevOpsGPT实现从自然语言需求到可运行的软件!

booboosui

AI Codec AI开发软件 ChatGPT

Sketch for mac(矢量绘图UI设计软件) 97.2中文特别版

mac

Sketch 苹果mac Windows软件 矢量图设计软件

你可以信任由编译器优化的代码吗?

互联网工科生

编译器 simd 数据流

晋级名单公布!“域见杯”复赛今日火热开启

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

函数性能探测:更简单高效的 Serverless 规格选型方案

阿里巴巴云原生

阿里云 Serverless 云原生

生成式AI:2023产业机遇与落地场景探索

百度开发者中心

人工智能 百度文心一言

RPA+智能问答实现微信端智能客服 | 京东云技术团队

京东科技开发者

微信 RPA 智能客服 企业号 8 月 PK 榜

MAMP Pro for Mac:打造本地开发和测试环境,轻松搭建网站

晴雯哥

大容量文件传输的高速传输协议解决方案评估与比较

镭速

大文件传输 大容量文件传输

融入数据浪潮,KaiwuDB 期待与您共赴 DTCC 2023

KaiwuDB

KaiwuDB DTCC2023

08.25北京站|阿里云Serverless 技术实践营( AI 专场)开放报名

Serverless Devs

阿里云 Serverless 云原生

生成式AI:模拟人类智能的未来科技

百度开发者中心

人工智能 文心一言

深入理解 Flutter 图片加载原理 | 京东云技术团队

京东科技开发者

flutter 移动开发 图片懒加载 企业号 8 月 PK 榜

加密传输,保护Mac电脑的文件安全—SecureFX for Mac

晴雯哥

ARM64是什么意思?与x86有什么区别?

行云管家

arm64

数仓备份经验分享丨详解roach备份原理及问题处理套路

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

如何用树莓派Pico针对IoT编程?

高端章鱼哥

树莓派 物联网 树莓派 Pico MCU

食品包装MES系统解决方案

万界星空科技

MES系统

快手光合大会公开全模态大模型AIGC解决方案 人机协同助力创作全流程提效

Geek老T

AI 短视频

Parallels Desktop 18 for Mac(Pd虚拟机) 18.3.2激活版

mac

Parallels Desktop 18 pd 18 pd虚拟机 苹果mac Windows软件

mac端矢量图编辑器 Boxy SVG 免激活

mac大玩家j

Mac 软件推荐 Mac软件

Spring BeanDefinition 也分父子关系?

江南一点雨

Java spring

为何使用FPGA取代CPU和GPU?_架构_Atze van der Ploeg_InfoQ精选文章