16 有计算基础的学生培养超算能力

学生超算能力培养是一项复杂系统工程,激发他们的学习兴趣,让他们对超算”祛魅”是第一步。在不少学生眼里,超级计算、高性能计算、并行计算是一个很神秘很高大上的领域,与他们的生活似乎很遥远,更不用说还能有机会上手使用超算。

因此,交我算团队通过硕士生培养和学生超算队的建设,将超算带入学生们的视野,让他们首先有机会接触超算,对超算产生学习兴趣和动力,然后学习和使用超算,最后能够应用超算解决实际问题。

16.1 超算竞赛

16.1.1 超算竞赛体系

超算领域有三大国际赛事,美国的SC国际大学生超级计算机竞赛(Supercomputing Conference,简称SC)、欧洲的ISC国际超级计算机竞赛(International Supercomputing Conference,简称ISC)、中国的ASC世界大学生超级计算机竞赛(Asia Student Supercomputer Challenge,简称ASC)。这三项国际大赛属于综合性赛事。

在国内,也有业界组织的各类竞赛,相对比较注重代码优化,包括全国并行应用挑战赛(Parallel Application Challenge,简称PAC)、ACM中国-国际并行计算挑战赛(ACM-China International Parallel Computing Challenge,简称IPCC)、国产CPU并行应用挑战赛(China Parallel application Challenge on domestic CPU,简称CPC)、“先导杯”计算应用大奖赛等。

参加超算比赛不仅能让学生深刻了解超算的平台,更为高校提供了人才培养机制,让高校从中获取高性能计算专业人才。超算竞赛能够教会学生如何管理一个复杂系统,考察学生从芯片微架构体系结构、到芯片间的互联、节点的互联、到操作系统、代码优化等各个方面的综合能力,极具挑战性。

16.1.2 学生超算队的选拔与培养

从2013年起,网络信息中心”交我算”团队教师牵头,吸引了一批对超算感兴趣的学生成立校级超算队,参加各类国内外超算竞赛。

早些年超算队的队员们大多来自计算机专业,近几年很多非计算机专业的学生也开始加入,如物理、生物医学、工程力学等。学生加入超算队之后,会经过一系列培训、实训、指导以及来自”交我算”各方面的支持。

  • 强大算力:队员可以使用”交我算”校级计算平台强大的算力资源。
  • 专业指导:指导教师来自”交我算”团队,在超算领域有10年以上工作经验。
  • 日常培训:通过以老带新的方式,组织新队员集体学习不同比赛所需的超算知识技能,涵盖HPL、MPI、OpenMP、CUDA等内容。
  • 实训备赛:新队员按照自己感兴趣的方向、比赛或赛题进行分组后,与老队员一同进行备赛和日常训练。
  • 企业资源:邀请企业工程师对队们进行专题培训,如Nvidia组织的加速计算基础——CUDA C/C++培训。

队员在实际备赛时,会结合国内和国外比赛的特点,采用不同的备赛模式。 在7-9月国内举办的比赛中,往往不限年级,每组人数在4-10人不等。队员们抱着”秣马厉兵”的心态,本科生和研究生混合组队,以老带新快速成长,为之后的国际大赛提前做准备。 在11月-第二年5月举办的国际比赛中,赛制要求仅能本科生参与,每组5人;队员们会分工合作、全力以赴,每1-2位队员主要负责一个方向的赛题(如集群组装、HPL测试、应用优化等)。

对于集群组装、系统搭建、HPL测试等每年基本稳定不变的特色项目,队员们赛前会实际动手练习、锻炼大家的配合度,以便现场能够快速完成任务;对于应用优化等变化多端的赛题,队员们会以往届赛题为例进行实战演习,训练代码优化技能。

16.1.3 案例:第二届ACM中国国际并行计算挑战赛一等奖(唯一)

