英特尔oneAPI:六脉神剑里的跨界“软”实力

2019-08-30 12:00:15 来源: 互联网
今年年初,英特尔在先进技术方面强调了六大支柱,包括制程和封装、架构、内存和存储、互连、安全、软件。在这六脉神剑中,软件的重要性愈加突出,特别是在帮助开发者群体面向未来的软硬件方面,英特尔开发了一款软件工具oneAPI,将于今年第四季度推出。

据英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理William (Bill) Savage介绍,oneAPI始于硬件架构,是底层开发工具。在当今的数据中心里面,架构不只局限于CPU,还有GPU、FPGA以及专用的AI芯片。这些分别对应着标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)的不同计算架构,我们称之为SVMS架构。

图:英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理William (Bill) Savage
 
 
oneAPI是一种统一的软件架构,它能够跨不同的架构和厂商,包括除英特尔之外的其他硬件厂商。oneAPI可以在软件层面简化和统一标量、矢量、矩阵和空间的不同硬件架构。

oneAPI主要包含两部分,第一是跨架构的编程语言,很多不同的架构以及厂商都可以使用,第二、能够满足不同领域需求的跨架构库的集合。无论是高级编程语言,还是架构库。

oneAPI是开放的,同时,它有实施参考,以便其他实施者根据参考来进行实施。除此之外,跨架构库也是一种开放的标准和规范,其他厂商也可以应用。所以,oneAPI是一套开放的行业规范,它鼓励行业以及社区的支持。对于软件开发者来讲,oneAPI的好处是使他们能够跨不同架构和不同厂商去使用源代码,以及各种库代码。鼓励他们更多地重复利用代码,以降低开发成本。因此,oneAPI为大家提供除了英伟达CUDA之外的另一种选项。

oneAPI是基于英特尔至强系列处理器的,它是在单一架构基础上演变而来的,可以支持多架构。同时,英特尔对于多种不同架构有很多经验,对oneAPI有很好的支持作用。首先,在CPU的创新方面拥有大量的经验。另外,还有来自于英特尔收购的Altera,可提供FPGA,以及Nervana的AI处理器。

行业中的软件非常多,软件开发者也特别多,有数百万的开发者在最上层创造非常多的应用,这些应用开发者所使用的大量中间件以及框架来自数万的中间件开发者。oneAPI的编程语言与库的使用是在中间件和框架以下的底层,是最接近硬件的这一层,它会对整个软件堆栈产生更大的影响。

 
新的编程语言DPC++

为了让oneAPI更加易用,英特尔正在开发一种新的编程语言Data Parallel C++(DPC++)。

数据中心有大量的多元化硬件架构,如果你希望在这样一个多元化的不同架构当中进行编程,需要多种不同工具以及不同语言,这就意味着在软件开发过程中需要多支团队,他们各自要去学习很多不同专业的技能,这显然不是一种最高效的软件开发方式。

英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan表示,我们希望改变这种现状,并不仅仅是为了英特尔自己的硬件去改变,而是为全行业去改变。

 
图:英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan
 
 
有一些语言是大家耳熟能详的,例如C++,它是可移植的,而且是在底层性能非常好的语言。但C++缺乏一些并行的语言特征。还有一些语言像MATLAB,可能更多集中在顶层,如果你想在底层得到很好的性能是很难的。英伟达发明了一种语言CUDA,它能够进行平行架构的编程,可以把负载转移到加速器,但是这种语言是专用的,只能用在英伟达自己的硬件上。还有其他一些语言,例如OpenCL也能实现类似性能,但是围绕它的社群活跃度,以及行业对他的认知度并不高,很难获得你想表现的性能。这就是为什么英特尔需要开发一种新的语言。

Alice Chan表示,我们这个全新编程语言的目的就是要实现跨架构、高性能,同时保证是开放的,针对所有软件开发者开放,针对所有的硬件厂商开放。我们有世界领先的C++编译器,知道哪些东西如何编译。我们所做的是使用底层虚拟机按照这种格式进行编译。其实我们只有为数不多的可选的技术,将N个杂乱的不同的独立计算整理好,变成有序的结构。我们有几种技术,包括矢量化、单程序多数据(SPMD),还有细粒度SPMD,不同的方式使用编译器,将你的计算编译成有序的结构。其实,很多技术并不是什么新科技,DPC++语言将上述三种技术的思路融会贯通。DPC++能够跨结构实现毫不妥协的性能所需的特性和抽象。

