使用IMB软件和MPI通信库测试集群通信性能

本文以IMB软件和MPI通信库为例介绍如何测试E-HPC集群的通信性能。

背景信息

IMB(Intel MPI Benchmarks)用于评估HPC集群在不同消息粒度下节点间点对点、全局通信的效率。

MPI(Message Passing Interface)是支持多编程语言编程的并行计算通信库,具有高性能、大规模性、可移植性、可扩展性等特点。

准备工作

  1. 创建一个E-HPC集群。具体操作,请参见使用向导创建集群

    配置集群时,软硬件参数配置如下:

    参数

    说明

    硬件参数

    部署方式为精简,包含1个管控节点和2个计算节点,其中计算节点请选择vCPU核数≥8的规格,本文使用2个ecs.c7.2xlarge作为示例。

    软件参数

    镜像选择CentOS 7.6公共镜像,调度器选择pbs。

  2. 创建一个集群用户。具体操作,请参见创建用户

    集群用户用于登录集群,进行编译软件、提交作业等操作。本文创建的用户示例如下:

    • 用户名:mpitest

    • 用户组:sudo权限组

  3. 安装软件。具体操作,请参见安装软件

    需安装的软件如下:

    • intel-mpi,版本为2018。

    • intel-mpi-benchmarks,版本为2019。

步骤一:连接集群

选择以下一种方式连接集群。本文使用的用户名为mpitest,连接集群后会默认登录到/home/mpitest

  • 通过客户端

    该方式仅支持使用PBS调度器的集群。操作前,请确保您已下载安装E-HPC客户端,且已配置客户端所需环境。具体操作,请参见配置客户端所需环境

    1. 打开并登录E-HPC客户端。

    2. 在客户端左侧导航栏,单击会话管理

    3. 会话管理页面的右上角,单击terminal,打开Terminal窗口。

  • 通过控制台

    1. 登录弹性高性能计算控制台

    2. 在顶部菜单栏左上角处,选择地域。

    3. 在左侧导航栏,单击集群

    4. 集群页面,找到目标集群,单击远程连接

    5. 远程连接页面,输入集群用户名、登录密码和端口,单击ssh连接

步骤二:提交作业

  1. 执行以下命令创建作业脚本文件,脚本文件命名为imb.pbs。

    vim imb.pbs

    脚本内容示例如下:

    #!/bin/sh
    #PBS -j oe
    #PBS -l select=2:ncpus=8:mpiprocs=1 
    export MODULEPATH=/opt/ehpcmodulefiles/
    module load intel-mpi/2018
    module load intel-mpi-benchmarks/2019
    echo "run at the beginning"
    /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host compute000,compute001 /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong > IMB-pingpong   #请根据实际调整参数
    • 脚本示例使用2个计算节点,每个节点为8 vCPU,使用一个MPI任务进行高性能计算。实际测试中请根据节点配置修改#PBS -l select=2:ncpus=8:mpiprocs=1

    • 您可以根据实际需求修改脚本中/opt/intel/impi/2018.3.222/bin64/mpirun命令的参数。参数说明如下:

      • -ppn:指定每个节点的进程数

      • -host:指定任务节点列表

      • -npmin:指定最少运行的进程数

      • -msglog:指定消息片粒度范围

      说明

      通过/opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h可以查看IMB支持的通信模式及详细参数说明。

      命令示例如下:

      • 示例一:测试N个节点间allreduce通信模式效率,每个节点开启2个进程,获取不同消息粒度下的通信时间。

        /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N*2> -ppn 2 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 2 -msglog 19:21 allreduce   
      • 示例二:测试N个节点间alltoall通信模式效率,每个节点开启1个进程,获取不同消息粒度下的通信时间。

        /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N> -ppn 1 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 1 -msglog 15:17 alltoall
  2. 执行以下命令提交作业。

    qsub imb.pbs

    预期返回如下,表示生成的作业ID为0.manager。

    0.manager

步骤三:查看作业结果

  1. 查看作业运行情况。

    qstat -x 0.manager

    预期返回如下,当返回信息中SR时,表示作业正在运行中;当返回信息中SF时,表示作业已经运行结束。

    Job id            Name             User              Time Use S Queue
    ----------------  ---------------- ----------------  -------- - -----
    0.manager         imb.pbs          mpitest           00:00:04 F workq  
  2. 查看作业结果。

    cat /home/mpitest/IMB-pingpong

    本次测试结果如下:

    IBM-结果..png