2020年11月,英特尔发布首款服务器独立显卡——SG1,标志着英特尔计算平台多元化的战略又迈出了新的一步,从处理器和集显大佬到独立显卡市场新秀,英特尔要如何构建生态呢?
在关于如何围绕新的硬件平台构建生态方面,非常关键的一部分就是oneAPI。oneAPI是一套编程模型,可以支持底层各种架构,不仅可以让开发者开发适用于多个架构的应用,也可以让原来围绕CPU做开发的人也能围绕GPU、FPGA以及各种加速器来开发应用。
英特尔数据中心级独立显卡的第一个典型场景
与独立显卡SG1同时发布的,还有一个基于至强和SG1的安卓云游戏系统架构,算是拿出了第一个独立显卡的典型使用场景,打破了Arm服务器才最适合承载安卓负载的固有印象。
上图安卓云游戏系统架构中使用了硬件架构和软件基础架构,处理器用的是至强,显卡使用的就是SG1,这套方案中,利用了独立显卡在云端完成了游戏的图形界面渲染,然后利用流媒体把它发布到终端。
ARM服务器厂商说起用例的时候,总会强调ARM跑安卓负载的优势,而在上图的案例中,至强处理器用容器技术跑起了安卓系统。英特尔架构、图形和软件集团副总裁兼中国区总经理谢晓清表示,英特尔在安卓的框架层和运行层都做了很多优化,提升了安卓容器化方案的密度。
这一方案有望在腾讯云上完成产品化。
腾讯先游云是腾讯游戏的内测平台,腾讯先游云游戏平台副总经理Allen Fang表示,在至强可扩展处理器和英特尔显卡提供了高密度、低延迟、低功耗、低TCO的解决方案,一个有两张显卡的服务器能运行超过100个游戏实例,包括《传说对决》和《王者荣耀》这类流行的游戏。
oneAPI:利用原有生态拓展新生态
随着机器学习人工智能的发展,计算架构多元化趋势势在必行,但如何让开发者和市场接受新的硬件平台也并非易事,好在英特尔在软件开发生态方面深耕多年,现在加入英伟达和AMD深耕多年的独立显卡市场,以差异化破局的希望便有赖于此。
英特尔是一家硬件业务为主的公司,但为了将硬件的性能发挥出来,在软件方面做了非常多的工作,英特尔架构、图形和软件集团副总裁兼中国区总经理谢晓清表示,英特尔多年来打造的软件生态是x86平台最大的财富。
对于用户来说,用户使用x86处理器用的不只是一块性能不断增强的芯片,更重要的还有不断优化的,不断与时俱进的软件。软件非常重要,底层驱动软件决定了硬件要如何被使用,基础架构层的软件则关系着系统的性能和效率,为上层软件创新打基础。
像x86这种软硬件生态会越来越强,这是不以任何人的主观意志而变化的。从根本上来讲,对于开发者来说,开发一个软件能给更多人使用,也就意味着可用的软件越来越多,对于普通用户来说,能用的软件非常多,这是生态发展的原动力。
x86生态从发展至今用了几十年时间,涵盖架构堆栈的方方面面。
如上图所示,英特尔在固件,在硬件驱动层,操作系统层,包括Linux社区、谷歌生态,在KVM虚拟化社区都有许多贡献,在最火热的容器项目Kubernetes方面,也都有非常重度的参与和贡献。除了开源生态,英特尔还有许多具有自主知识产权的软件产品。
以前的生态主要是围绕处理器而构建的,随着几年前收购的FPGA芯片产品线的加入,以及现在新的独立显卡Xe的发布,英特尔在原来基础上需要做更多工作,近年来在软件生态上最主要的动作就是发布了oneAPI。
上图架构中,英特尔将底层归纳为所谓的XPUs,紧随其上的是硬件抽象层,将新硬件的生态纳入到原有生态。
技术层面而言,英特尔希望开发者用oneAPI开发一次,就能将应用跨CPU、GPU、FPGA等多个硬件平台来运行,如果未来还有什么新的硬件架构,oneAPI也将提供异构支持,能与时俱进。
2020年英特尔先是发布了oneAPI的规范,12月,英特尔将发布oneAPI的Gold版本,发布了一个叫DPC++的编译器以及对应的类库和工具包,用全新的DPC++(Data Parallel C++,C++的一个扩展)语言来开发异构平台软件,不过,目前,只支持跨CPU和GPU两个平台。
谢晓清介绍说,oneAPI编程环境友好,编译器、系统都经过了高度优化,开发模式非常快速高效。另外,DPC++的语法特性与开发者熟悉的语言C和C++有很多相似之处,学习成本非常低。
不过,英特尔在oneapi.com官网上也写道,跨平台开发的软件如果想要运行效率更高,也还是需要大量调优工作的,并不是说用oneAPI开发的应用,在CPU上运行的好,在GPU上也能一样好。
跨平台的需求多吗?市场会接受吗?
首先,从开发的角度看,跨平台的需求有很多,跨平台方案本身并不新鲜。
包括Java、C#、Python等各种语言开发框架都有跨平台的设定,都有一个“一次开发,到处运行的构想”,但以往这种跨平台方案中都是以牺牲性能换开发效率的问题,很期待作为硬件大佬的英特尔开发的oneAPI在异构开发上的性能表现。
其次,从用户角度看,用户希望应用能运行在多种架构上,能利用多种多样的资源,比如机器学习场景中,训练的时候用GPU和加速器多一些,在推理的阶段用CPU多一些,异构的需求越来越普遍。
以Tensorflow为例,在实际训练中Tensorflow主要是用GPU,CPU更多是用作推理阶段,也就是说要谷歌至少维护两个版本的Tensorflow,实际上,谷歌还开发了能运行在树莓派、手机等多种设备上的Tensorflow版本。
如果Tensorflow都基于oneAPI来开发的话,开发效率会有很大提高。在oneapi.com官网上,谷歌表示现在只在至强处理器上用oneAPI,期待未来在更多平台上用oneAPI。
英特尔大数据技术全球CTO、大数据分析和人工智能创新院院长戴金权分享了AI软件栈和生态的图(上图)。向上看,oneAPI通过包括oneDNN、oneDAL、oneCCL等类库来支持AI/ML框架。向下看,oneAPI能利用各种XPU硬件,包括CPU、GPU以及各种加速器资源。
Analytics Zoo是一个统一了大数据和AI的开发平台,能将各种常见的机器学习框架分布式地扩展到很大规模,底层能利用CPU、GPU等各种计算资源,支持各种常见的机器学习和大数据开发框架,oneAPI在其中扮演着关键作用。
Analytics Zoo是英特尔开源的一个方案,将当下最热的大数据和AI技术生态嫁接到了英特尔至强、英特尔Xe显卡以及加速器支撑的硬件平台上,Analytics Zoo能帮助企业快速构建端到端的数据分析加AI的一整套方案,解决从数据收集、数据预处理、训练到模型部署的所有问题。
通用计算负载时代,x86可谓是一统江湖,但在机器学习的大背景下,国内外出现了数不清的专用AI加速器,异构计算势在必行,oneAPI则是英特尔顺应变化、应对变化的大招。