基于eRDMA部署弹性高性能计算集群

更新时间:
复制 MD 格式

本文介绍如何开通适配eRDMAE-HPC Cluster(原E-HPC NEXT),并以OSU-Benchmark应用为例,提供配置运行时参数以使用eRDMA技术加速多节点HPC应用的通信。

背景信息

利用eRDMA技术,E-HPC Cluster(原E-HPC NEXT)中的气候气象、工业仿真、分子动力等HPC多节点并行任务可达到媲美线下集群的高速网络性能,包括高带宽和低延迟,可显著提升数值模拟、仿真的效率。同时,无需额外部署RDMA网卡,即可在现有业务组网中体验到RDMA的优势,实现无缝集成和便捷应用。

准备工作

  1. 单击前往创建集群页面,创建一个E-HPC集群。具体操作,请参见创建标准版集群

    本文使用的集群配置示例如下:

  2. 配置项

    配置

    集群配置

    地域

    上海

    网络及可用区

    选择可用区L

    系列

    标准版

    部署模式

    公共云集群

    集群类型

    SLURM

    管理节点

    • 实例规格:采用ecs.c7.xlarge实例规格,该规格配置为4 vCPU,8 GiB内存。

    • 镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd

      说明

      osu-benchmark安装包基于Alibaba Cloud Linux 2.1903 LTS 64位镜像完成构建。

    计算节点与队列

    队列节点数

    初始节点2

    节点间互联

    eRDMA网络

    说明

    仅部分节点规格支持ERI,更多信息,请参见弹性RDMA(eRDMA)在企业级实例上启用eRDMA

    实例规格组

    实例规格:采用ecs.c8ae.xlarge或同代的其他AMD实例。

    镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd

    共享文件存储

    /home 集群挂载目录

    默认情况下,管理节点的/home/opt将挂载文件系统,作为共享存储目录。

    /opt 集群挂载目录

    软件与服务组件

    可安装软件

    • erdma-installer

    • mpich-aocc

    可安装服务组件

    登录节点

    • 实例规格:采用ecs.c7.xlarge实例规格,该规格配置为4 vCPU,8 GiB内存。

    • 镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd

  3. 创建一个集群用户,具体操作,请参见用户管理

检查eRDMA环境

检查计算节点eRDMA配置是否正确。

  1. 登录弹性高性能计算控制台,单击目标集群。

  2. 节点与队列 > 节点页面,选中集群中所有计算节点,单击发送命令

  3. 检查计算节点的 eRDMA 网络状态 和 RDMA 硬件/软件支持情况。

    1. 发送如下命令到所有计算节点。

      hpcacc erdma check

      在云助手发送命令对话框中,选择目标实例,执行计划选择立即执行命令类型选择Shell超时时间设为60秒,单击执行

    2. 返回如下结果,表示eRDMA配置正确。

      {"Success": true, "Message": {"Msg": "HPCACC eRDMA status check succeeded. No fault found."}}
    3. 如果返回信息异常,执行以下命令进行修复。

      hpcacc erdma repair
    4. 修复完成后,再次确认eRDMA配置正确即可。

OSU-Benchmark测试

OSU-Benchmark用于评估高性能计算(HPC)集群和分布式系统的通信性能。本文利用以下2个基准测试,基于不同网络协议(TCP vs. RDMA)测试通信性能:

  • 网络延迟测试(osu_latency):测量点对点通信的单向延迟(从进程A发送消息到进程B的时间,不含返回时间),尤其关注小消息(如1字节到数KB)的通信效率。小消息的延迟反映了网络硬件的底层性能(如RDMA加速能力)和MPI库的优化水平,是HPC系统响应能力的核心指标。例如,在实时仿真或机器学习参数同步中,低延迟能显著减少通信开销。

  • 网络带宽测试(osu_bw):测量点对点通信的可持续带宽(单位时间内传输的数据量),关注大消息(如数KB到数MB)的传输效率。带宽性能直接影响大数据传输的效率,如科学计算中的矩阵交换或文件I/O场景。若实测带宽远低于理论值,可能需优化MPI配置(如多线程通信)或检查网络设置(如MTU、流控)。

