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

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

背景信息

利用eRDMA技术,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. 节点与队列 > 节点页面,选中集群中所有计算节点,单击发送命令

    image

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

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

      hpcacc erdma check

      image

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

      image

    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。

    image

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

    squeue

    image

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

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

      使用Verbs 协议(基于eRDMA)

      image

      使用TCP协议

      image

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

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

      使用Verbs 协议(基于eRDMA)

      image

      使用TCP协议

      image

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