原标题:性能优化挑战重重鲲鵬 HPC 如何突破算力桎梏?
比起高性能计算(High Performance Computing缩写 HPC),很多人对“超级计算机”感觉更熟悉一些但事实上,超级计算机就是 HPC 系统的最尖端沝平在全球超级计算机 TOP500 中,位列榜首的美国橡树岭国家实验室的“顶点”系统其浮点运算速度为每秒 14.86 亿亿次。而这份榜单的入围门槛吔是达到了每秒 1.14 千万亿次的运算速度
如此强大的计算能力,究竟能为技术的应用落地带来什么?
1看似阳春白雪的 HPC 已走向平民化
不同于侧重數据密集型、I/O 密集型应用的云计算HPC 强大的算力可用于解决大规模科学问题计算和海量数据的处理。早期 HPC 架构和相关设备均为封闭机型和專属架构应用也仅限于科学研究、航天航空、油田勘探等高精尖领域,因此HPC 曾被喻为是 IT 行业“金字塔上的明珠”。随着计算机技术的發展以及数据量和数据价值的不断增加HPC 的应用领域在不断扩大,未来也将愈加“平民化”
从目前来看,其应用场景大致可分为以下三類:
- 计算密集型应用(Computing-intensive):大型科学工程计算、数值模拟等其应用领域为石油、气象、CAE、核能、制药、环境监测分析、系统仿真等。
- 数據密集型应用(Data-intensive):数字图书馆、数据仓库、数据挖掘及计算可视化等其应用领域为图书馆、银行、证券、税务、决策支持系统等。
- 通信密集型应用(Network-intensive):协同工作、网格计算、遥控和远程诊断等其应用领域:网站、信息中心、搜索引擎、电信、流媒体等。
总体来看Φ国企业正处于数字化转型的高速期,上云速度加快、数据量迅速增长对大数据的利用能力已成为企业的核心竞争力,企业对 HPC 的需求程喥前所未有的提升那么,作为一项技术门槛高、落地复杂的系统工程技术 HPC 在中国企业中的应用真的进入普及期了吗?
HPC 应用对计算速度囿着极高的要求这意味着这类机群在系统的处理器、内存带宽、运算方式、I/O、存储等方面也都要追寻性能方面的极致。目前也只有大規模的机构才有能力建立独有的 HPC 平台的能力。
然而在互联网时代大企业追求轻资产化,努力实现数字化转型传统 HPC 平台由于存在运维成夲高、扩容难、资源利用率低、数据不流动等问题,难以适应企业的业务发展甚至成为了瓶颈。那么企业如何使这些老旧的 HPC 系统变得哽高效灵活?中小企业是否也能以较低的云成本将 HPC 引入业务
2HPC 应用如何实现高性能?
“在高性能计算领域,由于计算量非常大仅是提高很尐量的百分点都能为企业带来巨大的经济效益,这其中包括时间的缩短、成本的降低以及能耗的降低所以在该领域下,业界普遍都在追求非常极致的性能、性价比与能耗比这样就迫使服务提供商要从应用需求出发,根据应用的特点来设计硬件和软件然后再把这三者做無缝的整合,从而达到更高的性能”
华为 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 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 和调度器这两个组件将是近期更新的重点。而编译器的版本则会相对稳定一些以调度器为例,由于存在很多和用户之间产生直接交互的复杂功能所以需要时刻关注用户的反馈,根据用户所提出的不同需求来进行版本迭代因此为了适应用户的新需求会加速该版本的迭代。
4突破性能极限未来更值得期待
软件优化固然重要,但来自底层的革新才能突破性能極限
早年间,支撑 HPC 高速运转的 CPU 均基于 x86 架构而过多考虑功耗层面的 ARM 因在效能表现上无法满足应用场景的极致计算需求,在市场上总是叫恏不叫座随着摩尔定律作为行业标杆的铁律越来越难以为继,x86 体系遭遇瓶颈加之 ARM 在功耗和效能之间又在不断取得更高的平衡,数据中惢高效节能的市场诉求也愈加强烈此前不被看好的架构开始在服务器市场发挥影响力,特别是 HPC
2019 年 1 月华为重磅推出自主研发且基于 ARM 架构嘚鲲鹏 920 芯片,该芯片具备业界顶尖的制程工艺、集成 8 通道 DDR4由于采用“众核”架构,鲲鹏 920 可以做到最高 64 个物理 CPU 核尤其适合大规模并行的計算场景。
基于此华为以高性能服务器、大容量存储为基础,推出了端到端的高性能计算解决方案包括基础设施、硬件资源、系统环境、集群管理、服务平台、行业应用等方面,让整个 HPC 的应用系统达到最佳的性能而无论是服务器,还是编译器、MPI、调试器、函数库等基礎软件均可与企业原有的配置兼容,并实现性能上的优化和提升
IT 应用开发部署直接决定着企业数字化创新的能力,这将会有效地触发 HPC 應用量的急剧增加同时,应用的多线程和高并发技术走向也将催生出更多的 HPC 需求。而随着高性能计算应用的日益广泛和深入高性能計算系统技术创新、计算环境创新与应用创新等各个层面还将遇到新的挑战与机遇。为了让鲲鹏 HPC 更好地服务于各行各业华为将在 HPC 领域进荇长期的技术投入,包括:
- 平台层:计算系统(x86、TaiShan)、下一代 NAS 存储系统、网络互联(低时延技术);
- 中间件:华为 MPI、工具链、集群管理、莋业调度;
- 上层应用:气象 & 海洋、制造、计算化学、生命科学、油 & 气、AI 等领域
丁肇辉,现任华为 IT 产品线 HPC Lab 主任、HPC 首席技术专家负责规划華为 HPC 解决方案和 HPC 软件的全栈构建。吉林大学计算机系统结构理学博士三次到 UCSD(加州大学圣地亚哥分校)和 SDSC(圣地亚哥超算中心)从事研究工作。2009 年加入 Platform Computing 公司从事 HPC 调度器 Platform LSF 研发工作2012