首次独家呈现 OPPO 四大创新技术实践,尽在 QCon 上海 OPPO 技术专场! 了解详情
写点什么

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

2021 年 10 月 12 日

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

在 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:44913
用户头像
万佳 InfoQ编辑

发布了 624 篇内容, 共 237.9 次阅读, 收获喜欢 1597 次。

关注

评论

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

redis数据结构介绍六 快表

Nick

redis 源码 数据结构 源码分析 算法

RocketMQ - 如何实现顺序消息

Java收录阁

RocketMQ

微信推文无缝滚动是这样炼成的

喵喵侠

微信 前端 微信公众号 微信推文 图文混排

学慢点儿,想深点儿

熊斌

学习

Windows10 如何正确修改本地用户的名称及目录

喵喵侠

windows Windows 10 电脑故障 Windows技巧

写给产品经理的信(4):你一定要做产品经理么?

punkboy

生涯规划 产品 程序人生 产品经理 职业规划

企业也有中年危机?探讨数字化与永续经营

fino星君

数字化转型 小程序生态

KubeFATE 部署多集群联邦学习平台 FATE

亨利笔记

学习 Kubernetes FATE KUBEFATE

平台化服务的基石:用户认证模型设计

孤岛旭日

企业架构 模型 用户权限

redis数据结构介绍五-第五部分 对象

Nick

redis 源码 数据结构 源码分析 算法

使用 Python 分析 Google Calender 日程

Roc

Python 总结 日历

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

Java 异步编程:从 Future 到 Loom

理帆

Java 并发编程 kotlin Netty

财富的大门给我开了一条缝

YoungZY

读书笔记 读书

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

ansible-playbook中when结合tags使用,实现变量控制执行

唯爱

2020全球首创币期权DAPP智能合约强势来袭,闪耀数字经济

极客编

2020年下半年计划

IT蜗壳-Tango

年度计划

Kubernetes in action 笔记

FeiLong

Kubernetes 容器

ARTS-weekly-31

落英坠露

ARTS 打卡计划

教师节H5案例制作思路分享

喵喵侠

前端 H5游戏

OBS推流学习笔记

IT蜗壳-Tango

直播 OBS 推流 B站直播

使用 Python 和 SudachiPy 进行日语分词

Roc

Python 日语 分词

在 Go 中使用并发编程 - 第二部分

TuringTuring

Go 并发编程 协程 线程模型

使用 Markdown 制作五线谱

Roc

GitHub markdown 五线谱

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

JUC整理笔记三之测试工具jcstress

JFound

Java

Git数据传输模型及常用命令整理

王坤祥

git git flow

redis数据结构介绍四-第四部分 压缩表

Nick

redis 源码 数据结构 源码分析 算法

ARTS week 1

时之虫

ARTS 打卡计划

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

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