首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

揭秘oneAPI:英特尔在超异构计算时代的软件愿景

以数据为中心的时代,多元化的计算需求和多样化的计算场景对传统架构提出了新的挑战,旧有的异构计算难以在AI环境中让行业应用达到计算最优化。摩尔定律的放缓表明仅靠在晶体管密度上做文章并非长远之计,如何满足现代工作负载在复杂场景、多任务并行、多架构组合的有效协同,将是实现指数级创新的关键所在。为此,英特尔提出了横跨标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)的超异构计算,而支持这一愿景的必备要素就是要有统一的开发工具组合和软件接口,使得开发人员在CPU、GPU、FPGA、AI加速器等计算架构上“高效开发 任意扩展”,这就是oneAPI的使命。

“oneAPI既是一种行业规范,同时又是英特尔的一种产品。它可以简化并且统一跨不同架构、跨不同厂商之间的编程,它是一个鼓励社区和行业支持的一种开放、标准的解决方案。”在英特尔软件战略与技术沟通会上,英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理Bill Savage首次对oneAPI进行了详细解读。具体来说,oneAPI可以分为两个部分,其一是跨架构的编程语言,其二是跨架构库的集合,相对应的支持直接编程和API编程,通过统一的语言和库,在包括CPU、GPU、FPGA和AI加速器等不同硬件上,提供完整的本地代码性能。

英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理Bill Savage

事实上,不同开发框架之间的性能表现、兼容性,以及学习成本一直是影响开发效率的主要因素之一,复杂的开发环境、无法同步更新的框架导致开发者会花费不少精力去自行解决问题。如果更深一层,会看到像数据科学家、应用开发者对硬件知识并没有那么了解,此时就需要在硬件架构之上、框架和中间件之下有一套集成库的开发工具。与此同时,这个工具还要能够跨架构使用,而非局限在GPU或者某一类专用硬件,因此编程语言的开放才会有广泛适用性。

oneAPI是什么?

“oneAPI始于硬件架构,如今的(计算)架构并不只局限于CPU,当然CPU仍然是最为用途多样和最为广泛的一种架构,但是我们还有GPU、FPGA以及专用的AI芯片。这些分别对应着标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)的不同计算架构,我们称之为‘SVMS’架构。”Savage介绍称,oneAPI可以从软件层面来简化和统一标量、矢量、矩阵和空间的不同硬件架构。根据英特尔的表述,oneAPI跨SVMS架构统一并简化了编程模型,为开发者带来更高的生产效率和毫不妥协的性能。算力是AI时代的生产力,Summit对神经网络模型的仿真训练代表着HPC与AI走得愈发紧密,性能表现成为了左右开发的胜负手。

对于oneAPI来说,无论是高级的编程语言还是架构库,都把性能放在高优先级。而从实用性的角度来看,oneAPI会提供参考产品,除了语言和库方面的规范,英特尔还会为其开发包括Debug、分析以及支持等方面的各类工具。从Altera的FPGA到Nervana的AI处理器,再到英特尔的传统优势项目CPU,以及即将到来的独立GPU “Xe”,英特尔所覆盖的广泛的计算架构使得其积累了不同架构的设计、开发和使用经验,为它们相互之间的有效整合,达到计算最优化、编程最简化奠定了基础。

或许是因为英特尔在半导体领域的地位过于强势,外界常常忽视其在软件和开源领域的成绩。在该公司,拥有超过15000名软件工程师,软件布局横跨数据中心基础设施、操作系统、产品开发、ISV、工具/SDK、云计算、物联网、AI、HPC、边缘计算等领域。正因有如此大的投入,才看到了英特尔在行业中拥有性能领先的C++编译器和VTune Amplifer分析器、排名第一的数学函数库等等,跨架构的硬件加上耕耘多年的软件是oneAPI的信心来源。

在Savage看来,oneAPI既是一款产品,又是一个开放的规范,后者可以让其走得更远,“我们所讲的跨架构库也是一种开放的标准和规范,其他的厂商同样可以使用。oneAPI鼓励行业以及社区的支持,对于软件开发者来讲,oneAPI的好处是使得他们能够跨不同架构,以及不同厂商去使用源代码、使用各种库代码。他们可以更多地重复利用代码,降低开发成本。oneAPI是一个开放的行业规范,也是进行开放实施的,为大家提供除了英伟达CUDA之外的另一种选项。”

重构从编程语言开始

通常,跨架构的编程会用到不同的工具和编程语言,如果企业没有一个掌握多种“跨界”语言的技术团队,那么就只能依靠多个团队之间的协同作业,实际编程的过程中往往费时费力。为了解决这一问题,英特尔在设计oneAPI时首先想到的就是开发一种全新的直接编程语言——Data Parallel C++。“要想为这些平行架构进行编程,对于我们来讲非常重要。C++这种语言本身缺乏了一些并行的语言的特征,所以它使得这样的目的很难实现。但是有一些语言就像MATLAB,可能更多集中在顶层,如果想在底层得到很好的性能是很难的。”英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan说。

英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan

