12 案例系列1:性能优化
12.1 流行病学归因算法优化
12.1.1 案例背景
归因算法广泛应用于临床医学研究,可用于评估多种危险因素对某种疾病发生的贡献度、探索糖尿病等疾病并发症成因,为疾病预防及干预提供依据。在年龄超过40岁的成年人中,通常需要深入研究三个关键因素:生活习惯危险因素、社会危险因素和代谢危险因素,这三种因素对全因死亡、心血管疾病死亡和肿瘤死亡的影响程度,对于改善心血管健康和降低肿瘤疾病风险至关重要,可为预防和干预措施的制定提供了重要的决策依据。通过深入了解这些因素对不同疾病的贡献比例,我们可以更精确地识别潜在的健康威胁并制定有针对性的干预计划。这不仅可以改善患者的生活质量,还可以降低医疗成本。因此,这项研究对于公共卫生决策者、医疗专业人员和个体健康管理都具有巨大的重要性。最终,这项研究有望为我们更好地理解和管理心血管疾病和肿瘤疾病提供关键见解,以实现更健康的社会和更长寿命的生活。
在本项研究中,研究团队面临着对超大样本进行高度复杂分析的挑战,且涉及的危险因子数量巨大,这对算法要求极高,而研究团队无法独立完成算法优化工作。
12.2 基于DGX-2的湍流燃烧问题优化研究
12.2.1 案例背景
湍流燃烧的数值模拟是航空发动机燃烧室内部燃烧流动过程的重要研究手段,在燃烧室性能预估和设计定型中发挥了关键作用。由于湍流燃烧过程涉及复杂的流体运动和动力学过程,相比于传统的实验方法,数值计算能够以更短的时间与更低的经济成本模拟更复杂的流场和条件,提供更丰富的流场数据。但是,湍流燃烧问题需要使用高精度模型,带来了庞大的计算量。而复杂的物理化学模型的引入,导致流场极为复杂,使计算负载在整个计算域分布非常不平衡,给大规模并行计算带来了严重挑战,尤其对于传统的CPU集群,通常涉及上万核心的进程级并行计算,很难实现针对不同算例的高效率并行扩展。 近年来,大量研究人员利用GPU的浮点计算优势进行NS方程的求解。随着统一计算架构(Compute Unified Device Architecture, CUDA)发布,GPU计算的编程难度大幅降低,GPU在NS方程求解的应用也迎来快速发展。
12.2.2 工作与成效
DGX-2作为单机双精度浮点性能超过120TFLOPS的强大计算系统,可以有效解决湍流燃烧模拟的大规模并行问题。 为了将DGX-2的计算能力以及高速的通信速率应用于湍流燃烧问题,团队协助项目组进行了以下三个方向的优化和研究:
- 使用CUDA对采用两阶半隐式龙格-库塔方法的NS方程求解器进行了GPU的移植和优化,在GPU上实现了求解的主要步骤,如刚性/非刚性通量的计算、燃烧化学反应的计算等。这是使用CUDA框架首次在GPU上实现的湍流燃烧问题的求解过程。
- 使用Roofline作为工具分析并指导GPU优化方向,最终在单块V100上,比Intel Xeon Gold 6248 40核心节点性能提高了8.1倍。
- 采用MPI_Alltoall, MPISend/Recv, CUDA-Aware MPI 3种方式,实现了对湍流燃烧NS方程的多GPU之间的并行通信,并进行了性能评估。评估结果显示,利用DGX-2的高速互联技术,得到了66.1倍的加速效果,优于CPU所能达到的最高性能。
该工作相关的研究成果发表于《计算机科学》期刊。
12.3 肺腺癌全景蛋白质组学研究【李琛】
12.3.1 案例背景
肺癌是我国也是世界上发病率和死亡率最高的恶性肿瘤,五年存活率不足20%。肺腺癌(Lung Adenocarcinoma, LUAD)是非小细胞肺癌中最普遍存在的分型,大约占所有恶性肺肿瘤的一半。近年来,诊断出肺腺癌的非吸烟病人人数逐渐增加,这说明找出LUAD发展过程中的非吸烟风险因素是非常关键的。
目前关于肺腺癌治疗方面可供选择的治疗方式包括外科手术、放疗、化疗、靶向治疗、免疫疗法或者是这些治疗方式的组合。尽管肺腺癌治疗方面有一定的进展,但是仍有大量的LUAD还没有适合的治疗方式,因为缺少对其中遗传突变的了解或者是很难建立靶向基因突变的药物。因此,针对肺腺癌人群蛋白质分子图谱的全景绘制,对于生物标志物与药物靶点的发现、肺腺癌分子分型和精准治疗方案的制定有重大科学意义。
上海交通大学李婧教授团队作为合作单位,在国际上首次对肺腺癌开展了大规模、高通量、系统性的全景蛋白质组学研究。研究工作对103例临床病人的肺腺癌和癌旁组织进行了蛋白质表达谱和磷酸化翻译后修饰谱的深度解析,最终共鉴定到11,119个蛋白产物和22,564个磷酸化修饰位点,同时整合临床信息和基因组特征数据分析,深度构建了基于蛋白质组的肺腺癌分子图谱全景。该研究首次从蛋白质水平系统描绘了肺腺癌的分子图谱,并发现了与病人预后密切相关的分子特征,特别是发现了中国人群肺腺癌两个主要基因(TP53和EGFR)突变人群的蛋白质分子特征。
12.4 摩擦学模拟PRCL的并行与优化
12.4.1 案例背景
PRCL程序是一个摩擦学模拟程序,用于研究发动机燃烧时内表面摩擦特性。PRCL程序通过对真实工况下的发动机内表面机械运动进行建模,建立以二维雷诺方程为核心的物理模型,并使用有限体积法将偏微分方程离散化后使用迭代法求得数值解,以此来研究不同织构情况下发动机表面的摩擦特性。
PRCL的程序原型由我校机械与动力工程学院现代设计研究所团队研发,为串行代码。由于程序在性能上遇到了瓶颈,无法支持更高的精度下的计算任务。
12.4.2 工作与成效
为了使程序能进行百万格点级别的更高精度的模拟,项目依托交大校级计算平台π2.0,对PRCL进行并行代码开发与性能优化。在与使程序能够在千核级别并行运行,并且达到了最高620倍的加速。
在项目中,我们对PRCL程序的物理模型二维雷诺方程,及其求解时的计算核心Stencil,进行了深入的研究,并且借鉴前人在同类流体力学应用的解决方案,设计了基于MPI(Message Passing Interface)的并行范式。通过显式设计MPI程序的任务划分,各子任务的调度,通信的设计,完成了并行的程序实现,并把程序在320核心时加速160倍以上。
在优化方面,程序使用了两种方法对于程序核心部分进行了优化。通过基于体系结构的优化,即对求解域进行分块操作,提高一级高速缓存的命中率。通过基于数值的优化,使用更小复杂度求解解析解,以近似结果场的作为迭代初值,达到减少约30%的迭代次数的效果。优化手段可以让原程序的性能进一步提升10%以上。
全方位的实验结果表明,在高精度的工况模拟中,并行优化后的PRCL程序达到了千核620倍的加速。这一项目使得原本的PRCL程序可以进行更高精度,更大科学价值的模拟,并且也为摩擦学乃至流体力学中的同类应用提供了潜在的通用解决方案。
12.5 声子BTE应用的并行和优化研究
12.5.1 案例背景
声子玻尔兹曼输运方程(Boltzmann transport equation,BTE)能够在亚连续尺度下模拟平衡或非平衡态的热传导现象,并且由于在大范围长尺度上的有效性持续受到欢迎[1]。在最近四十年中,半导体技术快速发展不仅使得芯片计算能力大大加强,也使得功耗越来越高;当前热问题正成为决定芯片性能、可靠性和成本的主要因素。因此通过声子BTE方程模拟计算半导体器件的热传导对了解其基本物理机制和发展散热策略具有重要意义。但是当前最为成熟的有限体积法求解声子BTE方程来模拟工程实际问题时,仍然存在计算量大、计算时间长的困难。
DGX-2是NVIDIA家族最强大的人工智能系统,基于NVSwitch技术,整合16块完全互联的Tesla V100GPU构建的可扩展框架。基于其强大的计算能力以及GPU间的高速通信网络,DGX-2在通用计算领域也拥有着巨大潜力。
12.5.2 工作与成效
本项目使用CUDA框架对采用有限体积法的声子BTE求解器的迭代部分进行了针对GPU移植与并行优化。在GPU上实现了迭代计算的主要步骤,如声子散射项的计算、线性方程组的求解、晶格温度平衡态分布的计算等。在单块V100上,较Intel Xeon Gold 6248单核性能提高了5.3倍至31.5倍。
同时,在DGX-2平台上,采用3种并行方式:MPI+CUDA,NCCL(NVIDIA collective communications library)函数以及CUDA-Aware MPI,实现了对声子BTE方程的多GPU的并行求解。其中性能最优的NCCL库函数版本在8台DGX-2共128块V100上实现了83%的强扩展并行效率。
该工作相关的研究成果发表于《计算机科学与探索》期刊。
12.6 分子间长程作用力算法LAMMPS-RBE
12.6.1 案例背景
Random Batch Ewald(下文简称RBE)算法被证明可以大幅降低分子动力学计算过程中的内存使用,同时不影响分子模拟的结果精度。 由此发展的RBE-MD算法是一种基于随机分批算法的具高可扩展性的分子动力学模拟方法,突破了传统分子动力学在高性能集群上可扩展性差的问题,预期能使百万级别粒子以上的大尺度体系的计算成本降低一个数量级。理论方面,该方法将使用基于动理学或连续介质理论的路径, 研究复杂环境中微纳系统的多体效应,并结合分子动力学进行多尺度建模和数学分析。应用方面,该方法可用于计算机辅助药物设计研究,加快药物筛选的过程。
12.6.2 工作与成效
LAMMPS-RBE是由上海交通大学上海应用数学中心团队基于LAMMPS二次开发的自研软件。“交我算”团队承担LAMMPS-RBE软件大规模并行移植过程中的性能优化与异构加速工作。主要工作包括以下2点:
在华为鲲鹏ARM超算上进行大规模并行性能调优,解决代码移植后发现的大规模跨节点并行效率快速下降的问题。在性能调优后,LAMMPS-RBE在同等规模的ARM超算上,能达到同一算法在主流X86平台上的性能水平。
参与LAMMPS-RBE 2.0版本的开发工作,将RBE核心算法模块,利用CUDA并行编程模型移植至NVIDIA A100 GPU,实现自研软件的异构加速版本。
依托一些列合作创新,夯实了LAMMPS-RBE自研软件在高性能计算平台上的性能基础,同时通过异构加速增加了软件的潜在受众,为自研软件的发展提供了助力。