你知道吗,世界第一大FPGA公司赛灵思,它的龙头芯片,却不是FPGA——2018年,赛灵思发布了一种名叫ACAP的芯片,随即受到了全球科技界的密切关注。
很多人说,ACAP了开启FPGA芯片发展的新阶段,也将会带来大量人工智能时代的新机会。AMD刚刚花了490亿美元收购赛灵思,有很大一部分原因也是看中了这个芯片在数据中心这个大蓝海里的广阔前景。
那么这个名叫“自适应计算加速平台”的芯片,到底有哪些独门绝技,它能不能撑得起新一代人工智能芯片的这面大旗,并且引领下一轮人工智能硬件的变革?今天这篇文章我们就来一探究竟。
从FPGA到ACAP
赛灵思在初次提出ACAP这个概念的时候,就在反复强调“ACAP并不是FPGA”。那么相比于FPGA,ACAP这个芯片到底有哪些特别重大的创新之处呢?我总结了三点,分别是基于各种引擎的芯片架构、专用的AI加速单元,以及首次在FPGA或者ACAP中出现的片上网络。
整体来看,ACAP芯片是由很多个引擎组成的。比如FPGA中的“处理器系统(Processor Systems)”在ACAP中被称为“标量引擎(Scalar Engines)”;“可编程逻辑(Programmable Logic)”则是变成了“自适应引擎(Adaptable Engines)”;再加上由AI引擎和DSP引擎组成的“智能引擎(Intelligent Engine)”,就构成了ACAP的“三大引擎”。
这样的命名方式充分体现了ACAP的异构化这一特征:对于一个目标应用,这三种引擎会各自负责擅长的运算类型,从而实现最佳的处理效果。
在这“三大引擎”中所包含的各种硬件资源中,其他的我们或多或少都在赛灵思的FPGA产品中见到过,唯独“智能引擎”中的“AI引擎”是ACAP特有的一个概念,咱们就从它开始说起。
AI引擎
对于机器学习、5G通信这样计算密集、但又对时延等较为敏感的应用,通用CPU的性能是远远不够的。因此我们会设计专用的芯片来加速这些应用,它们也叫做硬件加速器、或者领域专用架构(Domain Specific Architecture,DSA)。
假设我们手头有一个深度学习加速器(Deep Learning Processing Unit,DPU)的IP,那么对于FPGA来说,我们会用到片上的可编程逻辑资源和DSP资源来物理上实现这个IP。
但是对于Versal ACAP来说,这个过程被大大简化了,我们主要用AI引擎就行。这样做的好处有两个方面:更高的算力和更低的功耗。
在算力方面——基于AI引擎的实现方式的效率更高,这意味着单位面积的芯片对应的计算能力更强;这对于加速计算密集的应用来说无疑是个好消息;
在能耗方面——基于AI引擎的实现方式对于可编程逻辑资源的依赖度更低,可以减少大约百分之五十的功耗。
AI引擎的基本组成单位是tile,它其实是由大量的tile组成的一个阵列。也就是说,我们可以把它看成是传统FPGA加了AI buff的升级版。
每个tile里都有非常丰富的硬件资源,每个tile都有一个标量处理单元、和一个矢量处理单元,它们能实现指令级并行和数据级地并行,这就为算力提供了保障。tile之间的互联,既可以通过上下左右四个方向直接连接,也可以通过可编程的AXI总线来实现。
AXI总线可以看成ACAP芯片上的高速公路,小模块的互联只是一方面,更重要的是它还能把AI引擎和其他的大模块联系起来,包括芯片上的可编程逻辑资源,以及更高速的片上网络。这样一来,整个芯片上的数据流动就活了。我们可以把不同的任务,合理的分配给不同的单元,从而实现整体加速效果的最优化。
片上网络NoC
和传统FPGA相比,ACAP在架构上的最大的变革,就是采用了片上网络Network on Chip-NoC。如果前面说的AXI总线是高速公路,那片上网络就是高铁。
芯片这个四四方方的结构其实和地图很像,芯片上有很多功能模块,它们就像地图上的一个个城市。高速公路可以把这些城市连起来,但速度和运力毕竟还是有限的。但如果有高速铁路,就能把大量货物以很快的速度从一个城市送到另外一个城市。
片上网络就是这样,它之所以叫网络,就是把我们日常互联网的概念用在了芯片设计上,在芯片上搭建了一个传输数据的高速网络。它把数据封装成数据包的形式,然后在这个网络上进行路由、交换、通信。就像我们寄快递一样,自己开车太慢了,把它打包装箱,然后给快递公司用高铁很快就寄到了。
不仅如此,片上网络还是个三维的结构,也就是铁轨不是修在城市里面,而是用高架桥架在天上。不知道大家发现没有,咱们国内很大部分的高铁都是这么建的,这样不影响城市的正常交通,还能充分的利用土地面积。当然我们这里的土地,就是芯片。
所以片上网络能把数据的传输和数据的计算分离开,并且带来三个主要的好处,也就是能在有限的芯片面积上就能集成更多的逻辑单元,同时能保证数据传输的性能和吞吐量,也能缓解芯片布局布线的拥堵和压力。
VCK5000:发挥ACAP性能的关键
有了芯片还远远不够,万里长征算是走了三分之一,接下来三分之一,就是高性能的硬件平台。比如使用Versal ACAP芯片的赛灵思旗舰级加速卡VCK5000,就是被设计用来把ACAP的性能发挥到极致的硬件系统。它搭载了Versal AI Core系列的VC1902芯片,配备了大量的运算单元来满足数据中心应用对算力的需求,比如400个AI引擎tile和1968个DSP引擎。
除了数据中心和机器学习应用之外,VCK5000的目标应用还有5G、雷达等等,是一位全能型选手。那么它在实际任务中的表现如何呢?
GoogleNet和ResNet-50是图像识别领域里的两个比较常用的神经网络模型,而VCK5000加速卡处理这两个模型的速度,分别达到了赛灵思前一代旗舰产品UltraScale plus产品的五倍和七倍,这是真正意义上的“把前浪拍死在沙滩上”了。
在5G通信应用中,得益于之前介绍的AI引擎、片上网络等架构上的创新,VC1902仍然有着不俗的表现:它的能耗比达到了友商基于10纳米工艺的竞品的2.4倍。
Vitis:ACAP的灵魂
说完了芯片的硬件,我们必须要说一下开发芯片的软件,这也是我们芯片万里长征的最后三分之一。像Versal ACAP这样一个相对复杂的新异构计算平台,如何充分的利用它的性能,并且将工作负载合理地划分是很关键的。
这就好比一个很有领导力的人如果被安排到了技术岗,就无法很好的发挥自己的管理能力。反过来也一样,并不是所有优秀的工程师都是优秀的领导者。所以需要把资源,合理安排到最适合的地方。
这个决策过程需要对目标应用和计算平台两边的充分了解,交给软件来完成显然是最好的选择。
对于这一点,赛灵思给出了两种方案:
如果你有过使用FPGA的经历的硬件开发者,那么基于Vivado的那套传统的开发流程仍然是适用的,你可以像使用FPGA那样去使用ACAP;
如果你是没有任何硬件开发背景的软件开发者,也别不用担心,你同样可以用Versal ACAP来加速你的应用,方法就是使用Vitis软件平台。
Vitis能完成的工作可以分为软件侧和硬件侧这两部分:
在软件方面,用户提供的应用被编译生成可执行文件;在硬件方面,根据Vitis library提供了大量高度优化的加速器实现方案,应用中可被加速的部分将被捕捉到、并通过Versal ACAP中的可编程逻辑和AI引擎等IP来实现,最后生成板卡的启动文件。
对于开发者来说,只需要把可执行程序和启动文件拷贝到板卡的SD卡中,可执行程序就能通过API调用硬件来实现对于应用的加速。
所以从软件开发者的角度来说,整个开发环境依然是非常友好的,因为打交道的对象仍然是C、C++、Python等高层次的语言。为一些热门的应用,赛灵思还进一步完善了开发工具,比如说为AI推理打造的全栈式工具链Vitis AI。
通过Vitis AI,PyTorch、TensorFlow等主流的深度学习框架中的模型可以被高效地部署在Xilinx平台,实现良好的加速效果。
当然,Vitis面向的硬件平台并不只是Versal ACAP,之前上手过的Kria平台,就特别适合嵌入式应用的快速开发。
对于芯片公司来说,软件反而是最重要的。只有构建了良好的软件生态,才能真正提升产品的竞争力,尤其是对于AI加速这样市场大、门槛低的应用来说,只提供硬件是远远不够的。
一个全能的软件堆栈能让用户快速地上手,从而集中精力开发自己的算法应用,那硬件的竞争力自然也就有了保障。
过去几年里,英伟达取得的成功便是这一点的有力证明;而Vitis告诉我们,赛灵思也在朝着这个方向努力着。
结语
我们从硬件架构、开发流程以及应用实例这几个角度,简单地向大家介绍了赛灵思的Versal ACAP——第一代自适应计算加速平台。
在硬件方面,AI引擎、固化的片上网络等一系列的架构创新使得Versal ACAP比FPGA更为擅长加速AI推理、无线5G等计算密集的应用。在开发流程上,Vitis软件平台大大降低了硬件开发的难度,使得软件开发者也能够轻松地用ACAP加速自己的应用。
Versal ACAP的目标市场非常广泛,为不同的应用类型、场景准备了不同的产品线。尽管还没有大规模地走向市场,但是在目前有限的对比中,Versal ACAP确实展现了不俗的实力。
ACAP能否帮助AMD在数据中心市场牢牢占据一席之地?现在回答这个问题也许还太早了。但在竞争逐渐白热化的数据中心,ACAP必将掀起不小的水花。
(注:本文不代表老石任职单位的观点。)