赛灵思(Xilinx)公司决心在未来十年加速可编程器件设计生产力的坚定信念,从2012年颠覆之作Vivado设计套件的震撼登场就开始了。7年内,从Vivado设计套件到SDNet软件定义规范环境,从针对数据中心的SDAccel开发环境到面向SoC/MPSoC嵌入式C/C++应用开发的SDSoC,再到面向云端应用的可重配置加速堆栈和面向视觉导向机器学习应用领域的reVISION堆栈,赛灵思的“软”实力在一步步得到释放和增强。而日前随着Vitis统一软件平台的推出,横亘在各学科领域软硬件开发者之间的壁垒被再次打破,一个支持从边缘到云端的全域开发时代正在到来。
Vitis是什么?
按照赛灵思大中华区销售副总裁唐晓蕾的说法,Vitis一词由vitality(有活力的)和法文单词Vite(快速的)构成,寓意“至关重要的生命力”。赛灵思方面希望能够通过这样一款标准、开放和免费的工具给开发者带来创新和持久的生命力,另一方面,这也是公司未来成长的基石,希望能够用有生命力的产品带给自身有生命力的成长。
左起:赛灵思大中华区销售副总裁唐晓蕾;赛灵思软件和人工智能高级经理罗霖
Vitis历经五年、投入总计1000个人工/年而打造。它构建在基于堆栈的架构之上,该架构可以无缝插入到开源的标准开发系统与构建环境,而且最重要的,是它包含一套丰富的标准库,这使得软件开发人员无需深入掌握硬件专业知识,即可根据软件或算法代码自动适配和使用赛灵思硬件架构。
同时,Vitis也不限制使用专有开发环境,而是可以插入到通用的软件开发工具中,并利用丰富的优化过的开源库,使开发者能够专注于算法的开发。换句话说,基于统一的XRT层,Vitis不但支持28纳米之后所有的器件,更是针对所有开发者的工具,软件开发者不了解RTL和I/O的使用,可直接调用Vitis;专注于AI研究的AI科学家可以只调用Vitis AI工具。
基础层是Vitis目标平台,该平台由电路板和预编程I/O构成。第二层称为Vitis核心开发套件,覆盖开源赛灵思运行时库,以管理不同域间的数据移动,包括子系统、即将发布的 Versal ACAP内的AI引擎和必要的外部主机。此外,该层也提供编译器、分析器和调试器等核心开发工具,其目的是能与业界标准的构建系统与开发环境无缝集成。
在第三层,8个Vitis库提供400余种优化的开源应用。这8个库分别是:Vitis基本线性代数子程序(BLAS)库、Vitis求解器库、Vitis安全库、Vitis视觉库、Vitis数据压缩库、Vitis计量金融库、Vitis数据库集和Vitis AI库。借助这些库,软件开发者可以使用标准的应用编程接口(API)来实现硬件加速。
Vitis平台的第4层,也是最具有变革意义的一层,是Vitis AI。它集成了特定领域架构(DSA),例如与GATK集成用于基因分析的Illumina、与ElasticSearch集成用于大数据分析的BlackLynx、以及当前客户正在使用的专有DSA。DSA提供了针对AI模型的硬件实现,开发者可以使用TensorFlow、Caffe等业界领先框架对其进行配置与编程。Vitis AI提供的工具链能在数分钟内完成优化、量化和编译操作,在赛灵思器件上高效地运行预先训练好的AI模型。此外,它也为从边缘到云端的部署提供了专用API,实现业界一流的推断性能与效率。赛灵思据称很快还将推出另一个DSA(Vitis Video),支持从FFmpeg直接进行编码并提供同样超级简单且功能极强大的端到端视频解决方案。
除此之外,赛灵思还在网站上免费提供文档、教程、开源库和应用案例,并发布了专门针对开发者的网站developer.xilinx.com,以架起开发者与专家之间的桥梁。
赋能软件开发人员
赛灵思软件和人工智能高级经理罗霖不同意外界对于Vitis的一些说法,“在Vitis推出之后,Vivado相对来说就会处于更低层次,主要用于对FPGA进行配置控制”即为一例。他回应称,Vitis和Vivado是相辅相成的,如果用一句话来描述,那就是“Vivado是用来做硬件,Vitis是用来做软件的。”对于硬件工程师而言,他们既可以利用Vivado设计套件继续为希望使用硬件代码进行编程的用户提供支持,也可以通过Vitis将硬件模块封装成软件可调用的函数,而且从本质上来说,这个函数也是由Vivado生成的,无非是预先设置好而已,便于提高工作效率。
例如在智慧城市的典型应用场景中,道路上的摄像头会在前端完成一些汽车和行人的特征提取工作,再将其上传至服务器或云端。在该应用开发里,嵌入式开发人员会基于底层的Shell/Runtime和上层的CNN加速库、数据分析和数据加速库来完成开发;算法卡法人员则基于Vitis平台进行Tensorflow模型训练,从而使得所有开发人员能够在统一平台上进行协同工作,提升群体的开发效率。
对软件开发人员来说,他们可以把整个模型算法完全依靠Python和C++在CPU上完成,这时候用Vitis可以达到每秒6帧的性能。但如果只是把AI模型的本身放在DPU中做加速,性能可以从每秒6帧提升到每秒30帧。如果性能还达不到需求,可利用Vitis库提供预处理优化,或是采用某些高级技巧,把性能从每秒30帧逐步提升至每秒80帧。在这一过程中,软件工程师不需要专门插入芯片间隙或者插入数据监测器来获取相关信息,Vitis可以通过详细的分析报告以友好的图形界面方式呈现。
既然谈到异构计算,那么特定域处理架构(domain-specific processing architectures)一定是一个无法绕开的话题,毕竟相当多采用特定域处理架构设计的芯片与FPGA一样,均采用了异构设计,两者有何不同?
罗霖对《电子工程专辑》表示,特定领域应用(DSA)可能来自AI、数据库、或者是金融分析等不同领域,对算法和硬件的需求差异极大,开发人员必须要结合器件本身的具体特点去定义DSA。在一个自动驾驶的案例中,客户A需要15毫秒的反应时间,赛灵思就根据VU30P器件和客户算法专门设计了定制化DSA;而面对需要对32通道视频输入做解码的客户B时,只需要针对已有的器件选型定制另一个DSA IP即可,这是自适应计算加速非常好的两个案例。
在回答与英特尔即将于今年第四季度推出的“One API”软件编程框架相比有何差异时,唐晓蕾回答称,无论是One AP还是Vitis所提出的软硬件协同优化,首先都证明“用软件去定义硬件”理念已经是业界的共识,必须要提供灵活丰富的硬件选择给软件工程师,方便他们用高层的API去调用底层的内容。但,“竞争对手是限制在自己的硬件平台上,而赛灵思的开放是双向的,这是两种完全不同层次开放之间的比较。”
Vitis真正的灵感
Vitis真正的灵感应该来自Xilinx在2018年XDF上推出的新型多核异构处理器Versal。Versal自适应计算加速平台(ACAP)整合了标量处理引擎、自适应硬件引擎和智能引擎以及前沿的存储器和接口技术,能为所有的应用提供强大的异构加速功能。不过,无论是在嵌入式应用还是在云服务中,成功使用任何FPGA的关键都是软件工具,要想使FPGA和Versal架构能够得到广泛采用,Vitis异常关键。
还记得赛灵思CEO Victor Peng在2018年初首次访华的时候就曾公开表示,虽然FPGA与Zynq SoC技术仍然是公司业务的核心,但赛灵思今后将不再仅仅是一家FPGA企业,打造“灵活应变的智能世界”将成为其领导下的公司未来愿景。该世界中,赛灵思将超越FPGA的局限,推出高度灵活且自适应的全新处理器及平台产品系列,为用户从端点到边缘再到云端多种不同技术的快速创新提供支持。从这一点来说,具备统一软件架构的Vitis和具备异构计算架构的Versal,显然成为了赛灵思完成新使命的不二载体,这也是为什么赛灵思愿意将Vitis进行开源和免费的原因。
“异构计算是大势所趋。但有异构计算需求的人往往都是软件工程师,我们希望通过Vitis去帮他们解决这种技术瓶颈,这是我们公司一个最大的愿望。”唐晓蕾强调说,在很多领域,创新速度已经超越了半导体设计周期。这意味着,当用户刚收到针对GoogLeNet优化的ASIC或GPU芯片时,GoogLeNet可能已经被新模型ResNet-50取而代之,硬件用户根本无法预测两年后会出现什么样的网络和算法。而目前市场上已有的处理器架构,CPU/GPU/ASSP都只能做到“可编程或自适应”,只有Versal 能够实现“可编程和自适应”。
罗霖的看法是,现在软件定义硬件的趋势已经不可阻挡,不过应用场景是高度碎片化的,不存在统一的标准和要求去定义所谓的场景。而客户需要的是一个生产效率高、灵活扩展性强的平台,可以根据实际应用和工作负载来自动优化软件、硬件和系统。Vitis软件平台的最大优势,是可以根据客户的软件来通过 Vitis平台生成高效率、定制化的硬件,满足其业务的需求。另外,Vitis也解决了统一云端与边缘计算不同场景下的代码部署问题,支持软硬件开发者更有效地利用所有可用的计算资源,从而大幅提高开发效率。
当然,如果从市场角度来解读,我们也不难理解赛灵思推出Vitis的背后原因。
截止2019年3月30日,赛灵思营收突破30亿美金大关,5G基础设施、汽车和数据中心是业绩大幅增长的三大驱动因素。虽然传统类型的FPGA在上述三个领域内都取得了出色的成绩,但新推出的Versal更像是一个可以独立运行的完整平台,而不仅仅是作为主处理器的加速器使用。也就是说,Xilinx认识到,把Vitis环境设计成可以支持包括Arm、x86和Power在内的多类型主处理器,是非常必要的。
数据中心的机器学习推理是关键应用之一。在这些数据中心中,算法不断变化,云服务提供商也在走向异构计算平台,比如Amazon的AWS云服务就有许多包括FPGA和GPU在内的异构计算单元。而在刚刚结束的XDF上,赛灵思还宣布获得了微软的Azure云服务供应商业务。
很难想象迄今为止赛灵思在汽车领域已经出货1.6亿颗芯片,他们接下来的目标就是在智能驾驶时代让汽车和机器“看见一切”。但这么做挑战极大,因为需要把所有的传感器,包括雷达、激光、摄像头、夜视等都融合起来,完成实时图像识别与分析,实现最高性能功耗比,还具有复用和扩展优势。此外,还要确保机器-机器间,机器与云端之间的任意互联,以及足够的安全性和保密性。但凭借设计灵活性和低延迟处理能力,FPGA在机器学习的推力加速方面是具备优势的。有报道称,日立汽车系统(Hitachi Automotive Systems)公司正在自己的Level 2+ ADAS系统中使用赛灵思FPGA芯片并有意继续使用Versal设计。
另一个需要自适应计算的领域是5G,这对从RF前端到核心路由均有布局的赛灵思特别重要。以大规模MIMO阵列中的16x16天线矩阵为例,为了能够实现光谱复用,就必须要能够通过先进计算和机器学习对波束形成进行优化,并针对不同应用场景实现自适应学习。
结语
所有这些关于芯片架构的新想法都是由于摩尔定律的放缓而产生的。当我们再也不能单纯依靠工艺改进来使芯片更快、更低的功率和更便宜时,就需要新的体系结构来提供先进处理功能以面对挑战性的工作负载。面对十倍于硬件从业者的软件开发人员,赛灵思这一独特的解决方案有望让更多主流程序员以更轻松的心态面对和使用硬件。