写点什么

为多样性算力软件开发铺就平坦大道:华为北冥融合架构全面解析

  • 2021-10-12
  • 本文字数:3276 字

    阅读完需:约 11 分钟

为多样性算力软件开发铺就平坦大道:华为北冥融合架构全面解析

在 2019 年 2 月的 ACM 通讯上,计算机架构宗师、架构领域“圣经”著作《计算机架构与量化研究方法》的作者 David Patterson 与 John Hennessey 共同发表了一篇重磅论文:《计算机架构的新黄金十年》,阐述了他们对未来十年计算体系结构发展的分析和展望。论文指出,以硬件为中心、针对特定领域和用途设计的架构(DSA)将提供显著的性能和能效收益,在摩尔定律走向终结的同时为计算机带来新的活力与发展机遇。


DSA 对今天的 IT 从业者来说并不陌生。GPGPU 和 AI 专用加速器就是最常见的 DSA 硬件实现,并且已经在工业界广泛部署,取得了突出的成就并创造了可观的经济价值。如今,越来越多的数据中心开始在服务器集群中安装 GPU 和 AI 加速硬件,为视频压缩和后期处理、数据分析、个性化推荐、智能决策等大规模任务提供惊人的加速比。DSA 已经逐渐成为与传统 CPU 地位并列的计算机关键核心组成部分,为产业和社会带来愈加深远的影响。


然而,正如两位宗师在他们的论文中所述,DSA 的崛起也为软件开发行业带来了严峻的挑战。传统 CPU 上流行的通用编程语言和工具链难以为 DSA 硬件有效编程,后者需要专门开发的领域特定语言(DSL)才能充分发挥硬件潜能。但今天的 DSL 语言生态才刚刚起步,远未成熟,给软件开发者带来了诸多门槛与障碍。与蓬勃发展的 DSA 硬件相比,DSL 开发社区的前进步伐已经明显落后,严重拖累了创新硬件在行业中的应用和推广进程。


可以看到,为 DSA 硬件打造门槛更低、能力更强的语言生态是产业当下的迫切需求。开发人员更希望能有一种具备充分包容性的生态环境,能够一站式覆盖传统 CPU 与新兴 DSA 硬件的开发需求,彻底打通不同硬件架构之间的软件壁垒,降低开发成本,提升开发效率,并充分发挥不同架构的硬件能力。面对这样的需求,华为于 HC2021 大会上正式发布了“北冥多样性计算融合架构”,为数据中心的计算集群跨架构、跨算力类型软件开发提供了一站式全套解决方案。

北冥多样性计算融合架构解析


据华为介绍,北冥多样性计算融合架构是主要面向多样性算力集群的软件开发需求,融合开发语言、编译器、调度器、开发框架、计算套件、开发工具链在内的整套多样性算力开发解决方案与生态。方案分为基础使能、应用使能和开发使能三大组成部分,完整覆盖软件开发端到端流程,实现极简开发、高效部署、极致性能的多样性算力开发目标。

基础使能


一如《计算机架构的新黄金十年》论文所述,编程语言和编译器在多样性算力软件开发流程中扮演着核心角色。为了抚平开发人员学习曲线、提升跨算力架构开发效率,华为在通用的 C++语言基础上研发了毕昇 C++语言。


毕昇 C++支持 SYCL 异构编程标准,一种语言即可对 ARMv8、x86 处理器和昇腾 AI 加速器、Nvidia GPU 编程。毕昇 C++还将不同算力的共性特征抽象出来,为多种硬件上的不同计算单元提供统一的矩阵编程接口,并支持多种并行模式,一套源码即可在多样算力上重用。单语言、单源码的开发方式为开发者避免了多样性计算系统的编程复杂性。


与毕昇 C++搭配,北冥架构还提供了跨多样算力统一编译及融合优化能力的毕昇编译器。毕昇编译器实现了多样算力的统一编译,配合毕昇 C++可直接生成融合多种算力代码的 fatbin 可执行程序。编译器还融合了多种多样算力优化技术,打破了编译器只能对单算力编译优化的限制,在 SPEC ACCEL 等基准测试中性能提升 30%以上。


