什么是MPI
MPI,全称Message Passing Interface,中文名为“消息传递接口”,是一种用于编写高性能并行计算程序的跨平台通信协议。它定义了多进程并行计算中不同进程之间通信的标准,包括点对点通信、广播、归约等操作,支持大规模并行计算的高性能、可移植性以及灵活性。在高性能计算领域,MPI充当了统一不同进程间数据交换标准的角色,类似于人类沟通中的“普通话”,确保了不同计算机或处理器之间的高效协作。
快速安装OpenMPI
环境需求
资源规格:32核64GB 2台 (节点名为node1和node2)
部署环境:Ubuntu20.04
计算应用:通过Openmpi编译的VASP
安装步骤
node1和node2节点同时执行:
1.安装OpenMPI依赖库
apt-get update
apt-get install build-essential gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev
2.安装SSH服务
apt-get install ssh
3.设置SSH免密登录,生成SSH公钥和密钥并复制到另一个节点上
ssh-keygen -t rsa
ssh-copy-id -i node1或2
4.取消SSH登录公钥检查
echo "StrictHostKeyChecking no \nUserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config
5.启动SSH服务
service ssh start
6.测试免密是否成功
ssh root@node2
通过Mpirun运行并行计算作业
1.设置环境变量
export OMP_NUM_THREADS=1
export OMPI_ALLOW_RUN_AS_ROOT=1
export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
2.执行mpirun
mpirun -np 48 --map-by ppr:24:node --host node1,node2 /vasp/bin/vasp_gam
-np 代表任务总进程数
--map-by ppr:24:node 代表每个节点24个进程
--host 代表作业运行的节点列表
统计不同参数下的作业执行时间
从下图的对比中可以发现,作业运行时间随着核数增加减少。
而作业总核心数相同时,两节点会比单节点时间消耗略微增加,但也还在合理范围中,表明Openmpi在多机并行计算时效率还是比较可观的。
总结
在小规模集群中Openmpi的上手还是比较简单的,只需要配置SSH免密登录、节点列表、每个节点部署相同的环境,即可运行并行计算作业。在测试中也展示出了比较高的并行计算效率。
但是在大规模超算作业中,各方面的因素对作业并行计算效率都会有显著的影响,比如单机性能、存储性能、网络延迟和吞吐量等。通过使用天翼云的批量计算可以快速发布超算作业,用户无需关心底层资源和框架配置,一键发布高性能超算作业,大大减少了用户的使用成本。