阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

性能优化挑战重重,鲲鹏 HPC 如何突破算力桎梏?

  • 2020-04-10
  • 本文字数:4238 字

    阅读完需:约 14 分钟

性能优化挑战重重,鲲鹏 HPC 如何突破算力桎梏?

比起高性能计算(High Performance Computing,缩写 HPC),很多人对“超级计算机”感觉更熟悉一些。但事实上,超级计算机就是 HPC 系统的最尖端水平。在全球超级计算机 TOP500 中,位列榜首的美国橡树岭国家实验室的“顶点”系统,其浮点运算速度为每秒 14.86 亿亿次。而这份榜单的入围门槛也是达到了每秒 1.14 千万亿次的运算速度。


如此强大的计算能力,究竟能为技术的应用落地带来什么?

看似阳春白雪的 HPC 已走向平民化

不同于侧重数据密集型、I/O 密集型应用的云计算,HPC 强大的算力可用于解决大规模科学问题计算和海量数据的处理。早期 HPC 架构和相关设备均为封闭机型和专属架构,应用也仅限于科学研究、航天航空、油田勘探等高精尖领域,因此,HPC 曾被喻为是 IT 行业“金字塔上的明珠”。随着计算机技术的发展以及数据量和数据价值的不断增加,HPC 的应用领域在不断扩大,未来也将愈加“平民化”。


从目前来看,其应用场景大致可分为以下三类:


计算密集型应用(Computing-intensive):大型科学工程计算、数值模拟等。其应用领域为石油、气象、CAE、核能、制药、环境监测分析、系统仿真等。


数据密集型应用(Data-intensive):数字图书馆、数据仓库、数据挖掘及计算可视化等。其应用领域为图书馆、银行、证券、税务、决策支持系统等。


通信密集型应用(Network-intensive):协同工作、网格计算、遥控和远程诊断等。其应用领域:网站、信息中心、搜索引擎、电信、流媒体等。


总体来看,中国企业正处于数字化转型的高速期,上云速度加快、数据量迅速增长,对大数据的利用能力已成为企业的核心竞争力,企业对 HPC 的需求程度前所未有的提升。那么,作为一项技术门槛高、落地复杂的系统工程技术,HPC 在中国企业中的应用真的进入普及期了吗


HPC 应用对计算速度有着极高的要求,这意味着这类机群在系统的处理器、内存带宽、运算方式、I/O、存储等方面也都要追寻性能方面的极致。目前,也只有大规模的机构才有能力建立独有的 HPC 平台的能力。


然而在互联网时代,大企业追求轻资产化,努力实现数字化转型,传统 HPC 平台由于存在运维成本高、扩容难、资源利用率低、数据不流动等问题,难以适应企业的业务发展,甚至成为了瓶颈。那么,企业如何使这些老旧的 HPC 系统变得更高效灵活?中小企业是否也能以较低的云成本将 HPC 引入业务?

HPC 应用如何实现高性能?

“在高性能计算领域,由于计算量非常大,仅是提高很少量的百分点都能为企业带来巨大的经济效益,这其中包括时间的缩短、成本的降低以及能耗的降低。所以在该领域下,业界普遍都在追求非常极致的性能、性价比与能耗比。这样就迫使服务提供商要从应用需求出发,根据应用的特点来设计硬件和软件,然后再把这三者做无缝的整合,从而达到更高的性能。”


华为 IT 产品线 HPC Lab 主任、HPC 首席技术专家丁肇辉在接受 InfoQ 采访时表示。


提及 HPC 应用的性能问题,不同领域下的差异很大,通常企业用户需要基于自身的应用需求特征来进行定制化匹配,通过一系列测试工具对 HPC 系统进行精细化的研究分析后,找到可以调整和优化的部分,然后通过硬件升级、软件性能调优、应用扩展等不同方法来提高系统的整体性能,以期达到硬件系统与应用之间的平衡。


在《通过鲲鹏全栈 HPC 软件套件提升应用性能》的演讲中,丁肇辉将 HPC 应用性能优化分为四个层次:应用、计算、I/O、通信,对应的优化手段如下:



应用:由各个领域的科学家、软件开发专家基于各自领域的算法,对求解方法进行创新,并采用不同的编程模型。


计算:影响计算的主要是软件技术,如编译器、Runtime 和数学库,可以从三个入手进行优化,也可通过异构加速来提升计算效率。


I/O:通常 HPC 并行任务的并发 I/O 操作不应采用简单的 POSIX I/O,而应选择 MPI-IO。此外,对存储硬件进行优化也可以提高 I/O 的效率 。


通信:MPI 是最常用的 HPC 通信接口,MPI 集合通信、RDMA 等技术都适用于大规模并行计算机集群,可有效构建高性能、低延迟的存储网络。当然,对网络设备的优化也不能忽视。

不容忽视的软件调优

虽然很多性能问题都可以通过硬件配置的升级或优化得到解决,但软件调优部分也决不能忽视。


