科技界被一个“快”字裹挟很久了。更高的生产效率和毫不妥协的性能,成为任何一家科技公司的追求。
随着迈入以数据为中心的时代,我们看到的
不仅是数据量的爆发,更是有数据形态的巨大变化:从传统的文本、图形数据,到现在的视频、音频、社交等非结构化数据,未来还有包括联网汽车数据、神经网络数据、基因数据等更多形态的数据。
这种海量数据的多样性,首先对计算能力提出了巨大的挑战,由此带来了数据处理方式和计算架构的延伸。
未来十年我们将看到比过去五十年中多得多的架构。
与此同时,
软件的重要性被提到了前所未有的高度。英特尔曾提出,对于全新硬件架构的每一个数量级的性能提升潜力,软件能带来两个数量级的性能提升。
为了简化编程流程、提升效率,英特尔于
去年12月宣布推出oneAPI项目,并将于今年第四季度发布开发者测试版本。日前,<电子发烧友>在英特尔的沟通会上,率先了解了oneAPI的技术细节和战略意义。
oneAPI:跨架构、跨厂商,向全行业开放
在解决计算问题时,过去几代产品的答案几乎一直是晶体管密度,并且摩尔定律发挥主导作用。但随着制程节点发展速度相较于过去几十年呈现出减缓的态势,现代计算又提出更多更新的需求,需要结合晶体管、架构研究、连接性提升、更快速的内存系统和软件等众多因素,共同推动创新。
“
oneAPI既是英特尔的一种产品,同时又是一种行业规范”, 英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理Bill Savage介绍,“oneAPI是从软件层面来简化和统一跨SVMS架构的创新。它可以
简化并且统一跨不同架构、跨不同厂商之间的编程,是一个鼓励社区和行业支持的一种开放、标准的解决方案。”
英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理Bill Savage
英特尔产品覆盖的计算架构包括
标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial),分别主要应用于CPU、GPU、AI加速器和FPGA产品。英特尔指出,在接下来五到十年中最重要的现代工作负载,就是这种标量、矢量、矩阵和空间架构的组合,英特尔称之为
SVMS架构。
为什么底层接口如此重要?Bill Savage表示,数百万的开发者在最上层创造越来越多的应用,他们所使用的大量中间件以及框架来自数万的中间件开发者。
oneAPI在最接近硬件的底层,对整个软件堆栈会产生更大的影响,针对硬件使用统一接口,对软件开发者来讲这也是一个很好的价值主张。
oneAPI所能发挥的价值在于——通过跨CPU、GPU、AI加速器和FPGA产品架构,统一并简化编程,被广泛的生态系统采用,为开发者带来更高的生产效率和性能。
全新编程语言DPC++专门针对多元化架构
在一个多元化的架构中进行编程的话,很可能需要多种不同工具以及不同语言。这就意味着在软件开发过程中需要多支团队,他们各自要学习很多不同专业的技能,
这显然不是一种最高效的软件开发方式。
在oneAPI项目中,英特尔携手行业开发了一种叫做
Data Parallel C++(DPC++)的全新语言,以支持
实现横跨SVMS架构的数据并行编程。这是一种基于标准的开放式跨行业语言,可替代单一架构专有语言。
为什么需要一种全新的语言呢?毕竟这个世界上已经有这么多语言了。英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan指出,
现有的众多语言各有局限所在:例如众所周知的C++,它虽然是可移植的,而且底层性能非常好,但是本身缺乏了一些并行语言的特征,很难很好地用于并行架构;MATLAB更多集中在顶层,如果想在底层得到很好的性能较难;英伟达的CUDA能够进行并行架构的编程,也可以把负载转移到加速器,但是它只能用在英伟达自己的硬件上;还有其他语言例如OpenCL也能实现并行编程,但是围绕它的社群和整体行业的活跃度并不高。
英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan
那么,英特尔如何确保DPC++能够如预期一样发挥出最佳性能?70年代Cray就做到了矢量化,90年代的时候超算也做到了单程序多数据(SPMD),2006年英伟达推出CUDA语言的时候就提出了细粒度的SPMD。现在,
DPC++语言将上述三种技术思路融会贯通,使用底层虚拟机按照有序的结构进行编译。据了解,英特尔开始这个项目已经有一段时间了,目前试验证明性能至少是优于或者等同于之前的这些技术和方式的,
DPC++能够跨结构实现所需的特性和抽象。
高性能库如何推动人工智能的发展?
人工智能的发展进一步推动了对算力的渴求,硬件架构的世界已经发生了极大的颠覆,英特尔自身就有SVMS架构,华为、阿里、百度以及非常多的AI初创公司各有自己的芯片战略。
对此,英特尔架构、图形与软件部首席工程师Eric Lin表示,没有软件芯片无法使用,需要大量的开发者去将它表达为用户真正所需。这其中需要非常深厚的经验,英特尔希望
将硬件能力抽象出来,把最重要的算法融于oneAPI,使开发者不再需要针对硬件做开发,更容易发挥出硬件的所有潜力。这是英特尔提供计算库的根本原因。
英特尔架构、图形与软件部首席工程师Eric Lin
有了这个计算库之后,能够提供给更多的框架开发者所使用,例如TensorFlow、 PaddlePaddle、MXNet等等。由于框架主要是给数据科学家所使用,他们往往缺少硬件知识,英特尔的策略是将计算库集成到框架中,再提供给数百万数据科学家、算法工程师,达到为开发者屏蔽硬件复杂性的目的。
由此看来,一个计算库服务数万个框架开发者,服务数百万甚至更多的数据科学家,
打通了从硬件到应用的道路。
oneAPI集成的计算库堪称业内“豪华配置“,包括快速、使用广泛的数学函数库MKL、使用经典机器学习算法的英特尔数据分析加速库DAAL,以及面向深度神经网络的英特尔数学核心函数库MKL-DNN等。
OpenVINO——oneAPI在深度学习方面的“小现实”
对于深度学习来说,数据分析过程基本包括四步:第一,获取数据;第二,建立数学模型,并且用这些数据去训练;第三,根据部署场景有针对性地优化模型;第四是推理,真正地让各种各样的开发者,把他们的服务、产品推向用户。如何让这个工作流程的所有开发者、参与者更有效率,是英特尔当前的重点之一。
去年8月,英特尔面向中国市场推出了
专注于加速深度学习的OpenVINO工具包,能够帮助企业
在边缘侧快速实现高性能计算机视觉与深度学习的开发。作为为客户解决问题的优化推理引擎,OpenVINO补充了深度学习框架,支持应用程序开发者以统一接口跨SVMS架构进行开发。据Eric介绍:“OpenVINO就是目前的一个商业部署,它所做的事情就是让开发者直接用一个统一的API,帮开发者完成简单的开发、简单的维护、并带来高性能,它展示了oneAPI愿景的现实。”
在没有OpenVINO之前,开发者如何进行部署?以英特尔自己为例,各种各样的库,有针对CPU的、显卡的、计算棒的、FPGA的……每一次开发的时候,各个库API不一样,性能调优不一样,Debug不一样,数据的预处理不一样,开发成本非常高。OpenVINO实现了无论是哪种类型的硬件,让开发者用一个统一API。
根据已公布的应用来看,
云从的人脸识别智能设备、
中科英泰的智能零售方案、
阿里巴巴在AliOS 互联网汽车道路感知算法优化方面、
宇视科技的全融合智能解决方案UniAI等,都基于OpenVINO工具包。
对标英伟达CUDA?
NVIDIA公司于2007年正式发布的CUDA(Compute Unified Device Architecture,统一计算架构),是第一种不需借助图形学API就可以使用类C语言进行通用计算的开发环境和软件体系,是建立在GPU基础之上的通用计算开发平台。由于在性能、成本和开发时间上较传统的CPU解决方案有显著优势,当时在学术界和产业界引起了热烈反响。现在,CUDA已经在金融、石油、天文学、流体力学、信号处理、电磁仿真、模式识别、图像处理、视频压缩等领域获得广泛应用,并取得了丰硕的成果。
oneAPI的推出,似有异曲同工之妙。对此,Bill Savage表示,
oneAPI开放给所有包括英伟达在内的硬件厂商,行业也需要这样一种开放的、对于现有解决方案之外的另一种选择。英特尔致力于向所有的、多样的架构来提供支持,使它们能够很好地一起协作。
英特尔已对DPC++一些开源项目在GitHub上进行托管,但一个显然存在的问题是,GitHub一些开源项目都是基于原有的如英伟达的GPU而实施,如果现在用oneAPI,开发者将会面临重新学习的问题。对此,Bill Savage表示,英特尔在设计DPC++的时候,
语言本身已经和CUDA非常接近,对于开发人员来讲学习相对比较容易。至于程序员的迁移问题,英特尔
会在年底发布测试版本的时候分享更多工具,来帮助迁移更容易。