虽然摩尔定律在放缓,但集成度仍然不断增加,消费类产品旗舰设备所用的处理器动辄集成数十亿晶体管,如果对处理器及其系统实现没有深入了解,工程师将很难让这数十亿晶体管完全发挥出效力。在PC时代之后,计算设备的形态越来越多样化。小到电池供电的物联网终端,大到数据中心与超级计算机,介于二者之间的中等规模计算系统更是数不胜数。计算架构上也是百花齐放,传统CPU是标量(Scalar)计算,GPU是向量(Vector)计算的代表,现在的AI加速器多是矩阵(Matrix)计算,FPGA则可被视为空间(Spatial)计算。设备形态与计算架构的多样化,给软件工程师的工作带来了极大挑战。
为码农工作的码农
被俗称为“码农”的软件工程师群体素以学习能力强著称,但对大多数软件工程师而言,能够精通一种架构已经不易,跨平台开发通常难以达到很好的效果,而且如今技术演进速度太快,如果每一种新架构都要去学习,将让多数工程师不堪重负。“如果让开发者都直接针对SVMS(即标量、向量、矩阵和空间)架构编程,每出一个新技术都要跟上,大家学也学不及,赶也赶不及。”英特尔机器学习首席工程师林晓东就这样解释软件工程师所面临的困境。
英特尔亚太研发中心总经理卢炬也表示,我们正在进入一个以数据为中心、计算多元化的时代,计算架构在从CPU向xPU扩展。因为不再是单一的CPU架构,就需要工程师把不同的计算架构,与不同应用场景的工作负载整合到一起,软硬结合以发挥系统配置在具体应用场景的最佳性能,最终实现系统的设计目标,这其中“软件起了最关键的桥梁作用”。
英特尔软件工程师的首要工作是为应用软件工程师提供最完整的开发环境,即林晓东所谓的“‘码农’中的码农”,以固件/BIOS、操作系统、虚拟化技术、编配组件,以及中间件和框架组件等多层次软件技术,为应用英特尔硬件系统的软件开发者提供全面的帮助与引导,这些软件技术把硬件系统层层抽象,最终让应用软件工程师无需深入了解硬件实现细节,就能有效地在英特尔平台上进行开发。
英特尔软件产品覆盖层级(蓝色)
来源:英特尔
英特尔新近推出的oneAPI是一个跨平台生产力工具的例子。oneAPI 包含两部分,第一部分是跨架构编程语言Data Parallel C++(简称 DPC++),不同架构处理器和厂商都可以使用;第二部分是满足不同应用需求的跨架构库集合。英特尔英特尔架构、图形与软件部副总裁Bill Savage曾表示,oneAPI 既是一个开放的行业规范,同时也是一个产品。对于软件开发者而言,oneAPI 的好处是使开发者使用同一份代码,即应用于不同架构和厂商的计算系统,更多地重复利用代码,可以有效地降低开发成本。
OpenVINO是另一个例子,英特尔视觉计算软件合作部亚洲区总经理高源表示,在实现了高性能计算机视觉和深度学习视觉应用方面,英特尔虽然有不同的硬件架构和硬件平台,但是软件编程工具是统一的,就是OpenVINO。“不需要开发者独立去了解不同硬件应该如何去做,OpenVINO为大家提供了一个统一接口,方便在不同架构之间做开发和迁移。”
开源与合作
Wintel联盟是PC时代胜出的基础之一,但世易时移,在后移动计算时代,开源与合作逐渐成为业界主流,连微软都开始主动投入开源运动。所以是否参与开源运动已经不是问题,摆在这些大厂商前面的问题是如何在开源运动中占据一席之地。
英特尔亚太研发中心开源首席科学家冯晓焰,向探索科技(techsugar)介绍了英特尔在开源软件方面的历史。冯晓焰表示,在上世纪90年代,英特尔已经在开始进行Linux内核相关的开发工作,英特尔的工程师和Linux内核维护者定期举行会议,2001年左右,冯晓焰所在的团队开始开发“电信级Linux”,之后在Linux上的投入越来越多,2005年1月,时任英特尔首席执行官安迪格鲁夫做过一个承诺,即英特尔在为微软开发驱动的同时,也将为每一款英特尔硬件开发Linux驱动软件,这标志着英特尔全面拥抱开源软件。
冯晓焰介绍,在上述英特尔多层次软件产品中,开源软件在每一层都有代表作。固件层次的UEFI Framework是开源软件;在虚拟化层次上,则有KVM、ACRN、XEN等开源产品;在操作系统层次,英特尔有专为英特尔平台优化的Clear Linux,针对IA平台开放的安卓操作系统的参考实现Celadon,针对特别小的物联网设备要用到的操作系统内核Zephyr,以及开源的机器人操作系统ROS等。“英特尔很多的核心技术,都是在开源软件上首先实现的。”
“在国内,OpenStack远远比在国外更活跃。OpenStack在国内更活跃的重要原因,其实是因为英特尔在国内有专门做OpenStack的团队,而且英特尔在国内做了很多推广,包括社区的推广,也支持各种OpenStack厂商基于OpenStack做的整体解决方案。” 冯晓焰特别强调了英特尔在OpenStack发展中的作用,他认为英特尔和产业链伙伴勠力同心,才推动了整个OpenStack在社区的活跃和广泛应用。“最近几年OpenStack技术峰会都会评选‘超级用户’,‘超级用户’有非常严格的选择标准,中国移动、腾讯,都得到过‘超级用户’,英特尔一直在和OpenStack‘超级用户’密切合作,为其提供了很多支持。”
让每个晶体管物尽其用
显然,英特尔软件部门是英特尔硬件的“超级用户”。在英特尔发布每一款硬件之前,其软件工程师都已经将新硬件玩熟。虽然摩尔定律在放缓,但集成度仍然不断增加,消费类产品旗舰设备所用的处理器动辄集成数十亿晶体管,如果对处理器及其系统实现没有深入了解,工程师将很难让这数十亿晶体管完全发挥出效力。
英特尔的软件工程师成为了在英特尔系统做开发的工程师们的“守夜人”,他们要确保这些工程师能够简便、高效、安全地在英特尔平台上做开发。
英伟达的CUDA是其在人工智能应用中抢得先机的法宝,英特尔的oneAPI与OpenVINO等产品或也将在数据时代中引领潮流。
“英特尔做软件,就是为了使能和优化,我们做的事情,是让英特尔所有硬件的每一个晶体管的能力,都能充分发挥起来。这就是英特尔做软件的目的,使得开发者能够非常容易地把我们的软件和硬件充分用起来。”软件与硬件结合,才能最终把硬件威力发挥出来,林晓东举了机器学习的例子,从Broadwell到Skylake,软硬件结合带来了高达277倍的机器学习性能提升;从Skylake到Cascade Lake 增长了28倍,其中软件优化对性能增长的贡献,远超硬件改进。
相关文章