2021年,第二届ACM中国国际并行计算挑战赛ACM-China International Parallel Computing Challenge(以下简称”IPCC”)总决赛,上海交通大学网络信息中心指导学生超算竞赛团队从15支劲旅中脱颖而出,获得决赛一等奖(唯一)。IPCC由ACM中国指导,ACM中国高性能计算专家委员会等联合主办,比赛分为初赛和决赛两个阶段,共历时4个多月。 本次参赛队伍由来自电子信息与电气工程学院的左思成、王鎏振,揭春燕以及机械与动力工程学院张洪健组成。网络信息中心”交我算”团队文敏华担任指导老师,校”交我算”平台用户、物理与天文学院王伟教授对代码给予了宝贵的优化意见。 从拿到决赛赛题开始,周期仅两周,参赛选手要破题、解读指定代码,再进行优化算法设计。在选择多重网格和还是BiCGSTAB,如何判断哪种是最优解题路径时,在物理与天文学院王伟教授指导下,选择的BiCGSTAB成为解题正解。最后在72小时内,采用三人同步、协同作战方式,交上了一份满意的答卷。

团队每年组织并指导本科生参与亚洲大学生超级计算机竞赛(ASC),并于2016年摘得亚军,2014年摘得冠军,2016年6月队伍赴德国参加了ISC超算大赛并获得季军。2019年11月赴美国参加SC19世界大学生超算大赛,获得第5名。

