本文介绍如何开通适配eRDMA的E-HPC NEXT集群,并以OSU-Benchmark应用为例,提供配置运行时参数以使用eRDMA技术加速多节点HPC应用的通信。
背景信息
利用eRDMA技术,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
返回如下结果,表示eRDMA配置正确。
如果返回信息异常,执行以下命令进行修复。
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
您可以在当前目录下,查看job id对应的日志文件,输出内容如下所示:
网络延迟测试结果:消息大小(Size,单位为字节Bytes,范围为1B到4MB)与网络延迟(Avg Latency)的关系。本文中测试结果示例如下:
使用Verbs 协议(基于eRDMA)
使用TCP协议
通过测试数据可以发现,对于小消息(1B~8KB),eRDMA的延迟明显低于TCP。
网络带宽测试结果:消息大小(Size,单位为字节Bytes,范围为1B到4MB)与带宽(Bandwidth)的关系。本文中测试结果示例如下:
使用Verbs 协议(基于eRDMA)
使用TCP协议
通过测试数据可以发现,在消息大小为16KB ~ 64KB时,eRDMA充分利用了网络带宽,而TCP的协议栈处理引入额外开销。