什么叫fpga异构计算算 fpga

FPGA与CPU相比进一步强化了算力尤其適合各类并行化计算;而与GPU相比,其更细粒度及灵活的并行化及流水线控制天然的对复杂算法有更强的适应性能够充分发挥出算力优势,从而带来计算效率的提升针对数据中心算力不断增强,算法不断细分、复杂化的大背景下FPGA具有更好的发展前景。

原标题:专访阿里云fpga异构计算算負责人:fpga异构计算算GPU、FPGA、ASIC芯片将三分天下

摘要:张献涛表示,“随着FPGA的生态环境的建立和完善、ASIC芯片的逐渐成熟未来fpga异构计算算领域會呈现GPU、FPGA、ASIC芯片三分天下的局面,GPU、FPGA、ASIC芯片都会有自己独特的特长和应用领域”

编者按:10月11-14日,为期四天的2017杭州云栖大会(门票火热抢購中!)将再度在杭州云栖小镇起航作为全球最具影响力的科技展会之一,本届大会将有不少阿里集团专家以及各企业行业领袖的精彩演讲从今天开始,云栖社区将会对大会嘉宾做一系列专访想了解嘉宾以及最新议题信息请关注“云栖大会”公众号。今天我们采访嘚是阿里云虚拟化平台负责人张献涛,他将在10月的云栖大会上分享他对fpga异构计算算领域的理解以及未来趋势的解读

在IT界,fpga异构计算算并鈈是一个新兴的词

近十年来,计算行业经历了从32bit、“x86-64”、多核心、通用GPGPU以及2010年“CPU—GPU”fpga异构计算算的变迁而最近几年,随着人工智能、高性能数据分析和金融分析等计算密集型领域的兴起fpga异构计算算才突然火了起来。

因为传统通用计算的方式已经无法满足我们对计算能仂的需求fpga异构计算算被认为是现阶段挑起计算大梁的关键技术,阿里云fpga异构计算算产品解决方案就在这样的大环境下诞生了这支团队嘚掌舵人正是张献涛。

张献涛花名旭卿,武汉大学信息安全博士加入阿里巴巴前,他就职于英特尔亚太研发中心是Xen、KVM等多个开源虚擬化项目的主要贡献者,曾担任Xen/IOMMU以及KVM/IA64项目的Maintainer;同时他也是Intel HAXM加速器的主要作者和贡献者,并因此获得英特尔最高成就奖

2014年,张献涛正式加入阿里巴巴任资深专家目前在阿里主要负责虚拟化技术、高性能计算产品、fpga异构计算算产品、以及一些创新类型产品的技术和研发的團队。

在这次访谈中张献涛分享了目前企业使用fpga异构计算算方案的痛点,他还深入介绍了阿里云在均衡fpga异构计算算资源所做的工作

fpga异構计算算是指不同类型的指令集和体系架构的计算单元组成的系统的计算方式,目前 “CPU+GPU”以及“CPU+FPGA” 都是最受业界关注的fpga异构计算算平台咜最大的优点是具有比传统CPU并行计算更高效率和低延迟的计算性能,尤其是业界对计算性能需求水涨船高的情况下fpga异构计算算变得愈发偅要。整个计算行业生态无一不在此发力芯片企业投入了大量的资金,异构编程的开发标准也在逐渐成熟而主流的云服务商更是在积極布局,一时间fpga异构计算算大有取代传统同构计算之势。

张献涛也表示fpga异构计算算能够很好的满足人工智能、高性能数据分析、金融汾析等计算密集型领域的计算需求,而这一技术会逐渐取代原来通用计算不擅长的部分

但是在光鲜亮丽的外壳之下,对于一般用户来说fpga异构计算算的采购、部署以及使用门槛对绝大多数企业来说都很高。对此张献涛主要谈到以下几个痛点:

1. 采购成本高:用户小量采购基本上没有议价能力,特别是购买FPGA板卡量少的话采购价格特别高。

2. 交付周期长:通常用户从开始需要采购到机型选择、硬件架构设计、供应商选择、机房选择、财务审批等流程通常需要几个月的时间。

3. 没有弹性:采购完了GPU/FPGA的数量就固定了任务少的话多买的GPU/FPGA就浪费了,任务多的话GPU/FPGA数量又不够用

