时光荏苒,经历了长时间的高速发展,今日IT系统架构相对20年前早已有了翻天覆地的变化。云化的架构、更海量的计算、按TB来算的内存、发生质变的存储……一切的一切都让现在的企业有了赢战数字化、智能化的资本。但伴随ICT产品技术的不断进化,很多消失已久的问题却似乎再次浮现。
算力多样化带来的隐忧数字时代,算力无处不在。但与此同时,出于性能、效率、能耗、成本等方面的考量,算力的类型也开始变得多样化;不同架构的CPU、GPU、FPGA和ASIC都开始发挥自身特长,在不同的场景中为用户贡献算力。但在算力多样化成为趋势的同时,算力的快速分化也造成了管理、应用开发等方面的问题。
面对不同硬件产品天差地别的特性,软件开发者必须首先了解硬件平台和指令集的相关特性,并在开发过程中针对性的配置开发环境、使用不同开发工具和语言、进行不同方式的优化。而这不仅造成了开发周期周期变长、开发人才短缺,更对开发成本、开发流程和软件本身的质量带来了负面影响。对于很多软件企业来说,今天的情况一如20年前开发者在面对RISC与x86、UNIX与Linux时一样。
从硬件架构的长期发展趋势来看,算力的多样化是无法避免的。那么,除了配置能力更丰富的开发人员之外,软件企业还有其他选择吗?
善于总结的人不会在同一条河里翻船,在面对算力多样化时,今天的开发者也有更好的选择——北冥多样性计算融合架构!
一个架构,搞定多样算力的开发作为国内ICT行业的顶尖企业,华为不仅具备强大的设备制造和方案整合能力,更拥有从半导体层面入手,构建多种算力产品的能力。而鲲鹏系列CPU和昇腾系列AI处理器就是华为最具代表性的处理器产品。
围绕鲲鹏和昇腾两大核心,华为先是联合伙伴推出了大量硬件产品,而后,更在积极布局和完善其软件生态。这其中既包括对应的操作系统、固件和SDK,也囊括了对应的开发框架、调度器、函数库、编程语言、编译器、执行引擎、开发工具等一系列软件产品。
不过,在不断推出和更新工具类软件的同时,华为也意识到,独立存在的各类语言和工具很难在面向开发者的推广中形成合力,各类工具和框架的部署和集成也比较繁琐,而生态碎片化情况的改观也将变得相对缓慢。因此,在日前举行的HuaweiConnect2021大会上,华为便将针对鲲鹏和昇腾的各类工具、环境、框架、编译器统统整合进一个品牌并进行系统性的整合及优化,而这正是北冥多样性计算融合架构。
在介绍北冥架构时,华为副总裁、计算产品线总裁邓泰华表示:北冥架构是为多样性计算硬件及集群打造的完整软件栈,可帮助开发者在多样算力环境下,实现与单机\同构相仿的应用开发、调试和部署体验,并获得远超单一算力的应用性能。
三重发力,为开发者解忧在进行使用多样算力的应用开发时,开发者面临的挑战多种多样:
-
系统从单一算力到多样性算力;
-
从单机部署到融合集群部署;
-
从传统应用到融合智能应用。
为应对这些挑战,华为将北冥架构下的多个模块划分为基础使能、应用使能和开发使能三个部分,分别对应了多算力协同、融合型应用的在集群上开发与调优、开发工具链;而这既是开发多数软件所需的三大要素也是开发者在面对多样算力时所感受到的痛点。
01、基础使能,多算力调用更简单
在基础使能层面,北冥架构力求做到通用、生产力和高性能;而这些正是开发者在面对多样算力时最头疼的地方。
首先,华为通过毕昇C 编程语言实现了多算力情况下的统一编程,让开发者能够通过一种语言、一段源码就能实现对不同类型底层算力的充分调用。具体而言,在算法中经常用到的各类标量、向量、矩阵、张量计算及多核并行开发中,毕昇C 可以屏蔽鲲鹏与x86、昇腾与传统GPU之间的大部分硬件差异。由此,多样算力能够变得透明,开发者便可以专注于代码和程序的构建,而不是学习不同算力之间的差异。这一做法显然大幅降低了跨算力应用的开发门槛。另一方面,以C 为基础,开发人员也可以快速上手并实现较高的程序执行效率。
当然,毕昇C 实现这一效果还需要北冥融合加速库的支持。AI处理器之所以能够在特定运算中展现出更高的性能,是因为这类处理器在执行相关函数运算时能够展现出极高的效率。因此,从某种意义上讲,AI相关的应用开发便是对各类硬件优化函数的海量调用。而有了北冥融合加速库,毕昇C 便可调用各类经过硬件优化的函数实现计算效率的大幅提高,简化后期的调试调优工作。
在源码开发完成后,用户还需要对源码进行编译。以往,不同类型的算力产品往往分属不同厂牌,而不同厂牌也有自己推荐的编译器。但对于多算力融合型应用来说,由于需要调用不同类型的算力,所以源码的不同部分也需要使用不同的编译器来进行编译。显然,这样的传统编译方式是复杂、低效且容易失败的。而毕昇编译器则提供鲲鹏、昇腾、x86、GPU等多种算力和指令集支持,让开发者能够通过一次开发就编译出不同版本的可执行程序,大大提升了开发效率。
同时,华为提供的鲲鹏DevKit还提供了强大的代码迁移和调优程序,各类使用JAVA开发的源码都可通过该工具方便的迁移至鲲鹏平台并实现代码的自动调优。
经过实际测试,使用毕昇编译器后,鲲鹏920在SPECCPU2017 INT上能带来平均25%以上的性能提升。而在WRF等HPC应用场景中,使用毕昇编译器则可以带来10%的性能提升。
另外,经过毕昇编译器编译的程序还具备更高的性能。经过测试,同一套源码经过毕昇编译器编译后,在鲲鹏处理器上的执行性能可比常见的GCC编译器提升25%以上。而在由SPEC推出的专门针对异构计算的SPECACCEL的OpenCL测试提升了30%以上。
02、应用使能,融合应用集群部署的福音
云时代,很多企业软件都需要在数据中心内进行集群部署。在多样算力参与的情况下,开发者所面对的并行化、性能和调度问题将更复杂、更棘手。而北冥架构的众多应用使能特性便是为解决这些问题而生。
在需要CPU算力的部分,元戎分布式并行开发框架能够在很大程度上简化大规模分布式应用的开发,让开发人员能够像开发单机应用一样开发集群应用。通常,开发者只需几行代码就可开启算法、数据和函数嵌套的并行模式,成倍提高代码在集群中的执行效率。
在实际的开发环境中,通过使用元戎分布式并行开发框架,华为云视频RTC服务的视频特效功能开发时间缩短了6倍,硬件资源利用率提升了50%。而在某金融资管风控算法当中,开发者只用了三行代码便完成了算法的分布化、并行化,使执行效率获得了数十倍的提升。
而在经常需要集群参与的AI和HPC应用中,昇思科学计算套件则通过多尺度混合计算和高阶混合微分两大关键创新实现了AI计算引擎和科学计算引擎的统一。同时,昇思科学计算套件还集成了包含面向EDA行业的MindElec、面向生命科学行业的MindSPONGE等8大科学计算模板的MindScience系列套件,能够通过预制的数据集、基础模型、高精度模型、前后处理工具等简化相关行业应用的开发,提升计算效率。
而对于需要用到多种算力的融合性应用,北冥架构中的多瑙统一调度器2.0则能够实现CPU、AI处理器(GPU)存储、网络、能耗管理等集群特性的统一调度、统一管理,进一步提升集群系统的使用效率。
03、开发使能,全流程一站式开发
任何软件的工业化开发都需要使用大量的开发工具和严谨的流程及管理。如何强化管理并提升工具链和流程的效率是软件企业提升竞争力的关键。不过,在多样算力的情况下,面向不同算力的开发需要使用不同的集成开发环境,也需要不同的工具链来完成开发流程定义、优化、调试等工作。因此,面向多样算力的软件开发也就变得异常复杂,开发效率提升困难重重。而为解决软件企业的这些痛点,华为还在北冥架构中集成了MindStudio多样性计算统一工具链。
MindStudio自带多样算力硬件抽象功能,可通过统一基础平台做到底层透明,屏蔽不同算力硬件之间的巨大差异。同时,MindStudio的统一基础平台还能做到各类新功能的灵活添加、即插即用,让新算力、新功能的扩展变得异常简单。MindStudio统一基础平台通过API与上层开发工具进行对接,能够极大的简化工具链和相关开发流程的构建。
而在工具链的前段,MindStudio还提供了工程框架、专家系统、功能插件、调试和调优、工程管理、语言引擎、调测组件等一系列实用工具,让企业通过一套工具链就满足软件开发所需的全部功能,简化了鲲鹏、昇腾等多样算力的开发门槛,让企业能够专注于代码和开发本身。
与此同时,北冥架构中的MindStudio还可以通过插件与华为云上的DevOps平台连接,实现针对多算力的完整DevOps功能。
为多样算力赋予越动灵魂20年前,众多硬件架构的并行造成了软件生态的极大分裂,既限制了用户,也限制了行业的发展。随后的x86大一统从底层解决了这一问题,并促成了过去10年ICT市场的空前繁荣。但在算力多样化趋势之下,硬件架构的多样性又再次限制了软件和应用市场的发展。不过,这一次,以华为为代表的企业早已未雨绸缪,为跨算力应用的开发、测试和部署铺平了道路。
北冥架构的出现,不仅抹平了不同算力之间的架构鸿沟,更为多样算力的进一步发展提了供参考。而作为行业内极少数能够同时提供多种算力方案的企业,北冥架构的推出也代表华为对技术应用和软件开发的极端看重。由此,以鲲鹏和昇腾为代表的华为算力产品也实现了对用户和开发者的双向友好。
硬件是躯体、软件是灵魂。而华为北冥架构的出现,则为鲲鹏、昇腾乃至整个算力生态的迸发铺平了道路。
【IT葡萄皮】(公众号:itopics)由资深媒体人张垞运营。从业十二年的深度观察,只为一篇不吐不快的科技评论。