统一 API 接口、具备多算力协同能力的高性能北冥融合加速库是北冥基础使能软件的第三大利器。北冥融合加速库兼容主流应用框架,为多算力提供统一 API 接口,并构建了业界独有的多算力算子层,可将计算过程拆解到最适合的算力架构上,将计算机视觉、自然语言处理等主流模型训练效率提升 1 倍以上。

应用使能


在多样性计算集群上开发融合应用,开发者不仅要面对大规模并行应用开发的复杂性,还需要解决融合应用跨算力部署的难题。对于大规模计算集群而言,应用的全栈性能优化是极其复杂和困难的挑战。


针对这一开发痛点。北冥多样性计算融合架构打造了包括多瑙统一调度器、元戎分布式并行开发框架、昇思科学计算套件在内的应用使能软件组合,帮助开发者实现分布式应用的极简开发、融合应用的高效部署以及多样性计算系统的全栈最优效能。

多瑙统一调度器


多瑙统一调度器可为多样性算力集群提供应用与资源的最佳匹配。相比传统集群算力调度器,多瑙统一调度器具备诸多显著优势:


  1. 目前,多瑙统一调度器支持 ARMv8 与 x86 的 CPU 计算资源、昇腾 AI 加速器与 Nvidia GPU 计算资源的统一调度,未来还将进一步支持其他流行算力,解决了多样性算力集群的跨架构应用开发部署与调度难题。

  2. 多瑙统一调度器抽象出统一的资源模型,支持多样算力资源纳管,通过与系统软件和硬件联动,结合静态、实时的资源与负载信息做出调度决策。多瑙的调度算法结合了多种技术的优点,除了对算力、网络、存储、能效的深度感知,还纳入了基于应用的专家系统以及对负载的历史数据分析。基于上述特性,多瑙统一调度器能够自动适应集群缩放规模,为大规模复杂集群提供实时精准调度,并打破了集群资源墙,实现更加灵活的资源共享和更高的资源利用率。

  3. 多瑙统一调度器在研发之初就遵循最严苛的企业级安全、可靠性标准,且已在国内多家知名企业、广泛的业务领域实践应用,其可靠性、可维护性得到市场充分验证。

  4. 多瑙统一调度器为运维人员提供了统一的 web 一站式运维管理平台,包含了作业管理、用户管理、集群监控运维、统计报表、自定义作业提交模板、远程可视化等丰富功能,创造极简的运维体验。

  5. 在传统单一算力集群资源调度方面,多瑙统一调度器也具备集群规模、调度性能、资源利用率等核心调度指标的领先优势,可充分发挥集群有效算力,提升投资回报。未来多瑙还将通过元调度器的分级调度能力支持跨数据中心的调度,可以基于开放的接口对接第三方调度器,为多样性计算算力网络的构建提供关键技术支撑。

元戎开发框架与昇思科学计算套件


元戎分布式并行开发框架是面向多样性计算集群打造的分布式并行开发框架,帮助开发人员在多样性计算集群上享受单机编程体验,还能够成倍提升视频特效等场景的开发速度,并数量级提升金融资管风控等算法的计算效率。昇思科学计算套件则为高性能科学应用提供了计算新范式,通过多尺度混合计算和高阶混合微分两大关键创新实现了融合应用的统一加速,为多种科学计算场景带来了可观的效率提升。

开发使能


为解决开发人员在多样性计算系统下的开发效率问题,在北冥多样性计算融合架构开发使能层,华为通过 MindStudio 统一工具链提供了开发全流程支持:


  • MindStudio 通过多算力硬件抽象、统一基础平台、统一工具链前端的三层解耦架构,构建全流程一站式开发基础能力;

  • MindStudio 为开发人员提供统一集成开发环境,实现开发全流程连贯无断点,并通过插件化技术支持功能灵活拼装和开发流程自定义;

  • MindStudio 还专门提供跨算力联合调试、全系统协同调优、仿真环境按需集成和开发资源一键获取等功能,帮助开发人员大幅提升面向多样性算力的开发效率。

  • 在 MindStudio 开发社区中,开发人员能够获得资源下载、指导手册、在线课程及实验、开发者沙龙等一系列支持和帮助。华为还为开发人员建立了交流论坛,超过 20 位华为工程师在线为开发人员解答技术问题。

北冥多样性计算融合架构:为多样性算力集群的软件开发铺平道路


