写点什么

揭开 HPC 应用的神秘面纱

作者:openEuler
  • 2022 年 9 月 27 日
    新加坡
  • 本文字数:2342 字

    阅读完需:约 8 分钟

本文作者:方春林(Qiyu8)原文来源:https://zhuanlan.zhihu.com/p/489828346




关于作者方春林,Numpy/Taro Maintainer,USIMD 和 HPCRunner 开源项目 Leader,目前主要聚焦于 openEuler HPC SIG 运营,openEuler HPC SIG 致力于建立气象、分子动力学、生物和制造等领域的生态交流圈,打造 HPC 多样性算力部署调优统一平台,自动容器化助力极简部署,一站式调优 HPC 应用,让看似阳春白雪的 HPC 应用走向平民化!



1. 前言

说起高性能计算(High Performance Computing,缩写 HPC),很多人第一个想法就是动辄亿亿次浮点运算的“超级计算机”,国家花这么大代价做出来的机器干啥用呢,其实大到天气预报、飞机制造、新冠疫苗研发,小到唐氏筛查、《熊出没》渲染,到处可见 HPC 的身影,就拿最近的北京冬奥会来说,其成功举办就脱离不了济南超算对空气质量预报准确及时的预警,当然 HPC 也可以离我们很远,举几个戈登贝尔奖的栗子(被誉为“超级计算应用领域”内的诺贝尔奖)。



对超算来说硬件很重要,但现在是“软件吞噬一切”的时代,路修的再好没有车在上面跑也没用,如果把开源软件比作汽车市场,那么 HPC 应用就是这个市场中的 “豪车”,为了追求最极致的性能,它们用着最先进的“发动机”(编译器)、最复杂的“轮胎”(并行技术),同时也拥有最繁琐的“机械结构”(安装和调优流程),优化过 HPC 应用的“赛车手”都有一个感受:抱黄连敲门—苦到家了,难怪 HPC 被喻为是 IT 行业“金字塔上的明珠”,本文旨在通过部署调优一个量子化学的 HPC 应用让大家直观的感受 HPC 的魅力,让看似阳春白雪的 HPC 也能走向平民化,走向每个人、每个家庭、每个组织。

2. 求解薛定谔方程

波函数被证明对获取材料的宏观性能(如光学性质、力学性质、热力学性质、磁学性质)极具价值,现实中的物质由多个电子构成的,它们的波函数该如何求解?一个铁原子有 26 个电子,两个有 52 个电子,计算 2 个铁原子相互作用时,需要计算任意一个与其它 51 个电子的相互作用,当计算原子数增加时,计算量呈指数增加,100 个铁原子的计算量恐怕都是天文数字了,更不要说几十万个原子(纳米材料),这就不得不提著名的 Kohn-Sham 公式,他将多电子体系近似用一个或几个函数来代替求解多体薛定谔方程,计算量大大减少,Kohn 因为这个公式获 1998 年 Nobel 化学奖,本文要介绍的 HPC 应用 QE 就是这个公式的开源实现,在量子化学领域被广泛应用,从官网介绍来看,“QUANTUM ESPRESSO 是一种用于电子结构计算和材料建模的量子化学方法的软件套件,在 GNU 通用公共许可证下免费分发。它基于密度泛函理论,平面波基组和赝势(包括范数守恒和超软)理论。”,这段文字看不懂没关系,只要记住求解公式是这个就行了:



▲ Kohn-Sham 公式

3. 安装 QE

准备工作:CentOS7/openEuler+ARM 服务器


QE 的安装可以参考文档(https://support.huaweicloud.com/prtg-kunpenghpcs/openmind_kunpengqe_02_0001.html)一步步安装。


但是本文推荐另一种更简便的安装方式,那就是 HPC 贾维斯助(https://gitee.com/openeuler/hpcrunner),专门为 HPC 应用打造的一键依赖安装、环境配置、编译、运行、调优平台,将 HPCRunner 解压或者 clone 到服务器某个位置,其目录结构及说明如下所示:



▲ 贾维斯源码目录


步骤 1:进入这个贾维斯目录并初始化环境


cd hpcunner
source ./init.sh
复制代码


步骤 2:拷贝 QE 的 HPC 配置并切换到改配置(基于鲲鹏 GCC+OpenMPI 技术栈)


cp ./templates/qe/6.4/data.qe.test.config ./
./jarvis -use data.qe.test.config
复制代码


步骤 3:获取 QE 及依赖软件


l 下载QE 6.4版本(https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz),解压至tmp目录
tar -xzvf ./downloads/q-e-qe-6.4.1.tar.gz -C /tmp

2 将QE的算例也拷贝至/tmp
\cp -rf ./workloads/QE/qe-test /tmp
复制代码


步骤 4:一键下载并安装依赖


l 执行如下命令安装鲲鹏 GCC+OpenMPI (请准备咖啡,5 分钟左右)


./jarvis -d -dp
复制代码



▲ 下载依赖并安装


步骤 5:一键编译 QE


./jarvis -b
复制代码



▲ QE 的编译


步骤 6:一键运行 QE


./jarvis -r
复制代码



▲ QE 的运行


几分钟后应该可以看到“JOB DONE”字样,经过 14 次 SCF 自洽运算我们就可以得出原子间的能量值,到这里你已经体验了一遍 HPC 应用的安装运行全流程了。

4. QE 调优

在 HPC 应用运行的过程中,可以通过 perf 性能工具无侵入式的采集热点函数数据,而且以目录树的形式展现出来。



步骤1:运行QE
./jarvis -r


步骤2:新建窗口并进入hpcrunner目录,运行性能采集命令
./jarvis -p
复制代码


从热点函数实时分布图可以看出除了 MPI 通信之外,GEMM 矩阵运算操作占比较高,可以考虑使用 openblas 进行替代,同时可以考虑把编译器换成毕昇、MPI 通信库换为 HyperMPI。



步骤3:拷贝优化配置
cp ./templates/qe/6.4/data.qe.test.opt.config ./


步骤4:切换到优化配置
./jarvis -use data.qe.test.opt.config


步骤5:一键下载并安装依赖(大概6分钟左右)
./jarvis -d -dp


步骤6:一键编译QE
./jarvis -b


步骤7:一键运行QE
./jarvis -r
复制代码



▲ 优化之后的 QE


这次的运行时间是不是更短了呢?让我们对比一下前后的性能情况吧



▲ QE 前后性能对比


如果你也得到了这个结果,那么恭喜你完成了一次 HPC 应用的调优!

5. 总结

雄关漫道真如铁,而今迈步从头越,实际 HPC 应用的优化之路险阻而又漫长,越是交叉学科越需要全人类的智慧共同参与才能结出美丽的果实,但是我坚信只要一直走,总有一天会到达目的地。


美好的未来在前方,如果您对 HPC 有兴趣请加入到 openEuler HPC SIG,这里除了有迁移调优技术分享,还有大量开源实习机会(https://gitee.com/openeuler/hpcrunner/issues),在家也能领工资,更有百万奖金众智计划等你来拿。请关注开源项目贾维斯,为多样性算力添砖加瓦,共建 openEuler 生态。


欢迎围观联系,加入交流群 openEuler HPC SIG


https://gitee.com/openeuler/hpcrunner


欢迎关注贾维斯项目:


https://gitee.com/openeuler/hpc


用户头像

openEuler

关注

还未添加个人签名 2020.09.30 加入

开源操作系统 openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目

评论

发布
暂无评论
揭开HPC应用的神秘面纱_开源_openEuler_InfoQ写作社区