丁肇辉解释道:“HPC 其实服务的是科学计算,由于科学计算的领域差异很大,导致其应用特征差异也较大。因此如果要设计出能够覆盖各种场景下应用计算需求的硬件,其实难度还是非常大的。所以在硬件尽可能突破极致性能的同时,也需要软件接入来确保一定层面上的灵活性。”


从开始设计到最终完成,软件优化在整个软件开发周期中都将起到连续迭代的作用。


“在假定硬件不变的前提下,计算角度的优化目标就是将 CPU 的算力发挥出来,消除内存墙等常见问题。


通信层面的优化则以减少网络拥塞为目的,尽量能够让计算和通信的过程能够叠加,一边计算一边做通信。


I/O 的瓶颈与访存类似,就是尽可能利用更快速、更低时延的存储来达到一定的目的。但是由于其容量较低,需要考虑如何在多级的存储之间做切换。另一方面是要尽可能发挥 I/O 并行度的优势。通常 HPC 的存储节点是分布式的,能够把分布式的多个存储节点都发挥出来,来实现并行 I/O。”


而需要解决这三个层面的问题,华为主要从架构和算法两个方面进行创新:

1、MPI 底层架构优化

高性能计算之所以能达到极高的计算速度,是因为在该集群上运行的应用程序一般使用并行算法,把一个大的普通问题根据一定的规则分为许多小的子问题,在集群内的不同节点上进行计算,而这些小问题的处理结果,经过处理可合并为原问题的最终结果。由于这些小问题的计算一般是可以并行完成的,从而可以缩短问题的处理时间。


目前,国内外在高性能计算机系统中,最广泛使用的并行编程环境是 MPI(Message Passing Interface),它也已成为国际上的一种并行程序的标准。OpenMPI(open Message Passing Interface)是流行的开源 MPI 之一,具有模块化涉及、易于扩展等特点。



在 Open MPI 底层架构中,UCX 实现了针对多种协议的优化的点对点通信。不过由于 UCX 将集合操作转化为点对点通信的组合,很多对于点对点操作的初始化逻辑是多余的。对此,在华为 MPI 中,引入 UCG(Unified Communication)的概念,对 UCX 框架进行了重构。根据丁肇辉在演讲中的介绍,UCG 把集合操作定义在 UCX 层,使 UCX 通信的初始化逻辑从 Per message operation 变为 Per collective operation,可以让软件在更底层感知到集合通信,从而节省很多软件上的开销,包括程序的初始化、数据结构的创建等操作。据了解,目前 UCG 已开源,且已经被社区接受。


总体而言,华为 MPI 具有以下几个特点:


  • 基于开源 Open MPI 实现;

  • 通信算法基于 Open UCX 进行重构和优化;

  • 支持鲲鹏系列处理器与 x86 CPU;

  • 针对华为硬件的算法优化、硬件卸载;

  • 与华为自研软件与业界流行软件无缝集成。

2、基于 UCG 算法的创新

基于并行计算的高性能系统需要保持计算和通信性能的平衡性,其中,集合通信是通信系统的重要组成部分,负责进程之间的数据操作和同步操作。当并行应用的规模越来越大时,所使用的处理器的规模也越来越大,集合通信组内部进程之间的通信量相应增大,且需要相互协作完成通信语义,因此集合通信往往成为系统的性能瓶颈,需要优化集合通信以提高整体系统性能。


在演讲中,丁肇辉老师介绍了对集合通信算法的优化,分为节点内和节点间两部分。在节点内,结合共享内存技术和 CPU 内部的拓扑感知,华为对 MPI_bcast 进行了优化,见下图:



在 NUMA 架构下,对于同一块内存,节点内多个处理器的访问效率通常是不均衡的,此时可以通过多个共享内存块和 Flag 提高效率。


在节点间,华为对 B-nominal 算法进行了升级,提出“K-nominal 算法”,如下图:



K-nominal 算法具有更好的普适性,Bcast 算法可通过 LogkN 阶段通信完成,配合节点内共享内存算法可以达到最优通信效果。尤其是在 OpenMPI 下通过算法来自动调整通信包大小、规模以及正确的 k 值,K-nominal 的表现要比 B-nomial 这样一个典型的分级分步骤的集合通信算法来说,效果更好。


根据丁肇辉的介绍,经过小包测试后,华为 MPI 在 x86 上相较于 OpenMPI 提高了 2 倍以上,在鲲鹏上也提高了 2 倍。


鲲鹏 HPC 软件套件还将进行怎样的完善和迭代?

鲲鹏 HPC 在 2020 年将会发布一套完整的软件栈体系;目前来看,比较受业内关注的 MPI 和调度器这两个组件将是近期更新的重点。而编译器的版本则会相对稳定一些。以调度器为例,由于存在很多和用户之间产生直接交互的复杂功能,所以需要时刻关注用户的反馈,根据用户所提出的不同需求来进行版本迭代,因此为了适应用户的新需求会加速该版本的迭代。

突破性能极限,未来更值得期待