在震动业界的《计算机架构的新黄金十年》论文发表后不到三年的时间里,华为就凭借自身深厚的技术积累与积极创新的研发与实践,开发出了直面多样性算力架构软件开发挑战的北冥多样性计算融合架构。


北冥计算架构不仅解决了跨传统 CPU 与新兴 DSA 硬件、跨多种指令集与计算类型的软件开发难题,还一步到位突破了大规模计算集群的多样性算力部署与调度障碍,一举打通了多样性算力的软件开发端到端流程,实现开发效率提升、成本下降、软件性能深度优化等一系列关键目标。


随着北冥计算架构的诞生,行业多样性算力生态也迎来了一个全新的发展阶段。可以预计,越来越多的企业将在北冥计算架构的帮助下加快多样性算力集群的部署,为研发和业务部门提供强大的基础设施支持,从而在激烈的市场竞争中取得领先优势。与此同时,华为与合作伙伴、开发社区也将通力合作,不断提升北冥计算架构的各方面能力,使北冥成为业内领先、影响广泛的多样性算力一流开发生态。

2021-10-12 10:442111
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 349.5 次阅读, 收获喜欢 1800 次。

关注

评论

发布
暂无评论
发现更多内容

Scrapy 源码剖析(三)Scrapy有哪些核心组件?

Kaito

Python 爬虫 Scrapy 源码剖析

Scrapy 源码剖析(四)Scrapy如何完成抓取任务?

Kaito

Python 爬虫 Scrapy 源码剖析

【架构师训练营 1 期】第六周学习总结

诺乐

Flink State 误用之痛,你中招了吗?

Apache Flink

flink

Java-技术专题-时间工具类的使用方案

洛神灬殇

JAVA魅力之神奇的数组带给你不一样的乐趣

小Q

Java 学习 架构 面试 数组

老板下了死命令,要把日志系统切换到Logback

沉默王二

Java logback 日志系统

java安全编码指南之:文件和共享目录的安全性

程序那些事

代码规范 java安全 java安全编码指南 java编码 程序那些事

TCP/IP 基础知识总结

苹果看辽宁体育

后端 计算机网络 计算机

接口测试(apipost、jmeter和python脚本)

测试人生路

Python 接口测试 测试工具

从零实现一个动态表单设计(编辑)器

徐小夕

Java 编辑器 H5 Node React

训练营第二周作业

爱码士

为什么 React Hooks 优于 HOCs(译)

西贝

Java 翻译 React Hooks HOC

给打工人熬一锅「毒」鸡汤

Java_若依框架教程

程序员 打工人 毒鸡汤

Go 与异步 IO - io_uring 的思考

IceberGu

Linux 异步IO io_uring Go 语言

丑陋的程序员

陆通

程序员 职场 认知

5G应用的实时决策

VoltDB

5G 物联网 工业互联网 技术分享

1分钟教你如何整理 React 知识体系

Leo

学习 大前端 React

轻量型GPU应用首选 京东智联云推出NVIDIA vGPU实例

京东科技开发者

人工智能 gpu

进“大厂”的故事

北风

职业规划 职业成长 大厂

网络直播打赏背后的套路:刺激用户不理智消费

石头IT视角

队列实现栈的3种方法,全都击败了100%的用户!

王磊

Java 算法和数据结构

元模型驱动(二)构建元模型ーGME构建分层模型

KaYa

DDD Kaya MDA GME MDD

面试官:讲一下缓存穿透、缓存雪崩和缓存击穿?

bigsai

redis 缓存穿透 缓存击穿 缓存雪崩

【架构师训练营 1 期】第六周作业

诺乐

酷睿i5-10600KF对标锐龙7 3700X,游戏表现领先且售价更香

E科讯

Scrapy 源码剖析(二)Scrapy是如何运行起来的?

Kaito

Python 爬虫 Scrapy 源码剖析

元模型驱动(一)构建元模型ーGME入门

KaYa

DDD Kaya MDA GME MDD

基于服务设计的线上展览

京东科技开发者

云安全

训练营第二周课程总结

爱码士

训练营

Redis还可以做哪些事?

Java旅途

redis

为多样性算力软件开发铺就平坦大道:华为北冥融合架构全面解析_架构_万佳_InfoQ精选文章