中国气象报记者 刘钊
如今,数值预报已经成为提高气象预报能力的核心技术方法,数值模式则是开展数值预报不可或缺的工具。而数值模式依赖的高性能计算技术本身在不断演进。目前,以众核、GPU为代表的异构加速计算已成为高性能计算技术的主流发展方向,而我国气象数值模式多基于CPU架构开发。
如何将业已成熟的模式移植到异构众核平台上并加以优化,使其顺畅高效运转,是必须解决的问题。国家气象信息中心、国家气候中心与江南计算技术研究所合作,将国家气候中心大气模式(BCCAGCM)移植到了我国目前最先进的超算神威·太湖之光上,并加以优化,探索国产模式移植到异构众核平台的可行道路。
CPU到众核、GPU:超算系统架构改变带来移植难题
几乎在每个时期,数值模式都使用了当时最先进的高性能计算机。如今,数值模式向着更高分辨率、更复杂物理过程、集合预报、多模式耦合的方向发展,而模式分辨率越高、物理过程越精细、模式积分计算量越大,对计算能力的要求就越高。与此相矛盾的是,处理器的单核性能增长放缓。
面对这种矛盾,人们提出的解决办法是同时使用更多的处理器,以扩大规模来提升运算速度。2010年前后至今,众核、GPU逐渐成为高性能计算系统的重要组成部件,高性能计算系统体系架构由多核CPU系统向异构系统发展。我国于2016年推出由全国产SW26010异构众核芯片构建的世界上第1台计算速度超过10亿亿次的高性能计算机——神威·太湖之光,这标志着我国高性能计算机的研制能力达到了国际领先水平。
体系架构的改变对各领域高性能计算软件带来明显影响,对于气象数值模式而言,过往我们有成千上万行基于多核通用CPU开发的代码,因此向新型计算架构系统的迁移过渡尤为困难。为了使气象数值模式充分适应异构高性能计算体系,世界各大气象超算中心均持续开展相关研究。
美国的WRF、GROS-5、NIM/FV3、MPAS和欧洲的COSMO、IFS及日本的ASUCA等模式均基于GPU和IntelXeonPhi众核系统开展了优化。美国CAM4-Chem模式在GPU上进行移植,获得约3.8倍加速,我国BCCAGCM模式辐射过程在IntelKNC众核平台进行优化,获得约2.3倍性能提升。我国清华大学、中国科学院软件所、国家海洋局第一海洋研究所等单位也基于神威·太湖之光异构众核系统开展了数值模拟程序的性能优化。
中国气象局现有数值模式也存在这个问题,国家气象信息中心与国家气候中心联手,在神威·太湖之光系统中开展了BCCAGCM模式异构众核优化工作,为未来更高分辨率数值模式的移植优化进行技术探索和积累。
移植优化取得一定加速效果
BCCAGCM模式是中国气象局国家气候中心自主研发的全球大气环流模式,也是北京气候中心气候系统模式的大气分量模式。该模式是主要短期气候预测业务模式,曾成功应用于第5次国际气候变化影响评估报告相关的气候模拟试验。模式主体包含近200个程序,约60万行代码,代码量大、计算逻辑复杂。这样的模式移植到全新架构下,难度可想而知。
由CPU架构移植到众核架构,研究人员首先需要完成模式到主核的移植工作:修改编译器、编译选项、安装相应软件、对部分代码进行适应性修改。此后,研究人员还需要对模式核心计算代码进行重构,使其可利用众核计算的特性进行加速,并尽可能控制计算误差。
研究人员通过对模式代码进行性能分析,确定计算核心段,采用OpenACC方法对核心段代码进行加速。对长期积分结果进行合理性检验的结果表明,移植和优化取得了一定的加速效果。研究人员将BCCAGCM模式计算耗时占比较高的几个核心段进行了优化访存方式、优化数据传输策略、调整循环结构等处理,增加并行度。优化后,各核心段计算效率是未优化计算的3倍左右,最高约14倍。对各优化后的模式核心段代码进行集成测试,模式整体计算速度是未优化计算的1.9倍左右,最大并行规模达到26000核,并行效率为57%。对两年模拟结果进行分析,众核集成版本可正确、稳定运行,计算误差合理。
移植优化工作仍任重道远
这次移植与优化,是我国自主研发的气象数值模式与我国自主研发的高性能计算系统的一次成功结合,并首次实现了大规模并行稳定运行。
研究人员采用了与模式开发不同的计算平台,在优化过程中修订和改进了部分代码,提高了模式整体稳定性和可移植性,其中部分优化方法和思路可应用于现有业务模式的计算优化,提升其计算效率和可扩展性,对业务发展有一定的贡献。
完成这些工作,并不意味着移植到众核平台的工作已经完成,未来的移植优化工作仍然任重而道远。
与此同时,我们要认识到异构众核计算系统的性能优化是一个持续渐进、循环迭代的过程,可获得的性能提升很大程度上与投入研发的力量密切相关。对于已经相对稳定成熟的业务模式,通过持续的技术投入和积累,更深入的程序优化改造,实现在国产众核平台优化运行是很有希望的。
目前,研究还在进一步进行中,模式整体加速效果还有待进一步提高。未来,研究将分别从动力框架和物理过程两方面顶层算法设计着手,进一步优化代码重构策略,促进算法和硬件体系架构的适应调整,并对模式在异构系统的可扩展性开展深入研究和调优。另一方面,充分考虑高性能计算系统混合架构与编程模型对数值模式软件设计的影响,基于众核、GPU等新型架构,开展模式的移植优化工作,为未来高分辨率数值模拟工作的开展提供技术支撑。