DPC++是建立在标准上的。C++是所有人都耳熟能详的,它是一个国际标准。SYCL本身也是一个标准,是建立在C++基础上的,它拥有我们寻求的一些特性,比如并行计算以及异构计算。但是它们现有的特性是不够的,所以英特尔在此基础上开发新特性,来确保实现预期的性能。

Alice Chan表示,我们的目标就是将DPC++提供给所有不同的硬件架构,并且保证它的开放性。对于CUDA来讲,现在你完全不知道语言怎么实施的,我们希望能够避免这种现象。
   
基于库的战略

对于开发者来说,oneAPI包含语言编程,还有库编程。英特尔架构、图形与软件部首席工程师Eric Lin则介绍了oneAPI基于库的战略。

Eric Lin表示,在AI和数据分析上,我们的愿景是提供最佳的计算库,并且针对这些计算库,把英特尔的硬件变成一个对开发者非常容易的抽象,使得他们所有的工作能够重复利用、更简化。

 
图:英特尔架构、图形与软件部首席工程师Eric Lin
 
 
首先是计算库。SVMS有各种不同的架构。很多公司都有自己的芯片战略,如华为、阿里、百度等等,还有非常多的AI初创公司。它们做出来芯片后,如果没有软件,就没有办法使用。英特尔在库上试图把硬件能力抽象出来,把最重要的算法变成API,使你不用自己针对硬件再去开发,用这个API就可以把硬件所有潜力发挥出来。

英特尔的策略是把库集成到框架中,框架再提供给数百万数据科学家、算法工程师,他们使用它开发出真正的应用。一个库服务数万个框架开发者,服务数百万甚至更多的数据科学家。从硬件到应用这条路就打通了。

oneAPI有几个库。第一个是英特尔数学核心函数库(MKL),它提供了很多数列变换、矩阵计算、解方程,各种积分、微分、数学公式都在里面。

第二个库是英特尔的数据分析加速库(DAAL),它实现经典的机器学习算法。DAAL有两个主要设计点,第一是非常容易使用,基于Python接口,单行代码就可以注入到你所使用的任何系统中去。另外,它是跨节点的,有非常好的伸缩性。

第三个库,是面向深度神经网络的英特尔数学核心函数库(MKL-DNN)。这个库自动对各种英特尔的硬件优化。所有库都针对各种英特尔的硬件进行优化。任何人只要实现了这个接口,设计了新的芯片,都可以从库里获得优化。这是一劳永逸的,因为它把硬件的复杂性遮蔽掉了。

Eric Lin表示,除了库以外,我们还要数据科学家使用,还给所有开发者提供了方便。

那怎么样让这个工作流程中的所有开发者、参与者更有效率呢?第一,通过库把硬件抽象出来,很多做推理训练框架的人可以直接用这个库,实现库中的数学公式。然后把这些能力通过各种架构提供给数据科学家和应用开发者,开发者看到的抽象是他们熟悉的抽象,也就是数学公式,他们不熟悉的抽象是各种硬件,这就简化了数据科学家的工作。第二,对于部署者来讲,使用了推理引擎,使他们的工作更加容易。

对数据科学家来说,将来英特尔的任何产品也会一样使用完全相同的程序结构,你不用改程序,就能自动获得所有支持oneAPI的硬件,可以直接用。只要你的硬件和oneAPI标准一致,所有针对架构优化的程序就自动对你的硬件进行优化,就能把硬件最好的性能释放出来。如果没有oneAPI,自己写程序非常困难。

据悉,已经有很多厂商使用了oneAPI。比如在百度的Paddle  Paddle上,还有与Facebook的合作,Facebook绝大部分的AI业务使用了英特尔优化的PyTorch,用以支撑他们每天的业务。
    
 
责任编辑:sophie
半导体行业观察
摩尔芯闻

热门评论