软件优化固然重要,但来自底层的革新才能突破性能极限。


早年间,支撑 HPC 高速运转的 CPU 均基于 x86 架构,而过多考虑功耗层面的 ARM 因在效能表现上无法满足应用场景的极致计算需求,在市场上总是叫好不叫座。随着摩尔定律作为行业标杆的铁律越来越难以为继,x86 体系遭遇瓶颈。加之 ARM 在功耗和效能之间又在不断取得更高的平衡,数据中心高效节能的市场诉求也愈加强烈,此前不被看好的架构开始在服务器市场发挥影响力,特别是 HPC 服务器市场。


2019 年 1 月,华为重磅推出自主研发且基于 ARM 架构的鲲鹏 920 芯片,该芯片具备业界顶尖的制程工艺、集成 8 通道 DDR4。由于采用“众核”架构,鲲鹏 920 可以做到最高 64 个物理 CPU 核,尤其适合大规模并行的计算场景。


基于此,华为以高性能服务器、大容量存储为基础,推出了端到端的高性能计算解决方案,包括基础设施、硬件资源、系统环境、集群管理、服务平台、行业应用等方面,让整个 HPC 的应用系统达到最佳的性能。而无论是服务器,还是编译器、MPI、调试器、函数库等基础软件,均可与企业原有的配置兼容,并实现性能上的优化和提升。



鲲鹏 HPC 全栈


IT 应用开发部署直接决定着企业数字化创新的能力,这将会有效地触发 HPC 应用量的急剧增加,同时,应用的多线程和高并发技术走向,也将催生出更多的 HPC 需求。而随着高性能计算应用的日益广泛和深入,高性能计算系统技术创新、计算环境创新与应用创新等各个层面还将遇到新的挑战与机遇。为了让鲲鹏 HPC 更好地服务于各行各业,华为将在 HPC 领域进行长期的技术投入,包括:


平台层:计算系统(x86、TaiShan)、下一代 NAS 存储系统、网络互联(低时延技术);


中间件:华为 MPI、工具链、集群管理、作业调度;


上层应用:气象 & 海洋、制造、计算化学、生命科学、油 & 气、AI 等领域。


我们有理由相信,这颗 IT 行业“金字塔上的明珠”在底层的革新中,将发挥更大的价值。


作者 | 王晓青


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-04-10 18:161093

评论

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

在线身份证号码提取生日工具

入门小站

工具

07-数据库存储架构

Lane

Flutter Android 端 Activity/Fragment 流程源码分析

工匠若水

flutter android 0 基础学习 Flutter 8月日更

Vue进阶(十七):proxyTable 配置

No Silver Bullet

Vue 8月日更

业务架构图的定位:表达业务层级和关系

arctec

每个人都可以说不

escray

学习 极客时间 朱赟的技术管理课 8月日更

【设计模式】组合模式

Andy阿辉

C# 后端 设计模式 8月日更

毕业设计

Chris Cheng

架构实战营模块 4 作业指导

华仔

架构实战营

架构实战营 - 模块四作业

Julian Chu

架构实战营

趁着课余时间学点Python(六)终止循环,阻断循环

ベ布小禅

8月日更

iOS开发:实现点击常用控件弹出地区选择框(万能方法)

三掌柜

8月日更 8月

kubernetes/k8s CRI分析-kubelet创建pod分析

良凯尔

Kubernetes 源码分析 Kubernetes Plugin #Kubernetes# cri-o

奥运背后的5G赛场,竟然也这么激烈?

白洞计划

手撸二叉树之二叉树的最大深度

HelloWorld杰少

数据结构与算法 8月日更

搜索二维矩阵②

Memorys

Java 面试 算法

【LeetCode】用两个栈实现队列Java题解

Albert

算法 LeetCode 8月日更

一款非常简单的基于WebRTC的视频预览播放器(具有贴图、视频特效)

liuzhen007

8月日更

电商秒杀系统

Presley

千万级学生管理系统考试试卷存储方案

面向对象的猫

Go并发之同步异步、异步回调

Regan Yue

高并发 协程 Go 语言 8月日更

Vue进阶(十九): ES6 箭头函数

No Silver Bullet

Vue 箭头函数 8月日更

oeasy教您玩转vim - 10 - # 插入新行

o

【Flutter 专题】74 图解基本 DropdownButton 下拉选项框按钮

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

【Vue2.x 源码学习】第二十九篇 - diff算法-节点比对| 8月更文挑战

Brave

源码 vue2 8月日更

Linux之crontab命令

入门小站

Linux

毕业总结

Chris Cheng

架构训练营

08-消息队列备选架构选择和细化

Lane

模块四作业

Geek_35a345

Python代码阅读(第6篇):根据给定的函数对列表中的元素进行分组

Felix

Python 编程 Code Programing 阅读代码

golang--切片(slice)

en

slice Go 语言 切片

性能优化挑战重重,鲲鹏 HPC 如何突破算力桎梏?_服务革新_华为云开发者联盟_InfoQ精选文章