4.没有硬件红利:采购完了型号就固定了,如果有新的GPU/FPGA架构上线只能追加预算购买老的GPU/FPGA性能跟不上应用了。

5. 数據孤岛:线下的GPU/FPGA和线上的服务无法打通

另外,他还补充道做FPGA产品的最大挑战是整个FPGA的生态环境很差,具备FPGA开发能力特别是开发FPGA做计算加速的客户非常少为此,我们会在云上建立IP开发市场并且引入一系列的FPGA IP合作伙伴并推动建立云上FPGA的开发标准,丰富整个FPGA的开发生态环境吸引更多的IP开发厂商和合作伙伴把他们的IP放在IP开发市场上,去服务他们的最终用户从而进一步丰富整个FPGA的生态环境。”

阿里云在短時间里先后推出弹性GPU和FPGAfpga异构计算算的解决方案目的就是降低fpga异构计算算资源使用的门槛,对高性能计算有需求的企业可以随买随用

云棲社区了解到,阿里云弹性GPU产品主要面向人工智能、数据分析、科学计算、电影渲染、视频图像处理、视频转码等场景目前的应用案例包括行为数据分析、千人千面、人脸识别、视频识别、图像识别、对象分类等;阿里云弹性FPGA产品主要面向人工智能、半导体设计、基因计算、视频图像处理、数据分析决策等场景,目前的应用案例包括深度学习推理、深度学习模型裁剪、非规整数据计算、视频图像处理、硬件半导体设计等

阿里云在fpga异构计算算领域的探索

众所周知,相比CPUGPU和FPGA拥有太多的优势,GPU有更高的并行度、更高的单机计算峰值、更高的計算效率;而FPGA的优势则主要体现在它拥有更高的每瓦性能、非规整数据计算更高的性能、更高的硬件加速性能、更低的设备互联延迟

但茬云端的解决方案上,便意味着优势的进一步放大张献涛介绍,阿里云GPU和FPGAfpga异构计算算解决方案主要有以下特点:

1. GPU/FPGA资源即买即用弹性伸縮。

2. 超大规模资源池满足业务峰值的GPU/FPGA数量的需求。

3. 享受fpga异构计算算超摩尔定律的硬件红利以相同的价格使用性能更强的GPU/FPGA实例。

4. 最全面嘚异构产品线满足人工智能训练、推理,图像视频处理等各种不同的需求

5. 产品整合:和整个阿里云产品体系深度整合,数据打通

这些特性完美的解决了用户使用fpga异构计算算方案的痛点。张献涛还透露现在大部分客户都在单机上训练模型,通常需要几周到一个月的时間因此阿里云正在计划推出一款超高性能异构集群的产品。

“该产品的GPU/FPGA之间可以通过25/100Gb ROCE走RDMA协议直连可以多机多卡,用非常多的GPU/FPGA设备集群來共同训练一个模型大大减少用户训练的时间,从几周到一个月缩短到一天或者几个小时的级别”

值得一提的是,阿里云fpga异构计算算解决方案也针对开发者做出了更友好的体验:

在GPU编程方面阿里云会推出分布式多机多卡训练框架和其他GPU上的性能优化服务,能够大大降低客户使用多机多卡的门槛从而减少客户在云上做深度学习训练的时间。

FPGA方面阿里云会建立IP开发市场并且引入一系列的FPGA IP合作伙伴,并苴会推出自研的IP系列通过IP市场的繁荣让更多的最终用户能够享受到FPGA的性能加速。

另外阿里云还推出了IaaS+的服务,包括发布E-HPC产品做异构集群的资源调度、账号管理和弹性伸缩通过容器服务来做一键部署、分布式训练和弹性伸缩,通过XDL来做行为数据分析利用阿里云自研的GPU彙编器来优化提升应用的性能,提高fpga异构计算算设备的利用率减少资源的采购成本。

人工智能以及其它新兴应用领域对于计算量的需求超过了通用CPU的摩尔定律的发展速度而fpga异构计算算的性能增长速度能够满足这些新兴的方向和趋势,可以预见的是fpga异构计算算会在今后嘚数据中心中占据越来越多的份额。

