【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

FPGA 掌控计算性能

  • 2017-12-03
  • 本文字数:2917 字

    阅读完需:约 10 分钟

本文要点

  • 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

感谢冬雨对本文的审校。

2017-12-03 16:502368
用户头像

发布了 52 篇内容, 共 27.9 次阅读, 收获喜欢 72 次。

关注

评论

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

Docker下,两分钟极速体验Nacos配置中心

程序员欣宸

Docker nacos 10月月更

改造微服务的时机

穿过生命散发芬芳

微服务 10月月更

React组件之间的通信方式总结(上)

beifeng1996

React

每日一题之Vue的异步更新实现原理是怎样的?

bb_xiaxia1998

Vue

Python进阶(二)初识Python数据元素:字典&时间

No Silver Bullet

Python 时间 字典 10月月更 数据元素

JavaScript——Document Object Model

胖虎不秃头

前端 js 10月月更

Collections之Arraylist源码解读(六)

知识浅谈

ArrayList 10月月更

什么是核心交换机、汇聚交换机、接入交换机,它们之间有啥区别?

wljslmz

交换机 网络设备 通信技术 10月月更

爬虫练习题(一)

张立梵

Python. 10月月更 爬虫案例

面试官:说说JS作用域和作用域链,我是这样回答的

loveX001

JavaScript

从这两道题重新理解,JS的this、作用域、闭包、对象

loveX001

JavaScript

一天梳理完React所有面试考察知识点

beifeng1996

React

手写JavaScript常见5种设计模式

helloworld1024fd

JavaScript

JavaScript——JS中的正则表达式

胖虎不秃头

前端 js 10月月更

一文了解 CPython 中的垃圾收集器

宇宙之一粟

Python 垃圾回收算法 垃圾收集器 10月月更

聊聊前端面试中的js同步与异步问题

loveX001

JavaScript

深入理解JS作用域链与执行上下文

loveX001

JavaScript

React组件之间的通信方式总结(下)

beifeng1996

React

面试官:请实现Javascript发布-订阅模式

helloworld1024fd

JavaScript

高频js手写题之实现数组扁平化、深拷贝、总线模式

helloworld1024fd

JavaScript

前端培训机构应该怎么选

小谷哥

React-hooks面试考察知识点汇总

beifeng1996

React

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

每日一题之请描述Vue组件渲染流程

bb_xiaxia1998

Vue

通过单步调试的方式学习 Angular 中带有选择器的内容投影使用方式

Jerry Wang

typescript 前端开发 angular web开发 10月月更

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

C++学习---cstdio的源码学习分析06-关闭文件函数fclose

桑榆

c++ 源码分析 10月月更

Python进阶(一)初识Python数据元素:列表&元组

No Silver Bullet

Python 列表 元组 10月月更 数据元素

大数据ELK(十四):Elasticsearch编程(基本操作)

Lansonli

ES 10月月更

JavaScript——BOM、JSON

胖虎不秃头

前端 js 10月月更

FPGA掌控计算性能_大数据_Rob Taylor_InfoQ精选文章