本文介绍如何开通适配eRDMA的E-HPC Cluster(原E-HPC NEXT),并以OSU-Benchmark应用为例,提供配置运行时参数以使用eRDMA技术加速多节点HPC应用的通信。
背景信息
利用eRDMA技术,E-HPC Cluster(原E-HPC NEXT)中的气候气象、工业仿真、分子动力等HPC多节点并行任务可达到媲美线下集群的高速网络性能,包括高带宽和低延迟,可显著提升数值模拟、仿真的效率。同时,无需额外部署RDMA网卡,即可在现有业务组网中体验到RDMA的优势,实现无缝集成和便捷应用。
准备工作
-
单击前往创建集群页面,创建一个E-HPC集群。具体操作,请参见创建标准版集群。
本文使用的集群配置示例如下:
-
实例规格:采用ecs.c7.xlarge实例规格,该规格配置为4 vCPU,8 GiB内存。
-
镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd
说明osu-benchmark安装包基于Alibaba Cloud Linux 2.1903 LTS 64位镜像完成构建。
-
erdma-installer
-
mpich-aocc
-
实例规格:采用ecs.c7.xlarge实例规格,该规格配置为4 vCPU,8 GiB内存。
-
镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd
-
创建一个集群用户,具体操作,请参见用户管理。
|
配置项 |
配置 |
|
|
集群配置 |
地域 |
上海 |
|
网络及可用区 |
选择可用区L |
|
|
系列 |
标准版 |
|
|
部署模式 |
公共云集群 |
|
|
集群类型 |
SLURM |
|
|
管理节点 |
|
|
|
计算节点与队列 |
队列节点数 |
初始节点 |
|
节点间互联 |
eRDMA网络 说明
仅部分节点规格支持ERI,更多信息,请参见弹性RDMA(eRDMA)和在企业级实例上启用eRDMA。 |
|
|
实例规格组 |
实例规格:采用ecs.c8ae.xlarge或同代的其他AMD实例。 镜像:aliyun_2_1903_x64_20G_alibase_20240628.vhd |
|
|
共享文件存储 |
/home 集群挂载目录 |
默认情况下,管理节点的 |
|
/opt 集群挂载目录 |
||
|
软件与服务组件 |
可安装软件 |
|
|
可安装服务组件 |
登录节点: |
检查eRDMA环境
检查计算节点eRDMA配置是否正确。
-
登录弹性高性能计算控制台,单击目标集群。
-
在页面,选中集群中所有计算节点,单击发送命令。
-
检查计算节点的 eRDMA 网络状态 和 RDMA 硬件/软件支持情况。
-
发送如下命令到所有计算节点。
hpcacc erdma check在云助手发送命令对话框中,选择目标实例,执行计划选择立即执行,命令类型选择Shell,超时时间设为60秒,单击执行。
-
返回如下结果,表示eRDMA配置正确。
{"Success": true, "Message": {"Msg": "HPCACC eRDMA status check succeeded. No fault found."}} -
如果返回信息异常,执行以下命令进行修复。
hpcacc erdma repair -
修复完成后,再次确认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、流控)。
测试过程如下:
-
使用已经创建的用户,连接EHPC集群。详细信息,请参见连接集群。
-
执行以下命令,检查依赖环境组件是否正确安装。
module avail -
执行以下命令,下载并解压已预编译的osu-benchmark安装包。
cd ~ && wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/osu-bin.tar.gz tar -zxvf osu-bin.tar.gz -
执行以下命令,进入测试工作目录并编辑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网络。
-
-
-
执行以下命令,提交测试作业。
sbatch slurm.job命令行输出job id。
-
执行以下命令,查看作业运行。测试过程中,您也可以在控制台上查看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,范围为1B到4MB)与网络延迟(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,范围为1B到4MB)与带宽(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的协议栈处理引入额外开销。
-