宏观来看fpga异构计算算的发展也得益于国家战略的推动。例如最近国家下发了人工智能的发展规划,人工智能已经成为国家战略这势必会刺激fpga异构计算算的需求。当然张献涛也坦言,虽然fpga异构计算算的应用需求越来越多但通用计算的需求也会一直存在,二者将会长期共存

毫无疑问,目前fpga异构计算算领域GPU处理器已经占据了主流地位但对未来的趋势,张献涛则表礻“随着FPGA的生态环境的建立和完善、ASIC芯片的逐渐成熟,未来fpga异构计算算领域会呈现GPU、FPGA、ASIC芯片三分天下的局面GPU、FPGA、ASIC芯片都会有自己独特嘚特长和应用领域,有自己独特的客户群体”

这也是张献涛团队专注的方向,接下来团队会发布包括8卡/16卡GPU产品、下一代的Volta架构的GPU产品、噺一代的FGPA的产品而ASIC芯片的产品上云也正在研发当中。

目前他所带领的团队主要有两个目标:一方面致力于让fpga异构计算算变成用户即买即鼡的计算资源提供最为全面的fpga异构计算算产品方案;另一方面致力于让用户能够用好异构资源,充分发挥异构资源的处理能力让用户嘚服务更具备竞争力。也就是推动fpga异构计算算变成一种普适的计算能力

本次杭州云栖大会将设立fpga异构计算算/高性能计算专场、虚拟化技術专场,届时张献涛都将发表主题演讲在大会正式开幕之前,他也向云栖社区透露了一个重磅消息——阿里云将发布几款重量级的fpga异构計算算家族产品涉及到fpga异构计算算、通用计算、高性能计算等多个领域。他表示这些产品都是为了解决用户在使用阿里云的过程中遇箌的痛点,包括集群的管理和调度问题、云上弹性使用付费软件的License问题、实例需要即拥有虚拟机的弹性又要拥有物理机的性能、多机多卡汾布式训练降低训练时间等问题

云栖社区:fpga异构计算算能提供比传统CPU并行计算更高效率和低延迟的计算性能,这是否意味这后者将会被取代您如何看待二者的发展趋势?

张献涛:通用计算和fpga异构计算算的需求都会一直存在通用计算不会完全被取代。但是随着人工智能、高性能数据分析、金融分析等计算密集型领域的日益兴起fpga异构计算算能够更好的满足这部分的计算需求,fpga异构计算算会越来越多的取玳原来通用计算不擅长的部分阿里云顺应这个趋势推出弹性GPU和FPGAfpga异构计算算的解决方案,就是为了更好的满足日渐增长的人工智能、数据汾析、商业智能对于fpga异构计算算的需求能够让他们随买随用,让fpga异构计算算不再是一种高高在上的昂贵的资源而变成一种普适性的基礎计算资源,推动

人工智能等产业的发展

云栖社区:今年1月,阿里云推出了弹性GPU和FPGAfpga异构计算算解决方案这一方案主要面向哪些应用场景推出的?目前有哪些应用案例

张献涛:首先,GPU的的优势包括比CPU更高的并行度、更高的单机计算峰值、更高的计算效率阿里云弹性GPU产品主要面向人工智能、数据分析、科学计算、电影渲染、视频图像处理、视频转码等场景,目前的应用案例包括行为数据分析、千人千面、人脸识别、视频识别、图像识别、对象分类等

其次,FPGA的优势包括更高的每瓦性能、非规整数据计算更高的性能、更高的硬件加速性能、更低的设备互联延迟阿里云弹性FPGA产品主要面向人工智能、半导体设计、基因计算、视频图像处理、数据分析决策等场景,目前的应用案例包括深度学习推理、深度学习模型裁剪、非规整数据计算、视频图像处理、硬件半导体设计等

除此之外,因为现在大部分客户都在單机上训练模型通常需要几周到一个月的时间,我们计划推出一款超高性能异构集群的产品该产品的GPU/FPGA之间可以通过25/100Gb ROCE走RDMA协议直连,可以哆机多卡用非常多的GPU/FPGA设备集群来共同训练一个模型,大大减少用户训练的时间从几周到一个月缩短到一天或者几个小时的级别。

云栖社区:fpga异构计算算方案的优势很明但仍然处于发展初期,目前fpga异构计算算模式面临的最大挑战是什么

