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

阅读数:2 2020 年 3 月 25 日 17:16

性能优化挑战重重,鲲鹏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、通信,对应的优化手段如下:

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

  • 应用:由各个领域的科学家、软件开发专家基于各自领域的算法,对求解方法进行创新,并采用不同的编程模型。
  • 计算:影响计算的主要是软件技术,如编译器、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 之一,具有模块化涉及、易于扩展等特点。

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

在 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 进行了优化,见下图:

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

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

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

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

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

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

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

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

鲲鹏 HPC 在 2020 年将会发布一套完整的软件栈体系;目前来看,比较受业内关注的 MPI 和调度器这两个组件将是近期更新的重点。而编译器的版本则会相对稳定一些。

这里以调度器为例,由于存在很多和用户之间产生直接交互的复杂功能,所以需要时刻关注用户的反馈,根据用户所提出的不同需求来进行版本迭代,因此为了适应用户的新需求会加速该版本的迭代。

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

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

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

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

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

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

鲲鹏 HPC 全栈

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

  • 平台层:计算系统(x86、TaiShan)、下一代 NAS 存储系统、网络互联(低时延技术);
  • 中间件:华为 MPI、工具链、集群管理、作业调度;
  • 上层应用:气象 & 海洋、制造、计算化学、生命科学、油 & 气、AI 等领域。

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

嘉宾介绍

丁肇辉,现任华为 IT 产品线 HPC Lab 主任、HPC 首席技术专家。负责规划华为 HPC 解决方案和 HPC 软件的全栈构建。吉林大学计算机系统结构理学博士,三次到 UCSD(加州大学圣地亚哥分校)和 SDSC(圣地亚哥超算中心)从事研究工作。2009 年加入 Platform Computing 公司从事 HPC 调度器 Platform LSF 研发工作,2012 年随公司收购加入 IBM,任 IBM Spectrum LSF 产品线全球首席架构师。

评论

发布