她认为,尽管英伟达发明了一种语言CUDA,能够进行平行架构的编程,可以把负载转移到加速器,但是这种语言专门用于英伟达的硬件,其他人如果没有相应的规范就无法实施和编译,其他语言像OpenCL虽然能实现类似性能,不过社区支持和活跃度限制了它的发挥。因此,英特尔需要开发一种全新的语言。跨架构、高性能、开放性,是Data Parallel C++的三个关键词。

跨架构方面,数据中心在进行异构计算时要满足并行和加速的需求,SVMS架构下的编译器或者说运行工具可以将N个独立计算映射到数据并行硬件上,重新编排后就可以直接调用几乎所有的硬件架构;高性能方面,以C++编译器为基础,英特尔将矢量化、SPMD、细粒度SPMD三种技术思路融会贯通,使其将复杂割裂的独立计算编译为有序结构,优化了性能表现;开放性方面,英特尔扩展了使用文档并开放给社群,同时基于LLVM和Clang启动了在GitHub上的项目,开发者可以在英特尔-LLVM子类中的SYCL找到编译器信息和新特性。

为了让开发者可以平滑过渡到DPC++,英特尔在设计之初就考虑到了与CUDA的语言相近性,使得开发人员的学习取消可以大幅降低,并且在今年第四季度上线oneAPI Beta版本的时候,还会通过更多的工具让开发者迁移起来更加便捷。Alice Chan谈到:“这个全新编程语言的目的就是要实现跨架构、高性能,针对所有软件开发者开放,针对所有的硬件厂商开放。”据了解,已经有不少硬件厂商准备利用oneAPI进行相关架构的开发工作。

助力AI的强劲燃料

要想实现高性能的跨SVMS架构表现,除了编程语言本身的优化编排,基于硬件的适配加速也至关重要,再强的AI芯片都要有软件的配套支持。对于数据科学家和算法工程师来说,他们需要调用TensorFlow、PyTorch、MXNet这些框架进行开发,框架的开发者则需要库的资源。oneAPI集成的就是各类计算库,包括数学函数库MKL、使用经典机器学习算法的英特尔数据分析加速库DAAL,以及面向深度神经网络的英特尔数学核心函数库MKL-DNN等,让框架之上的开发人员不必将过多精力放在硬件上。

“在AI和数据分析上,我们的愿景是提供最佳的计算库,并且针对这些计算库,把英特尔的硬件变成一个对开发者非常容易的抽象,使得他们所有的工作能够重复利用、更简化。”英特尔架构、图形与软件部首席工程师Eric Lin说,“英特尔在库上的时候就试图把硬件能力抽象出来,把最重要的算法变成API,使用者不用自己针对硬件再去开发,用这个API就可以把硬件所有潜力发挥出来。”通过把这些库集成到框架中,借助框架为数百万的数据科学家、算法工程师所使用,由硬件到应用的道路就此打通。

英特尔架构、图形与软件部首席工程师Eric Lin

开发者既可以将DPC++与库配合使用,也可以各自独立调用,都能享受到英特尔为各种AI场景所做的优化。例如,MKL-DNN是专为在英特尔架构上加快深度学习框架的速度而设计的,包含了高度矢量化和线程化的构建模块,支持利用C和C++接口实施卷积神经网络,任何调用该接口的开发者都能在各类英特尔的硬件上得到库优化,省去了SIMD、SPMD等等所带来的硬件复杂性。再如DAAL,即使是单行代码就能透过Python接口接入系统获得跨节点和高弹性,从而实现大规模的工业化部署。

除了计算最优,oneAPI还借助OpenVINO解决了“使用最简”的问题,能够在异构环境中允许开发者用统一的API、只写一次程序/编译,即可跨硬件平台加速深度学习的开发,帮助开发者把训练好的模型部署放到目标平台上加强推理性能,为此OpenVINO的模型优化器对主流的深度学习框架都进行了专门的适配。目前,oneAPI已经与百度的Paddle Paddle、Facebook等企业进行了合作,如Facebook绝大部分的AI业务都在使用英特尔优化过的PyTorch来支撑,内容推荐引擎Toboola通过在至强可扩展处理器平台上使用oneAPI的优化,在业务表现上有着2.5倍的提升。

结语

2018年,英特尔营收首次突破700亿美元,连续三年营收创下新高,以数据为中心的业务占比达到48%。为了迎接到2022年3000亿美元规模的以数据中心的市场,英特尔提出了六大技术支柱战略,即制程和封装、架构、内存和存储、互连、安全、软件,其中软件的重要性被提升到了前所未有的高度,而oneAPI就是软件战略迈出的关键一步。“我们对oneAPI的未来预期是非常高的。”Savage满怀信心地说,“行业需要这样一种开放的、性能卓越的,对现有解决方案的替代选择。英特尔与竞争对手不同,我们致力于向多样的架构提供支持,而我们的竞争对手只对一到两个专用架构感兴趣。我们要所有架构都能被支持,并且它们可以很好地相互协作。”

(7263719)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190905A0JI7D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券