张献涛:目前用户自己采购fpga异构計算算的话遇到最大的痛点包括:

(1)采购成本高:用户小量采购基本上没有议价能力,特别是购买FPGA板卡量少的话采购价格特别高。

(2)交付周期长:通常用户从开始需要采购到机型选择、硬件架构设计、供应商选择、机房选择、财务审批等流程通常需要几个月的时间。

(3)没有弹性:采购完了GPU/FPGA的数量就固定了任务少的话多买的GPU/FPGA就浪费了,任务多的话GPU/FPGA数量又不够用

(4)没有硬件红利:采购完了型号僦固定了,如果有新的GPU/FPGA架构上线只能追加预算购买老的GPU/FPGA性能跟不上应用了。

(5)数据孤岛:线下的GPU/FPGA和线上的服务无法打通

所以阿里云嶊出了弹性的fpga异构计算算解决方案,能够很好的解决用户的这些痛点:(1)GPU/FPGA资源即买即用弹性伸缩。(2)超大规模资源池满足业务峰徝的GPU/FPGA数量的需求。(3)享受fpga异构计算算超摩尔定律的硬件红利以相同的价格使用性能更强的GPU/FPGA实例。(4)最全面的异构产品线满足人工智能训练、推理,图像视频处理等各种不同的需求(5)产品整合:和整个阿里云产品体系深度整合,数据打通

另外弹性FPGA产品的最大挑戰是整个FPGA的生态环境很差,具备FPGA开发能力特别是开发FPGA做计算加速的客户非常少我们会建立IP开发市场并且引入一系列的FPGA IP合作伙伴,并推动建立云上FPGA的开发标准丰富整个FPGA的开发生态环境,吸引更多的IP开发厂商和合作伙伴把他们的IP放在IP开发市场上去服务他们的最终用户,从洏进一步丰富整个FPGA的生态环境

云栖社区:对开发者而言,fpga异构计算算的编程难度和开发成本更高对此阿里云作了哪些工作?

张献涛:GPU編程方面阿里云会推出分布式多机多卡训练框架和其他GPU上的性能优化服务能够大大降低客户使用多机多卡的门槛,大大降低客户在云上莋深度学习训练的时间FPGA方面,阿里云会建立IP开发市场并且引入一系列的FPGA IP合作伙伴并且会推出自研的IP系列,通过IP市场的繁荣让更多的最終用户能够享受到FPGA的性能加速另外阿里云还推出了IaaS+的服务,包括发布E-HPC产品做异构集群的资源调度、账号管理和弹性伸缩通过容器服务來做一键部署、分布式训练和弹性伸缩,通过XDL来做行为数据分析利用阿里云自研的GPU汇编器来优化提升应用的性能,提高fpga异构计算算设备嘚利用率减少资源的采购成本。

云栖社区:能否谈谈对fpga异构计算算的理解以及分享你在工作中获得的一些宝贵经验?

张献涛:随着人笁智能的兴起一些新兴应用领域对于计算量的需求以及超过了通用CPU的摩尔定律的发展速度,而fpga异构计算算的性能增长速度能够满足这些噺兴的方向和趋势fpga异构计算算会在今后的数据中心中占据越来越多的份额。最近国家也下发了人工智能的发展规划人工智能已经成为國家战略,未来会推动国家产业升级、社会进步的方方面面而人工智能离不开fpga异构计算算。我们的工作一方面致力于让fpga异构计算算变成鼡户即买即用的计算资源提供最为全面的fpga异构计算算产品方案,另一方面致力于让用户能够用好异构资源充分发挥异构资源的处理能仂,让用户的服务更具备竞争力我们希望推动fpga异构计算算变成一种普适的计算能力,从而推动人工智能的发展进而推动产业升级和社會进步,改变人们的生产、生活方式

云栖社区:您认为fpga异构计算算领域未来会有什么样的新变化?

张献涛:目前fpga异构计算算领域是GPU处理器占据主流地位未来随着FPGA的生态环境的建立和完善,随着ASIC芯片的逐渐成熟未来fpga异构计算算领域会呈现GPU、FPGA、ASIC芯片三分天下的局面,GPU、FPGA、ASIC芯片都会有自己独特的特长和应用领域有自己独特的客户群体。阿里云后面会推出更加全面的fpga异构计算算产品族包括8卡/16卡GPU产品、包括丅一代的Volta架构的产品、包括新一代的FGPA的产品,另外ASIC芯片的产品上云也在研发中。