校级超算队历年战绩:

  • 2023年:ASC22-23世界大学生超级计算竞赛总决赛一等奖(图16.1
  • 2022年:PAC2022第十届”英特尔”杯全国并行应用挑战赛二等奖(第二)
  • 2021年:ASC20-21世界大学生超级计算竞赛总决赛一等奖,IPCC第二届ACM中国国际并行计算挑战赛一等奖(第一),PAC2021第九届”英特尔”杯全国并行应用挑战赛二等奖(第二)
  • 2020年:PAC2020第八届”英特尔”杯全国并行应用挑战赛应用组铜奖
  • 2019年: SC20-SCC世界大学生超级计算机竞赛总决赛第5名(美国·丹佛)
  • 2018年:ASC世界大学生超级计算机竞赛一等奖和应用创新奖
  • 2017年:ASC世界大学生超级计算机竞赛应用创新奖,PAC2017第五届”英特尔杯”全国并行应用挑战赛,第五届大学生RDMA编程挑战一等奖,国产CPU并行应用挑战赛创新优秀奖
  • 2016年:ASC16世界大学生超计算机竞赛亚军,ISC16学生超算竞赛季军
  • 2015年:ASC15世界大学生超算竞赛应用创新奖
  • 2014年:ASC14世界大学生超算竞赛冠军
超算队比赛现场

图16.1: 超算队比赛现场

16.2 指导科研

自2013年上海交通大学高性能计算中心创立以来,依托学校政策,“交我算”长期委托上海交通大学电子信息与电气工程计算机科学系招收学生,每年固定招收硕士研究生2名。硕士研究生由“交我算”团队中具有硕士生导师资格的老师负责指导与培养。

实验室的研究围绕高性能计算,涵盖计算机体系架构、性能分析工具、并行应用优化三大主题,开展了一些列基于国产超算处理器、GPU异构加速器、国产智算芯片等多平台的高性能计算研究。团队长期和校内各个学科保持紧密合作关系,进行超大规模并行计算代码的协同开发,人工智能应用的深度合作。为了响应芯片国产化和核心技术自主可控的国家战略,实验室还与绿色计算产业联盟,华为海思等组织与公司,在国产芯片体系结构科研攻关上进行紧密协作。

16.2.1 研究方向1:GPU异构并行加速

16.2.1.1 研究背景

GPU的发展历史经历了从简单的图形加速功能到通用并行计算能力的转变。GPU的雏形可以追溯到上世纪80年代末和90年代初。当时,图形处理主要由CPU负责,但随着计算机图形需求的增长,CPU逐渐无法满足对图形处理的要求。因此,开始出现了专门用于图形渲染和处理的图形加速卡。经过了十数年的发展,GPU的图形处理能力和编程的灵活性大大增加。

在2010年前后,人们开始意识到GPU不仅可以用于图形处理,还可以用于一般的通用计算任务。随着数据规模的不断增长、以及数据类型的多元化,对于计算量的需求也逐渐增长,传统的CPU串行程序已无法获得令人满意的性能,采用合适的并行操作方法成为了优化计算性能的关键步骤。因此,出现了通用计算GPU(GPGPU)的概念,即利用GPU的并行计算能力来加速各种通用计算任务,如大规模数据并行处理、图像处理、深度学习、科学计算等。NVIDIA的CUDA和AMD的OpenCL等技术成为了在GPU上进行通用计算的主要工具。我们团队在该领域起步较早,自2010年起,为许多计算应用开发了GPU的移植版本。

同时,如今的异构加速硬件设备呈现出多元化趋势。OpenACC是一种基于指导语句的跨平台异构并行编程模型,具有较好的可编程性,同时提供较高的代码可移植性,因此我们也开始了应用的OpenACC版本的移植尝试。

近年来,伴随着深度学习方法在人工智能领域中的广泛应用,在校级高性能计算平台上也产生了越来越多人工智能领域应用的计算需求。为了满足这一需求并确保超算平台的高效运行,必须进行相应的部署建设与性能优化工作。除了硬件设施的建设与维护外,还需要安装部署人工智能领域的框架、软件,并根据超算平台的配置与架构进行性能调试与优化,以充分利用平台的计算能力。通过持续的建设与优化,超算平台才能更好地推进人工智能相关课题的研究。 同时,人工智能平台的建设还能反哺高性能计算领域,用人工智能方法进行计算和建模,指导超算系统的运维和部署工作。

16.2.1.2 研究概述

开展GPU异构并行加速研究的十余年来,我们与校内各个学科合作,为多个领域的科学计算应用和方法进行了GPU异构移植与加速,其中包括:

  • 湍流燃烧问题(流体力学)(文敏华 et al. 2021):该问题需要使用高精度计算模型求解NS方程,从而需要庞大的计算量。同时,物理化学模型的引入导致流场极为复杂,使计算域内的负载平衡问题成为大规模并行计算的瓶颈。先将湍流燃烧的数值模拟方法在单台DGX-2服务器上进行移植和优化,并设计了高效的数据通信方式,结合DGX-2的高速互联实现了多GPU并行版本。相较于CPU并行版本,在单块GPU上获得了8.1倍的性能提升,在DGX-2共16块GPU上达到了66.1倍的加速。
  • 基于历史模拟法的风险价值算法(金融)(张劼 et al. 2018):金融产品日益复杂,数量持续增长,CPU的计算能力难以满足性能需求。因此,在GPU上使用CUDA对该算法的代码进行了实现和优化。通过改进排序算法、基于Multi-stream隐藏通讯时间、解耦数据依赖并实现细粒度并行等优化方法,GPU版本的计算性能比优化后的CPU单核性能提升了42.6倍。
  • 宏基因组基因聚类(生物信息)(韦建文 et al. 2017):该方法依赖于海量的测序数据和有效的聚类算法,相关系数矩阵的计算是进行聚类前必须完成的操作,占总计算量的比重较大。依次实现了单CPU节点和单GPU卡的高效实现、利用缓存优化进一步提升性能、以及使用负载均衡方法在MPI线程间分发计算任务,在16节点CPU上获得了238.8倍的加速、6块GPU卡上获得了263.8倍的加速。
  • PIC方法(计算等离子体物理)武海鹏 et al. (2018):该方法需要使用大量的计算粒子以达到高计算精度,导致非常庞大的计算量。首先设计了一个最初版本的基于GPU的算法,将最耗时的两个函数移植到GPU上,并使用CUDA实现,相比于CPU版本最高获得了30倍的加速。随后又提出了一系列加速初始的GPU版本的方法:动态冗余算法、混合精度算法、粒子排序算法,并且通过RDMA技术提高了MPI的通信性能。实验结果证明,与初始GPU版本相比加速了最高6.1倍,通信过程提速了最高2.8倍。
  • 直接模拟蒙特卡罗方法(稀薄气体动力学)Zhang et al. (2022):首先,通过实现异构并行,让GPU来负责绝大部分的计算,而CPU只负责初始化、结果输出等少量工作,减少庞大的数据量带来的计算负担,取得了10倍以上的加速比。其次,提出了一种基于共享内存架构的细粒度并行策略,通过OpenMP实现了“双重分解”的方法,来实现负载解耦,还提出了一种低开销的多段划分算法,可以减少70%以上的负载不平衡,并行效率也提升了最多21.8%。

面向日渐多元化的异构加速设备,我们通过实验和构建性能模型(王一超 et al. 2015),针对OpenACC在Intel Knights Corner和NVIDIA Kepler架构上的性能可移植性开展了分析。我们通过Stream和MaxFlops测试算例获得内存传输带宽和浮点数运算的峰值性能,从而构建了针对两个硬件架构的屋顶线性能模型和相对性能模型。测试数据显示,所有的算例距离峰值性能还有比较大的差距。在相对性能的比较中,Knights Corner上的性能相比Kepler,除了1个算例达到约70%外,其余均未达到40%。这表明了未经优化的OpenACC代码在两个硬件架构下的性能可移植性不佳。我们还在另一项工作(Wei et al. 2016)中,实现了第一个OpenACC版本的GTC-P,并评估了其跨NVIDIA GPU、Intel x86和OpenPOWER CPU的性能可移植性。与原生版本相比,OpenACC 版本实现了最高90%的性能。

在推进人工智能领域科研方面,在工作(王一超 and 韦建文 2017)中,我们充分利用校级高性能计算平台上的GPU加速卡的硬件资源,在平台部署了多款主流深度学习软件框架,如TensorFlow等,向校内用户提供面向深度学习应用的计算服务。同时,我们通过对图像识别领域Inception模型的训练实验,验证了平台对深度学习应用的支持效果。实验结果显示,交大π超算的模型训练性能与当时最新NVIDIA GPU工作站上的性能相当,可以充分支撑校内深度学习相关应用。

同时,人工智能方法也可以反过来用于指导超算系统运维和部署。在工作(Wu, Wei, and Lin 2022)中,我们为作业调度程序添加了I/O感知功能,以协助高性能计算系统的I/O管理。我们开发了SchedP,训练神经网络模型来预测每个作业的I/O模式,如果立即开始的作业会导致系统的 I/O 拥塞,则做出将其延迟的决策。我们将其集成到Slurm中,并在生产环境中使用真实的HPC工作负载进行了约一个月的评估。结果表明SchedP在预测作业I/O模式方面的训练和测试准确率均达到99%以上,且对缓解系统I/O争用有明显效果。 在工作(王一超, 王鎏振, and 林新华 2022)中,我们利用神经网络多层感知器(MLP)和双向门控神经网络(Bi-GRU)这2种深度学习模型对MPX数据进行拟合,为硬件计数器复用(MPX)提供结果精度更高的估计模型。实验结果表明,同时收集15个硬件事件数据时,MLP方法拟合得到的13个高性能计算应用平均准确率比现有使用最广的固定插值法高出10.53%,最多可提升19.8%;而在MLP表现较差的事件上,Bi-GRU方法得到的平均准确率提升了28.8%。

16.2.2 研究方向2:国产处理器的评测与应用的移植优化

16.2.2.1 研究背景

高性能计算对生医工等许多科学领域有着重要意义。随着人工智能、大数据分析等方法的快速发展,超算系统成为了支撑这些领域的重要基础设施。很多国家都意识到了超算系统的重要性,纷纷投入资源来建造和发展超算系统。我国也在近几十年投入了大量资源来发展自主可控的超算系统,以提升国家在科学领域的竞争力和自主创新能力。

1983年,国防科技大学成功研制了我国的第一台超级计算机“银河一号”,让中国成为继美国、日本之后第三个能独立设计和研制超级计算机的国家,也是第一个以发展中国家的身份制造了超级计算机的国家。在接下来的几十年,国产超级计算机稳步发展,多个超级计算机系列陆续建成,其中包括了首次进入TOP500前十的曙光4000A、首次登顶TOP500的天河一号、以及采用自主可控处理器登顶TOP500的神威·太湖之光等。这些超级计算机的发展和成就标志着我国在高性能计算领域取得了重大进展,为科学研究和工程应用提供了强大的计算支持。我们团队多次与国家级超算团队合作,在当时最领先的集群上开展评测、优化等研究工作。

与此同时,美国对我国在芯片方面进行了一系列的控制措施,限制了我国在特定芯片技术和产品上的获取和使用,对我国芯片产业的供应链产生影响。为了减少对国外技术的依赖,在高性能计算领域实现自主可控,我国正在努力推动芯片方面的自主研发和技术创新。为响应国家号召,我们团队也在大力推进国产芯片相关的研究,研究对象包括基于ARM架构的鲲鹏920处理器,以及基于Alpha架构、拥有自主扩展指令的申威26010处理器等。

16.2.2.2 研究概述

由于当前业界对于国产芯片的研究分析较少,我们团队与其他超算中心和企业在国产超算方面进行了多项合作研究,为国产集群的发展提出建议。我们曾在神威·太湖之光、曙光E级超算原型机等国产超算系统上,为申威、海光、鲲鹏等国产处理器进行过性能评测分析,开展过科学计算应用的移植和优化。

神威·太湖之光搭载了中国自主研发的SW26010众核处理器,Linpack性能峰值达到125PFlops,理论峰值达到93PFlops,自2016年6月以来,连续四次蝉联TOP500排行榜首位。SW26010众核处理器由4个核心组组成,每个核心组包括1个MPE(管理处理单元)和64个CPE(8行×8列)。

我们在工作(Lin, Xu, et al. 2018)中开发了开源swCandle微基准套件来探索显着影响SW26010性能的三个主要架构特性:CPE 管道、寄存器级通信和内存访问方法。 每个CPE都有一个有序的双发出流水线,它允许矢量化浮点指令与数据运动指令在相同的周期内共同发出。我们开发了一个微基准程序,证明了有序双发流水线之间的指令下发顺序是乱序的。 为了弥补其有限的片外内存带宽,SW26010 使用轻量级寄存器级通信 (RLC) 在内核组的 64 个 CPE 之间共享寄存器数据。我们测量了寄存器通信的延迟,发现广播模式下的RLC与P2P模式下具有相同延迟。 SW26010 有两种类型的内存:每个 CPE 的片上 64 KB的SPM,以及在 64 个 CPE 和 MPE 之间共享的片外 8 GB 内存。我们开发了微基准程序来测量它们的延迟、带宽等数据。

利用上述工作中获得的测试结果,我们能够深入了解SW26010的架构特性,为各类计算应用提出性能优化的方向。我们在神威·太湖之光上开展了多个应用移植优化的工作,其中包括:

  • DGEMM(双精度通用矩阵乘法)(Lin et al. 2017):设计了一种 RLC 友好算法,重用已驻留在64个CPE寄存器中的数据,使SW26010的一个核心组的效率能够提升到88.7%。
  • N-Body(Lin et al. 2017):由于SW26010对超越运算的硬件支持效率低下,用一个软件例程来替换程序中的倒数平方根(rsqrt)指令,能够达到效率提升的目的。
  • OpenFOAM(Lin, Wen, et al. 2018):开发了RLC友好的非阻塞预条件共轭梯度(RNPCG),以最小化all_reduce通信成本,实现了最多8.9倍的加速。
  • GTC-P(Cai et al. 2018):在OpenACC版本中,由于数据局部性较差,内存访问不规则的内核成为主要的性能瓶颈。为了解决这个问题,进行了寄存器级通信和“异步”策略的两项优化,可以为内存绑定内核实现高达 2.5 倍的加速。

除此以外,我们还进行了华为、海光等国产处理器的性能评测工作:

  • 华为鲲鹏 916 处理器不是专门为 HPC 设计的,但它拥有 32 个 ARMv8 内核,对于 HPC 工作负载来说很有吸引力。为了全面了解其潜力,在工作(Wang et al. 2019)中,我们通过运行著名基准测试、典型科学内核、以及广泛使用的科学计算应用程序,将鲲鹏916与Intel处理器的性能结果进行了对比分析。
  • 曙光E级超级计算机原型系统采用了CPU+DCU加速卡的异构架构。其中CPU采用的是AMD授权的海光x86处理器,加速器采用的是海光深度计算器DCU(Deep Computing Unit)加速卡。我们在工作(王一超 et al. 2020)中采用基准测试集评测了原型机的浮点计算能力、访存带宽、访存延迟等关键性能指标,并将其CPU部分与主流的Intel处理器进行对比。同时,将GTC-P应用移植到原型机上,并进行了同构和异构的并行测试,分别与Intel的CPU处理器和NVIDIA的GPU处理器进行了对比。

16.2.3 研究方向3:超算集群性能测评方法与工具

16.2.3.1 研究背景

传统的高性能计算行业以算力作为核心生产力。如今,随着数据价值的不断提升,以及大数据、人工智能等新兴数字产业的兴起,高性能计算正在由“大计算”的HPC加 速迈向“大计算”+“大数据”的HPDA(高性能数据分析)。随着社会经济的发展和科学的进步,爆炸式增长的应用需求不断促进高性能计算往更广、更深的领域进行系统性扩展。当前计算性能已不再是评价高性能计算集群的唯一标准,集群的综合性能日益受到重视,例如性能波动、存储、网络、能耗等。

近年来,随着超级计算机上处理器数量飞速增加,处理器性能波动的问题也日益受到重视。处理器的性能波动难以定位和溯源,具有很强的隐蔽性。但是,微小的性能波动,在超算系统中经过传播与耦合,最终也可能会导致整机性能的巨大损失。因此,减小超算集群的处理器性能波动成为了亟需深入研究的方向。

量子化学、基因测序、气象预测和核技术等传统的高性能计算领域需要并行处理大量的原始数据。海量数据并发执行、极高的数据并发存取效率对集群的存储性能提出了较高的挑战。在这种条件下,只有保证系统聚合能力随节点数线性扩展、保证流畅的并行I/O与高带宽的 网络才能获得复合性的计算能力,满足日益复杂的计算需求。当数据存力不足或者效率低下时,数据就无法高效流动、按需使用,也就无法充分挖掘其价值,小则影响算力作用的充分 发挥,大则关乎整个高性能计算产业的发展。存储性能是继计算性能之后,各行各业数字化能力建设的一种进阶,在数字经济发展中至关重要。存储与计算性能高度融合,方能真正形成新的核心生 产力,能够在各种业务场景中让效率指数级增加,让生产力获得前所未有的解放。

高性能计算在非传统的应用领域中也发挥着独特的作用,例如金融、投行和保险业所承担的风险分析工作,除了发挥传统高性能计算的密集计算性能外,集群更多融入了数据处理、事务处理和信息服务的功能。在这些场景下,科学计算能力的主导地位有所弱化,相反,网络和存储提供的实时数据处理和快速交付功能更为凸显。

当代高性能计算的发展,能耗和功耗也扮演着越来越重要的角色,逐渐成为成为大规模计算平台建设必须考虑的重要因素,绿色节能也成为衡量高性能计算平台综合性能的重要尺度,TOP500和Green500排名榜单均加入能耗指标。近来,最新一代的E级超算系统的设计能耗标准是不超过20MW。

硬件工艺的更新换代对能耗的降低至关重要,但要想让高性能计算系统以最大性能、最高能耗效率运行,需要让存储、网络、计算等各个组件基于应用特征无缝衔接,否则很有可能成为整个集群性能的掣肘。因此,当代高性能计算的发展趋势更倾向于整体的综合性能。

高性能计算集群系统的综合性能评测方法,能够发挥“标尺”作用,平衡处理器、网络和存储等组件的选型,合理搭配,帮助超算中心建设高效工作的高性能计算集群系统。同时,评测工具还能够为系统的日常运维提供帮助,及时发现系统的问题部件并进行排除。

16.2.3.2 研究概述

为了契合高性能计算领域综合性能的建设方向,我们进行了两部分研究工作:其一,我们开展了超算系统综合性能的评测方法的调研、归纳与制定;其二,我们在校级超算集群上开展了性能波动的评测工作,并提出了处理器性能波动检测的计时方法与评价指标。

设计高效工作的高性能计算集群系统,需要在目标场景指引下,平衡处理器、网络和存储等组件的选型,合理搭配。高性能计算集群的综合性能评测方法能够发挥“标尺”作用,对衡量设计的有效性产生着重要作用。然而,现有高性能计算评价标准呈现出“缺少行标国标、评测程序分散、评测领域单一”的问题,存在重计算、轻存储、评测指标分散、缺少应用场景和缺少综合的性能评价规范等缺点。为了弥补现存基准测试和标准在指标设置与评价规范方面的不足,我们充分调研了Top500各大超级计算集群的性能指标,在确保科学性和可解释性的基础上,通过归纳演化,从算力(计算性能)、存力(存储性能)、运力(网络性能)和效率(系统平衡性)筛选性能评价指标、设定指标权重和评价规范方法。我们引入与使用场景相关的性能指标,通过综合评分方法,为集群的各大关键维度,分别给出评价分数,并结合专家意见,给出系统建设的进一步建议。我们联合多家单位,将相关工作成果编写成《高性能计算系统性能评价白皮书》,发布于2022年CCF HPC China会议。同时,我们撰写了超算测评标准和测试工具集的相关文档,通过了信通院的现场验证和评测,标准已进入立项流程。

处理器性能波动相关的研究主要分为评测研究、前沿探索、应用实践三个阶段。

我们在搭载了鲲鹏920芯片的校级ARM超算集群中开展了性能波动检测工作。评测分为应用层、微架构、微架构计数器三个步骤,自顶向下地缩小定位引发异常的原因。测试结果显示,鲲鹏920在跨Die访存和连续内存访问等情况下会出现多重不同的性能波动,同时影响大规模计算时的内存性能和网络性能,从而降低应用的可扩展性。

在进行处理器性能波动的检测与定位时,我们发现,随着波动源定位不断靠近处理器底层,对检测工具的性能波动检测能力要求就更高。在细粒度的性能检测中,测量值与真实值会出现偏差。为了检测微小的性能异常,也为了准确评价不同性能检测工具及方法的性能波动检测能力,我们开展了性能波动检测方法与评价指标研究(廖秋承 et al. 2024)。我们基于PAPI设计了序列化屏障计时方法,能有效减轻计时开销波动、OS噪音、缓存不命中和乱序执行等因素带来的波动,从而具有更低的计时波动。通过分析计时波动的数学模型,我们提出了计时下限和波动分度两个关键指标,来衡量计时方法的精度和灵敏度,从而评价一个工具或方法的性能波的检测能力。实验结果表明,序列化屏障计时方法相比PAPI 计时方法在计时精度上提升2.2-28.0 倍,在计时灵敏度上提升1.9-31.0 倍。

为了尽早发现和控制处理器性能波动对集群的影响,我们在集群的建设与维护过程中融合了性能波动项目。 在鲲鹏920集群的建设过程中,我们设计了专门用于性能波动检测的评测项目,除大规模HPL测试外,设置容易诱发内存子系统和网络子系统性能波动的算例,提前检查出可能影响集群性能的软硬件问题。在验收前,根据检测结果更换了2片主板、8张IB卡,进行多次全局固件实施。集群建成至今,在平均使用率高于70%的情况下,只进行过1次硬件故障更换。同时,我们在开发自研超算性能评测套件时,在测评分数几何平均的基础上,加入了性能波动评分。波动分数越高,说明性能波动明显。

参考文献

Cai, Linjin, Yi-Chao Wang, William Tang, Bei Wang, Stephane Ethier, Zhao Liu, and James Lin. 2018. “Openacc Vs the Native Programming on Sunway Taihulight: A Case Study with Gtc-p.” In 2018 IEEE International Conference on Cluster Computing (CLUSTER), 88–97. IEEE.
Lin, James, Minhua Wen, Delong Meng, Xin Liu, Akira Nukada, and Satoshi Matsuoka. 2018. “Optimizing Preconditioned Conjugate Gradient on TaihuLight for OpenFOAM.” In 2018 18th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID), 273–82. IEEE.
Lin, James, Zhigeng Xu, Linjin Cai, Akira Nukada, and Satoshi Matsuoka. 2018. “Evaluating the SW26010 Many-Core Processor with a Micro-Benchmark Suite for Performance Optimizations.” Parallel Computing 77: 128–43.
Lin, James, Zhigeng Xu, Akira Nukada, Naoya Maruyama, and Satoshi Matsuoka. 2017. “Optimizations of Two Compute-Bound Scientific Kernels on the SW26010 Many-Core Processor.” In 2017 46th International Conference on Parallel Processing (ICPP), 432–41. IEEE.
Wang, Yi-Chao, Jin-Kun Chen, Bin-Rui Li, Si-Cheng Zuo, William Tang, Bei Wang, Qiu-Cheng Liao, Rui Xie, and James Lin. 2019. “An Empirical Study of HPC Workloads on Huawei Kunpeng 916 Processor.” In 2019 IEEE 25th International Conference on Parallel and Distributed Systems (ICPADS), 360–67. https://doi.org/10.1109/ICPADS47876.2019.00057.
Wei, Yueming, Yichao Wang, Linjin Cai, William Tang, Bei Wang, Stephane Ethier, Simon See, and James Lin. 2016. “Performance and Portability Studies with Openacc Accelerated Version of Gtc-p.” In 2016 17th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT), 13–18. IEEE.
Wu, Kaiyue, Jianwen Wei, and James Lin. 2022. “SchedP: I/o-Aware Job Scheduling in Large-Scale Production HPC Systems.” In IFIP International Conference on Network and Parallel Computing, 315–26. Springer.
Zhang, Chenchen, MinHua Wen, Bin Zhang, James Lin, and Hong Liu. 2022. “A Load-Decoupling Parallel Strategy Based on Shared Memory Architecture for DSMC to Simulate Near-Continuum Gases.” Computer Physics Communications 279: 108466.
廖秋承, 左思成, 王一超, and 林新华. 2024. 处理器性能波动检测的计时方法及评价指标.” 计算机学报 47 (456-472).
张劼, 文敏华, 林新华, 孟德龙, and 陆豪. 2018. 基于历史模拟法的风险价值算法在gpu上的实现和优化.” 计算机科学 45 (291-294+321).
文敏华, 汪申鹏, 韦建文, 李林颖, 张斌, and 林新华. 2021. 基于dgx-2的湍流燃烧问题优化研究.” 计算机科学 48 (43-48).
武海鹏, 文敏华, SEE Simon, and 林新华. 2018. 激光等离子体相互作用模拟的并行和加速研究.” 计算机科学与探索 12 (550-558).
王一超, 王鎏振, and 林新华. 2022. 利用深度学习的硬件计数器复用估计算法.” 国防科技大学学报 44 (114-123).
王一超, 秦强, 施忠伟, and 林新华. 2015. 在Intel Knights Corner和NVIDIA Kepler架构上OpenACC的性能可移植性分析.” 计算机科学 42 (75-78).
王一超, 胡航, Tang William, 王蓓, and 林新华. 2020. “使用gtc-P应用评估曙光e级原型机的性能.” 计算机工程与科学 42 (1-7).
王一超, and 韦建文. 2017. 基于高性能计算平台的TensorFlow应用探索与实践.” 实验室研究与探索 36 (125-128).
韦建文, 许志耿, 王丙强, SEE Simon, and 林新华. 2017. 异构集群上的宏基因组聚类优化.” 计算机科学 44 (20-22+47).