回顾过去35到40年间计算的发展历程,计算力的增长速率呈指数级上升,从万物数字化、万物互联、万物移动化到万物云化,当前进入万物智能化。
在pc时代,互联网用户增长了十亿人。硬件和软件结合的典型例子就是pc上x86架构和windows系统的结合。
进入移动化时代,从10亿的互联网用户增长到100亿的设备,呈现10倍的增长。硬件和软件的结合也发生了变化,变成了arm架构和ios及android操作系统,同时linux系统和x86平台也占据一部分市场。从10亿到100亿,实现的是指数级的增长。
进入以数据为中心的时代,异构计算也随之出现。
以往cpu、gpu、fpga等,均可以独当一面。而当下,传统的通用架构已远不能满足需求。cpu、gpu、fpga甚至ai加速器等多种架构之间组合,方能招架得住处理数据密集型、复杂的工作负载。未来,这种异构计算将成为常态。
一、应对多架构挑战 oneapi应运而生
当前,不管是cpu、gpu、fpga等哪一个硬件平台往往都需要开发者维护独立的代码库,这些代码库需要使用不同的语言、库和软件工具进行编程。这是一项极其复杂和耗费时间的工作,大大降低开发速度、抑制创新。
具体而言,异构计算使得一个用户可能在同一个数据中心里既需要cpu里做虚拟机,又需要fpga来做各种解压缩或者加速器,还需要gpu来做深度学习或者人工智能。这就需要在数据中心里安各种各样的硬件,跑各种各样的软件。如果还是各自为政的话,对于用户来说,就算应用将来要扩容、硬件平台将来要升级,都是成本很高的一件事。甚至此前做的都全白做了。
为了解决这一难题,oneapi应运而生。oneapi是一个以开发者为中心的平台,简化多架构编程的一个统一编程模型,开发者可以自由选择架构,大大降低了使用不同的代码库、编程语言、编程工具和工作流程所带来的复杂性。oneapi采用统一、简化的语言和函数库,用于表达并行化,且基于行业标准和开放式规范,能够与现有 hpc 编程模型互操作。
oneapi包括了一项基于开放规范的行业计划和一款beta产品。该规范包括一种编程语言、强大的api函数库以及底层硬件接口。oneapi beta产品为开发者提供了全套的开发工具,包括编译器、编程库、分析器等,并把这些工具封装为特定领域的工具包。初期oneapi beta版主要面向英特尔至强可扩展处理器、带集成显卡的英特尔酷睿处理器,以及英特尔fpga,未来还将支持更多硬件。
oneapi将实现与现有行业标准的互操作性。oneapi开放式规范包括一种跨架构的编程语言data parallel c++ (dpc++)、一套用于api编程的函数库以及底层硬件接口(oneapi level zero)。有了这些组件,英特尔和其他企业就能创建他们自己的oneapi实现来支持自己的产品,或基于oneapi进行新产品开发。
oneapi规范是为支持来自多个厂商的各种cpu和加速器而设计的。oneapi beta版目前支持英特尔cpu(英特尔至强、酷睿、凌动)、英特尔arria fpga以及作为未来独立数据中心gpu代理开发平台的第九代/英特尔核芯显卡。oneapi日后将支持更多英特尔加速器架构。
dpc++是基于大众熟悉的c和c++语言,专门为oneapi设计的主要编程语言。它融合了来自kronos group的sycl,从而可以支持跨cpu和加速器上的数据并行和异构编程,目的是为了简化编程以及提高代码在不同硬件上的可重用性,同时能根据特定的加速器进行调优。
dpc++语言增强将会通过一个开发者社区项目来进行扩展,以简化数据并行编程。该项目向公众开放,并将通过开发者们的共同努力不断发展。
目前,很多库和组件已经开源或即将开源。英特尔一位工程师指出:“开发者有想法可以去做扩展,这对开发者来讲是没有太大阻碍的。第二个层面,我们做这个目的是因为后面计算会比较复杂,因为你可能有ai的应用,有后面更多的跨架构/跨平台的应用,还有各种框架上的支持,这些都是依赖于开发者对oneapi的支持或者之后的发展,应该说本身它是一个发展的平台,它不是固定不变的东西。英特尔开了一个很重要的头,也投了大量的人力和物力,后面要做的话应该是开发者共同和我们一起把这个东西往前推的过程。”
用一个形象的比方,不同架构的选择如同是“自助餐”,有各种各样的菜,可以自由组合,想吃沙拉就吃沙拉,想吃红烧肉也可以。此前一些企业提供的方案是封闭性的,有的公司只供红烧肉,有的公司专门做沙拉。而有了oneapi的支持,企业客户才能够更灵活的选择各种架构进行任意组合,oneapi是通过软件来帮助实现硬件灵活组合的愿景。
二、oneapi是英特尔软硬结合软件为先战略中的重要一步
现在数据量极其庞大,已经远远超出了在一台计算机上就可以完全处理的承载和能力,必须要清楚如何应对这些无法放进一台计算机的大规模数据的处理方式,这是巨大的机会。接下来面临的挑战是,如何将性能提升十倍、百倍,而并不是简单的提升10%的问题。
英特尔首席架构师raja koduri认为,摩尔定律将持续给我们带来非常好的性能提升;而通过软件和硬件的结合,可以让摩尔定律的提升变成十倍。因为摩尔定律会带来更多的晶体管,而软件可以将越来越多的晶体管的极致性能释放出来。将软件和硬件结合就是英特尔的战略重点,这也是未来面临的非常巨大的机会。
英特尔认为,对于全新硬件架构的每一个数量级的性能提升潜力,软件能带来两个数量级的性能提升。英特尔首席架构师raja koduri表示: “通过软件优化,可以给java带来6倍的性能提升,给持久性内存带来8倍的性能升级,在ai领域带来28倍的性能提升,所以它的性能提升空间是非常大的,而且这仅仅是在同一款硬件上通过软件就可以做到的。”为此,2018年12月英特尔“架构日”活动上提出六大技术支柱战略,即:制程和封装、架构、内存和存储、互连、安全、软件。
“软件是英特尔的一项重要战略资产,英特尔将通过软件业务来充分释放公司的整体增长潜力。英特尔希望通过在整个开源生态系统中的协作,来推动面向以数据为中心时代的产品和服务创新。” 英特尔公司副总裁兼系统软件产品部门总经理苏义德曾强调。
英特尔拥有一个1200万活跃开发者的生态系统,横跨pc、网络和数据中心。不管客户有高性能的要求还是有低功耗要求,或者是对成本比较敏感,英特尔都有完整的产品线可以对应用户的不同需求。英特尔希望可以实现一个非常简化的流程,通过一个统一的软件栈,一个统一的api就可以适应客户所有的从性能、功耗到成本上的优化需求。
在软硬结合软件为先的战略中,英特尔在“架构日”活动上同时宣布推出“oneapi”项目,面向多元化计算时代。该项目包括一个全面、统一的开发工具组合,以将软件匹配到能最大程度加速软件代码的硬件上。
“绝大多数ai算法的演进和创新都是在更偏上层来完成的,我们希望在底层就做好助力和驱动。同时,我们也会不断优化oneapi。这样,未来任何编程人员不管是他们想将硬件性能提升10%、20%甚至50%,都可以在这个框架上轻松实现,而不需要再自己编写语言。”raja koduri表示。
2019年11月正式发布了oneapi公开发行版本。oneapi包括了一项基于开放规范的行业计划和一款beta产品。
英特尔指出,oneapi不是一个全新的东西,它是之前几十年的积累上面做了一个扩展。基于现在工作负载越来越复杂,做这样的扩展是非常合情合理的一件事情。从现在整体来看,无论是开发效率还是实际的产品运营效率,都可以从中受益。
三、oneapi重在培育生态系统 与伙伴共同拥抱数据时代
在设计oneapi之初,英特尔就考虑到要发挥整个xe架构最强的全面性能,不管是高性能还是低功耗。除此之外,oneapi的设计也确保要符合英特尔所有其他不同计算和应用的需求。不管是cpu、fpga还是加速器,oneapi的设计都可以和它们进行非常完整的配合。
oneapi,是英特尔以软件来最大程度释放硬件性能,从软件层面来简化和统一跨svms架构的创新。raja koduri指出,oneapi是一个非常底层的抽象框架,主要就是面对以后不同计算元素的集成,希望能够从底层更好地完成特征抽象和集成。
svms架构是由标量(scalar)、矢量(vector)、矩阵(matrix)、空间(spatial)四种架构组成的,分别对应着cpu、gpu、fpga和加速器,它们的组合方式是多种多样的。通过这个架构的分类方式可以看到,cpu是最通用的一种架构,而gpu会比cpu更加高效和专用,而fpga和加速器的能效和灵活性更高。
“英特尔的策略就是要囊括cpu、gpu、fpga、加速器所有的架构。”raja koduri指出,cpu依旧是目前最重要的架构,英特尔将不断提高每个cpu的性能,继续保持它作为最强的计算架构的位置。gpu战略主要是要提高能效,更好帮助英特尔提高整体的生产力和效率。在fpga领域,英特尔现在已经做的非常成功了,英特尔推出了很多重要的fpga产品。另外,加速器也是英特尔非常重要的一个发力点。
在oneapi的生态构建方面,英特尔主要从三个层面来推进:一是英特尔有着强大的开发者社区,以及全球范围内非常广泛的社区合作伙伴。英特尔将从自身非常擅长的开源社区入手。第二,在很大层面上与高校展开配合协作,结合他们的技术以及案例来打造一个完整的社区。第三,与全球开发者们进行更加完整的合作,开发者不仅仅是指个人开发者,也包括大型的企业机构,例如腾讯、阿里等,英特尔将会与每个人、每个企业都紧密地配合,来支持oneapi的生态。
截至11月17日,支持oneapi概念的业内领先企业和研究机构已经超过30家,包括高性能计算领域的领导者、人工智能领域的创新者、硬件厂商/oem、独立软件开发商、云服务商、高校等等。
2019年5g的正式商用加速了物联网的深入应用,这意味着会有更多的物联网节点智能终端产品落地应用。据统计数据显示,2020年全球物联网设备基数将达307亿台,2025年将达到754亿台。而这些将会产生海量的数据,这些数据的存储、安全、运算,则需要依赖于数据中心、云服务等软件业务。
英特尔愿发挥在软件业务方面的强优势,以生态系统培养为主,推动整个业界往前迈进。并与合作伙伴一起面对这一巨大的市场应用需求,一同抓住这块蛋糕。