云栖社区:在本次云栖大会上您想分享什么话题?能否提前透露一些亮点以及分享这个话题的初衷?

张献涛:本次云栖大会我们会发布几款重量级产品涉及到fpga异构计算算,通用计算高性能计算等多个领域。这些产品都是为用户提供更好的体验解决包括集群的管理和调度问题、云上弹性使用付费软件的License问题、实例需要即拥有虚拟机的弹性又要拥有物理机的性能、多机多卡分布式训练降低训练时间等问题,敬请期待关注云栖大会的fpga异构计算算专场,虚擬化技术专场以及弹性计算的专场

欲了解更多历届大会相关内容以及最新嘉宾采访,请关注社区公众号——“云栖大会”!

对于一个软件开发人员可能听说过 FPGA,甚至在大学课程设计中可能拿FPGA做过计算机体系架构相关的验证,但是对于它的第一印象可能觉得这是硬件工程师干的事儿

目前,随着人工智能的兴起GPU 借助深度学习,走上了历史的舞台并且正如火如荼的跑者各种各样的业务,从 training 到 inference 都有它的身影FPGA 也借着这股浪潮,慢慢地走向数据中心发挥着它的优势。所以接下来就讲讲 FPGA 如何能让程序员们更好友好的开发而不需要写那些烦人的 RTL 代码,不需要使用 VCSModelsim 这样的仿真软件,就能轻轻松松实现

实现这一编程思想的转变是因为 FPGA 借助 OpenCL 实现了编程,程序员只需要通过 C/C++ 添加适当的 pragma 就能实現 FPGA 编程为了让您用 OpenCL 实现的 FPGA 应用能够有更高的性能,您需要熟悉如下介绍的硬件另外,将会介绍编译优化选项有助于将您的 OpenCL 应用更好嘚实现 RTL 的转换和映射,并部署到 FPGA

FPGA 是高规格的集成电路可以实现通过不断的配置和拼接,达到无限精度的函数功能因为它不像 CPU 或者 GPU 那样,基本数据类型的位宽都是固定的相反 FPGA 能够做的非常灵活。在使用 FPGA 的过程中特别适合一些 low-level 的操作,比如像 bit masking、shifting、addition 这样的操作都可以非常容易的实现

为了达到并行化计算,FPGA 内部包含了查找表(LUTs)寄存器(register),片上存储(on-chip memory)以及算术运算硬核(比如数字信号处理器 (DSP) 块)这些 FPGA 内部的模块通过网络连接在一起,通过编程的手段可以对连接进行配置,从而实现特定的逻辑功能这种网络连接可重配的特性为 FPGA 提供了高层次可编程的能力。(FPGA的可编程性就体现在改变各个模块和逻辑资源之间的连接方式)

举个例子查找表(LUTs)体现的 FPGA 可编程能力,对于程序猿来说可以等价理解为一个存储器(RAM)。对于 3-bits 输入的 LUT 可以等价理解为一个拥有 3位地址线并且 8 个 1-bit 存储单元的存储器(一个8長度的数组数组内每个元素是 1bit)。那么当需要实现 3-bits 数字按位与操作的时候8长度数组存的是 3-bits 输入数字的按位与结果,一共是 8 种可能性當需要实现 3-bits 按位异或的时候,8长度数组存的是 3-bits 输入数字的按位异或结果一共也是 8 种可能性。这样在一个时钟周期内,3-bits 的按位运算就能夠获取到并且实现不同功能的按位运算,完全是可编程的(等价于修改 RAM 内的数值)

0
0
0
0
0
0
0

我们看到的三输入的按位与操作,如下所示在 FPGA 内蔀,可通过 LUT 实现

如上展示了 3输入,1输出的 LUT 实现当将 LUT 并联,串联等方式结合起来后就可以实现更加复杂的逻辑运算了

传统 FPGA 与软件开发对比

对于传统的 FPGA 开发与软件开发,工具链可以通过下表简单对比:

注:传统 FPGA 与软件开发对比表

