Hyper-MPI

HyperMPI是一款华为自研的高性能通信库,它基于OpenMPI 4.0.3 和Open UCX 1.6.0构建,支持MPI-V3.1标准的并行计算接口。相较于openMPI,它在基于鲲鹏处理器的高性能计算集群上表现更好。

加载预安装的HyperMPI

可以用以下命令加载集群中已安装的Hyper-MPI

版本

组件说明

4.0.3

使用9.3.0版本gnu编译套件编译的4.0.3版本的HyperMPI

module load gcc/9.3.0-gcc-4.8.5
module load hmpi/4.0.3-gcc-9.3.0

使用HyperMPI编译应用

这里,我们演示如何使用系统中的HyperMPI编译MPI代码,使用的MPI代码可以在/lustre/share/samples/mpi/src/mpihello.c中找到。

加载和编译:

module load gcc/9.3.0-gcc-4.8.5
module load hmpi/4.0.3-gcc-9.3.0

mpicc mpihello.c -o mpihello

提交HyperMPI编译的应用

准备一个名为job_hmpi.slurm的作业脚本,用以提交上面编译的mpihello应用。

#!/bin/bash

#SBATCH --job-name=mpihello
#SBATCH --partition=arm128c256g
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH -n 2

ulimit -s unlimited
ulimit -l unlimited

module load gcc/9.3.0-gcc-4.8.5
module load hmpi/4.0.3-gcc-9.3.0

mpirun -np 2 ./mpihello

使用以下命令提交作业脚本:

sbatch job_hmpi.slurm

性能调优

HyperMPI使用了大量华为自研的集合通信算法,默认情况下,HyperMPI会根据硬件配置和通信规模大小选择最优的算法。

但是在某些情况下,自动选择的算法无法达到最优的性能,需要手动进行集合通信算法的选择。例如,我们在测试时发现,在消息大小较大时,MPI_Allreduce默认选择的通信算法性能不是最优,这时我们可以使用以下选项手动选择MPI_Allreduce通信算法得到最优性能:

mpirun -np ${process num} -x UCX_BUILTIN_ALLREDUCE_ALGORITHM=4 ${application}

更多相关内容介绍可以参考HyperMPI通信算法指定 ## 参考资料 Hyper MPI简介


最后更新: 2024 年 11 月 22 日