廖陆春
oneAPI既作为一种规范,同时也是英特尔的一种产品,它可以简化并且统一跨不同架构以及不同厂商之间的编程,它是一个鼓励社区和行业支持的一种开放、标准的解决方案。
近期,在北京举行的英特尔软件战略及技术沟通会上,英特尔介绍了软件项目“oneAPI”的最新进展。英特尔将在2019年第四季度发布一个oneAPI开发者测试版本,并披露更多项目相关细节。该项目旨在提供一个统一的编程模型,以简化跨不同计算架构的应用程序开发工作。英特尔架构、图形与软件部副总裁兼计算性能及开发者产品部总经理Bill Savage介绍说:“oneAPI项目将为开发者带来一套能提供一个统一编程模型的工具。针对跨多种架构的工作负载,这个模型简化了相关的开发工作。目前,英特尔广泛的计算产品组合目前已经包含专用加速器,我们提供的软件解决方案将帮助开发者们充分释放硬件性能。”
oneAPI始于硬件架构
随着当今世界以数据为中心的工作负载日益多样化,处理数据的架构也日益多样化。英特尔广泛的计算架构覆盖标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)。这种在英特尔缩写为SVMS的架构,需要一个高效的软件编程工具来充分释放其性能。one API的简单易用和高性能满足了这个需求,同时不再需要维护不同的代码库、多种编程语言以及不同的工具和工作流程。oneAPI支持直接编程和API编程,并将提供统一的语言和库,可以在包括CPU、GPU、FPGA和AI加速器等不同硬件上,提供完整的本地代码性能。
oneAPI基于英特尔的经验以及现有的至强系列产品,从单一架构基础上进行演变,支持多架构。同时,英特尔对于多种不同架构都有很多经验积累,这也成为oneAPI背后的支持。“对于软件开发者来讲,我们拥有性能最好的分析器VTune Amplifer,我们在此基础上建立了英特尔的oneAPI产品。”Bill Savage说。
oneAPI既作为一种规范,同时也是英特尔的一种产品,它可以简化并且统一跨不同架构以及不同厂商之间的编程,它是一个鼓励社区和行业支持的一种开放、标准的解决方案。此解决方案包含两部分:第一部分是跨架构的编程语言,它使不同的语言、不同的架构,以及厂商都可以使用;第二部分是能够满足不同领域需求的跨架构库的集合。“无论是这种高级的编程语言,还是架构库,重点都放在性能上,因为在数据中心里面提供全面的性能是重中之重。”Bill Savage如是说。
直接编程语言Data Parallel C++
Data Parallel C++是英特尔现在正在开发的一种新的语言,它是开放的、基于标准的、高性能的,并且,能够跨不同的硬件架构提供高性能。Data Parallel C++的目标是能够将它提供给所有不同的硬件架构,并且保证完全的开放性。
多元化架构需要全新的编程语言,现有的C++、MATLAB等可移植编程语言和CUDA、OpenCL等数据并行编程语言,都无法满足需求。英特尔正在与行业携手开发一种全新的语言,支持实现横跨SVMS架构的数据并行编程。Data Parallel C++语言能够跨SVMS架构为英特尔和行业提供毫不妥协的高性能和生产效率。Data Parallel C++是一种基于标准的开放式跨行业语言,可替代单一架构专有语言。
数据中心拥有大量的多元化硬件架构,如果想在一个多元化的不同架构中进行编程,需要很多种不同的工具和不同语言。面对这种情况,软件开发过程中需要多支团队,他们各自要去学习很多不同专业的技能,这显然不是一种最高效的软件开发方式。“英特尔希望改变这种现状,所以英特尔开发了Data Parallel C++这种新语言,Data Parallel C++能够跨结构实现毫不妥协的性能所需的特性和抽象。”英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan介绍说。
高性能库推动人工智能和数据分析的发展
oneAPI集成了业内顶级的计算库,包括最快速、使用最广泛的数学函数库MKL、使用经典机器学习算法的英特尔数据分析加速库DAAL,以及面向深度神经网络的英特尔数学核心函数库MKL-DNN等,充分了解底层硬件如CPU和加速器的所有细节,并为硬件提供最佳性能。“one API面向数据科学家和应用开发者提供跨SVMS架构的统一软件抽象,让所有开发者可随时获取高性能。”英特尔架构、图形与软件部首席工程师Eric Lin谈道。
在AI和数据分析上,英特尔的愿景是提供最佳的计算库,并且针对这些计算库,把英特尔的硬件变成一个对开发者非常容易的抽象,使得他们所有的工作能够重复利用、更简化。Eric Lin说:“我们也会提供工具、方法,使得我们的部署者真正地从oneAPI中获益。”
英特尔在库上试图把硬件能力抽象出来,把最重要的算法变成API,使用者不用自己针对硬件再去开发,用API就可以把硬件所有潜力发挥出来,这就是英特尔提供的高性能库。
“我们的策略是把英特尔的库集成到框架中,框架再提供给数百万数据科学家、算法工程师,他们使用它开发出真正的应用,从硬件到应用这条路就打通了。”Eric Lin谈道。
英特尔oneAPI有几个最重要的库。第一个是英特尔数学核心函数库(MKL),它里面提供了很多数列变换、矩阵计算、解方程,各种积分、微分、数学公式都在里面,它已经被世界上45%的超级计算机使用,只要是采用英特尔架构的都在使用英特尔的MKL。第二个库是英特尔的数据分析加速库(DAAL),它实现经典的机器学习算法。深度学习是机器学习的一个子类,整个机器学习实际上就是寻找一个函数,并且找到它的参数,需要大量的数据才使得这个函数能够做最佳拟合。第三个库是面向深度神经网络的英特尔数学核心函数库(MKL-DNN),英特尔把深度学习的一些关键元素抽象出来,并且提供给开发者。“所有英特尔的库都针对各种各样的英特尔的硬件进行优化。任何人只要实现了这个接口,设计了新的芯片,都可以从库里获得优化。”Eric Lin介绍说。
oneAPI在英特爾的AI和数据分析上布局,库是给一些非常愿意优化底层的人提供的抽象,未来,优化的架构向很多的数据科学家提供抽象,使他们的工作更加容易,帮助他们完成简单的开发、简单的维护并带来高性能。