重点介绍一下编译阶段的 Synthesis (综合),这部分与软件开发的编译有较大的不同一般的处理器 CPU、GPU等,都是已经生产出来的 ASIC有各自的指令集可以使用。但是對于 FPGA一切都是空白,有的只是零部件什么都没有,但是可以自己创造任何结构形式的电路自由度非常的高。这种自由度是 FPGA 的优势吔是开发过程中的劣势。

写到这里让我想起了最近 《神秘的程序员们》中的一个梗:

注:漫画来源《神秘的程序员们56》by 西乔

传统的FPGA开发僦像10岁时候的 Linux,想吃一个蛋糕需要自己从原材料开始加工。FPGA 正是这种状态想要实现一个算法,需要写 RTL需要设计状态机,需要仿真正確性

复杂系统,需要使用有限状态机(FSM)一般就需要设计下图包含的三部分逻辑:组合电路,时序电路输出逻辑。通過组合逻辑获取下一个状态是什么时序逻辑用于存储当前状态,输出逻辑混合组合、时序电路得到最终输出结果。

然后针对具体算法,设计逻辑在状态机中的流转过程:

实现的 RTL 是这样的:

传统的 RTL 设计对于程序员简直就是噩梦啊,梦啊啊~~~工具链完全不同,开發思路完全不同还要分析时序,一个 Clock 节拍不对就要推翻重来,重新验证一切都显得太底层,不是很方便那么,这些就交给专业的 FPGAer 吧下面介绍的 OpenCL 开发 FPGA,有点像 25 岁的 Linux 了有了高层次的抽象。用起来自然也会更加方便

OpenCL 对于 FPGA 开发,注入了新鲜的血液一种面姠异构系统的编程语言,将 FPGA 最为异构实现的一种可选设备由 CPU Host 端控制整个程序的执行流程,FPGA Device 端则作为异构加速的一种方式异构架构,有助于解放 CPU将 CPU 不擅长的处理方式,下发到 Device 端处理目前典型的异构 Device 有:GPU、Intel Phi、FPGA。

大意是说:OpenCL 是一个用于异构平台编程的框架主要的异構设备有 CPU、GPU、DSP、FPGA以及一些其它的硬件加速器。OpenCL 基于 C99 来开发设备端代码并且提供了相应的 API 可以调用。OpenCL 提供了标准的并行计算的接口以支歭任务并行和数据并行的计算方式。

这里采用 Altera 官网的矩阵乘法案例进行分析可以通过如下链接下载案例:

kernel 函数的定义如下:


 
 
 
 
 

 
对其进行仿真,不需要 programer 关心具体的时序是怎么走的只需要验证逻辑功能就可以,Altera OpenCL SDK 提供了 CPU 仿真 Device 设备的功能采用如下方式进行:

 



当执行上述脚本后,输出如下:


通过仿真时候设置 Device = 8模拟 8 个设备运行 (512, 512) * (512, 512) 规模的矩阵,最终验证正确接下来就可以将其真正编译到 FPGA 设备仩后运行。

FPGA 设备上运行矩阵乘

 
 
这个时候真正要将代码下载到 FPGA 上执行了,这时候只需要做一件事,那就是用 OpenCL SDK 提供的编譯器将 *.cl 代码适配到 FPGA 上,执行编译命令如下:
这个过程比较慢一般需要几个小时到10几个小时,视 FPGA 上资源大小而定(目前这部分时间太長暂时无法解决,因为这里的编译其实是在行程一个能够正常工作的电路,软件会进行布局布线等工作)


这时候大功告成,可以运行 host 端程序了:
可以看到矩阵乘法能够在 FPGA 上正常运行,吞吐大概在 119GFlops 左右

 
从上述的开发流程,OpenCL 大大的解放了 FPGAer 的开发周期并且对于软件開发者,也比较容易上手这是他的优势,但是目前开发过程中还是存在一些问题,如:编译器优化不足相比 RTL 写的性能存在差距;编譯到 Device 端时间太长。不过这些随着行业的发展一定会慢慢的进步。
另外对 FPGA 感兴趣,或者有用 FPGA 做方案的同学欢迎一起探讨。

 

我要回帖

更多关于 fpga异构计算 的文章

 

随机推荐