测试过程如下:

  1. 使用已经创建的用户,连接EHPC集群。详细信息,请参见连接集群

  2. 执行以下命令,检查依赖环境组件是否正确安装。

    module avail
  3. 执行以下命令,下载并解压已预编译的osu-benchmark安装包。

    cd ~ && wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/osu-bin.tar.gz
    tar -zxvf osu-bin.tar.gz
  4. 执行以下命令,进入测试工作目录并编辑slurm作业脚本。

    cd ~/pt2pt 
    vim slurm.job

    测试脚本内容如下:

    #!/bin/bash
    #SBATCH --job-name=osu-bench
    #SBATCH --ntasks-per-node=1
    #SBATCH --nodes=2
    #SBATCH --partition=comp
    #SBATCH --output=%j.out
    #SBATCH --error=%j.out
    
    # load env params
    module purge
    module load aocc/4.0.0 gcc/12.3.0 libfabric/1.16.0 mpich-aocc/4.0.3
    
    # run mpi latency test: erdma
    echo -e "++++++ use erdma for osu_lat: START"
    mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_latency
    echo -e "------ use erdma for osu_lat: END\n"
    # run mpi latency test: tcp
    echo -e "++++++ use tcp for osu_lat: START"
    mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_latency
    echo -e "------ use erdma for osu_lat: END\n"
    
    # run mpi bandwidth test: erdma
    echo -e "++++++ use erdma for osu_bw: START"
    mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_bw
    echo -e "------ use erdma for osu_bw: END\n"
    # run mpi bandwidth test: tcp
    echo -e "++++++ use tcp for osu_bw: START"
    mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_bw
    echo -e "------ use tcp for osu_bw: END\n"
    说明
    • -np 2:指定总的进程数量,这里设置为2,意味着整个MPI作业将启动两个进程。

    • -ppn 1:指定每个节点上的进程数,这里设置为1,表示每个节点运行1个进程。

    • -genv:设置环境变量,对所有进程生效。

      • FI_PROVIDER="tcp;ofi_rxm":使用TCP 协议,并通过 RXM 框架增强通信可靠性。

      • FI_PROVIDER="verbs;ofi_rxm":优先使用高性能 Verbs 协议(基于 RDMA),并通过 RXM 框架优化消息传输。本文中使用阿里云eRDMA提供高性能弹性RDMA网络。

  5. 执行以下命令,提交测试作业。

    sbatch slurm.job

    命令行输出job id。

  6. 执行以下命令,查看作业运行。测试过程中,您也可以在控制台上查看E-HPC的监控信息(包括存储监控、作业监控、节点监控等)。详细信息,请参见查看监控信息

    squeue
    [zh***luster@login0 pt2pt]$ squeue
                 JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                    11      comp slurm.jo zhtestcl  R       0:01      2 compute[000-001]

    您可以在当前目录下,查看job id对应的日志文件,输出内容如下所示:

    • 网络延迟测试结果:消息大小(Size,单位为字节Bytes,范围为1B4MB)与网络延迟(Avg Latency)的关系。本文中测试结果示例如下:

      使用Verbs 协议(基于eRDMA)
      [zxxx@login0 pt2pt]$ cat 11.out
      ++++++ use erdma for osu_lat: START
      
      # OSU MPI Latency Test v7.5
      # Datatype: MPI_CHAR.
      # Size          Avg Latency(us)
      1                       11.01
      2                       11.04
      4                       11.48
      8                       11.33
      16                      11.02
      32                      11.10
      64                      11.15
      128                     11.29
      256                     11.36
      512                     11.39
      1024                    11.81
      2048                    12.99
      4096                    13.95
      8192                    15.92
      16384                   34.57
      32768                   37.15
      65536                   41.15
      131072                  47.10
      262144                  61.17
      524288                 143.06
      1048576                332.54
      2097152                659.65
      4194304               1315.29
      ------ use erdma for osu_lat: END
      使用TCP协议
      ++++++ use tcp for osu_lat: START
      
      # OSU MPI Latency Test v7.5
      # Datatype: MPI_CHAR.
      # Size          Avg Latency(us)
      1                          16.07
      2                          16.02
      4                          16.03
      8                          16.03
      16                         16.01
      32                         16.27
      64                         16.37
      128                        16.87
      256                        17.36
      512                        17.89
      1024                       18.56
      2048                       33.78
      4096                       33.39
      8192                       30.74
      16384                      45.17
      32768                      94.50
      65536                     107.07
      131072                    124.95
      262144                    160.55
      524288                    238.40
      1048576                   374.89
      2097152                   639.81
      4194304                  1188.98
      ------ use erdma for osu_lat: END

      通过测试数据可以发现,对于小消息(1B~8KB),eRDMA的延迟明显低于TCP。

    • 网络带宽测试结果:消息大小(Size,单位为字节Bytes,范围为1B4MB)与带宽(Bandwidth)的关系。本文中测试结果示例如下:

      使用Verbs 协议(基于eRDMA)
      ++++++ use erdma for osu_bw: START
      
      # OSU MPI Bandwidth Test v7.5
      # Datatype: MPI_CHAR.
      # Size          Bandwidth (MB/s)
      1                       1.09
      2                       2.21
      4                       4.43
      8                       8.91
      16                     17.98
      32                     35.88
      64                     69.93
      128                   137.73
      256                   258.35
      512                   541.90
      1024                 1023.92
      2048                 1768.96
      4096                 2918.97
      8192                 3984.86
      16384                5203.51
      32768                6264.41
      65536                1661.85
      131072               1696.79
      262144               1535.17
      524288               1587.83
      1048576              1637.65
      2097152              1636.63
      4194304              1637.17
      
      ------ use erdma for osu_bw: END
      使用TCP协议
      ++++++ use tcp for osu_bw: START
      
      # OSU MPI Bandwidth Test v7.5
      # Datatype: MPI_CHAR.
      # Size      Bandwidth (MB/s)
      1                       0.38
      2                       0.75
      4                       1.51
      8                       3.01
      16                      5.95
      32                     12.10
      64                     23.43
      128                    46.30
      256                    88.25
      512                   167.70
      1024                  343.96
      2048                  614.60
      4096                 1183.85
      8192                 1567.03
      16384                1835.89
      32768                1731.67
      65536                2904.03
      131072               3160.96
      262144               1876.96
      524288               1730.89
      1048576              1733.18
      2097152              1736.09
      4194304              1735.78
      ------ use tcp for osu_bw: END

      通过测试数据可以发现,在消息大小为16KB ~ 64KB时,eRDMA充分利用了网络带宽,而TCP的协议栈处理引入额外开销。