使用弹性RDMA网卡(ERI)可以获得超低的延迟,更快地处理请求。本文介绍如何创建以RDMA增强型实例作为计算节点的HPC集群,并部署IMB测试基于eRDMA的通信性能。
背景信息
Intel® oneAPI是一个统一的编程模型,致力于为跨CPU、GPU、FPGA、专用加速器等不同计算架构的应用程序提供统一的编程体验,同时基于该模型提供了Intel® oneAPI Base Toolkit、Intel® oneAPI HPC Toolkit、Intel® AI Analytics Toolkit等一系列产品。
IMB(Intel® MPI Benchmarks)用于评估HPC集群在不同消息粒度下节点间点对点、全局通信的效率。
步骤一:准备HPC集群
使用弹性高性能计算创建HPC集群以及用户。
- 登录弹性高性能计算控制台。
- 创建HPC集群。
- 在集群页面右上角,单击创建集群。
- 按向导顺序逐步完成硬件、软件、基本配置。
本文示例配置如下表所示,完整配置项的说明,请参见
使用向导创建集群。
配置类型 |
配置项 |
示例配置 |
硬件配置 |
可用区 |
必须选择支持c7re规格族的可用区,目前邀测地域为华北2(北京)可用区K。 |
部署方式 |
本文以精简为例,登录节点、管控节点混合部署在一台实例上。
|
计算节点 |
必须为计算节点选择c7re规格(ecs.c7re.4xlarge),节点数量为2。 |
登录节点 |
可以根据需要选择实例规格。 |
软件配置 |
镜像类型、镜像 |
本文以公共镜像和CentOS_7.6_64为例。
|
调度器 |
本文以pbs为例。
|
域账号服务 |
本文以nis为例。
|
名称 |
本文以c7recluster为例。 |
基础配置 |
登录节点方式 |
选择密码方式,并输入和确认密码。
|
- 选中《E-HPC服务条款》,然后在页面右上角单击确认。
- 查看计算节点的名称。
- 在集群页面中找到新创建的HPC集群(下文统一称为c7recluster集群),单击右上角的节点。
- 在节点与队列页面,查看主机名称列中的名称。
本文中2个计算节点的名称分别为compute000和compute001。
- 创建用户。
- 在左侧导航栏,选择。
- 单击新增用户。
- 在新增用户对话框,完成用户配置。
配置项 |
示例配置 |
用户名 |
本文以c7reclusterUser为例。新增用户后,在所有节点中均会创建一个普通用户,对应的路径为/home/c7reclusterUser。
|
用户组 |
需要执行sudo命令安装软件,必须选择sudo权限组。
|
密码 |
输入和确认该普通用户的登录密码。 |
- 单击确定。
步骤二:准备工具
您需要提前下载以下工具的安装文件:
- multi-nic-util:用于在CentOS 7.6镜像中配置识别弹性网卡。
- ERI驱动:用于启用ERI。
- Intel® oneAPI安装包:用于部署IMB。
- 登录弹性高性能计算控制台。
- 下载multi-nic-util以及ERI驱动。
- 在集群页面找到c7recluster集群,在右上角单击远程连接。
- 在远程连接面板,输入普通用户的用户名c7reclusterUser及其密码,然后单击ssh连接。
- 分别运行以下命令下载multi-nic-util工具和ERI驱动。
wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz
wget https://elastic-rdma.oss-cn-hangzhou.aliyuncs.com/erdma_installer.tar.gz
说明 在登录节点下载文件后,会自动同步到其他节点。
- 下载Intel® oneAPI。
下载地址和相关说明,请参见
Intel® oneAPI下载页面。本文以Offline的方式安装Intel
® oneAPI 2021版本,在下载页面的选项如下图所示,下载的安装包名称示例为
l_HPCKit_p_2021.4.0.3347_offline.sh。
说明 您可以在本地下载后,通过OSS等方式传输到登录节点。
步骤三:为计算节点启用ERI
如需使用ERI,必须为计算节点绑定弹性RDMA网卡,并安装相应驱动以启用ERI。
- 登录ECS管理控制台。
- 创建弹性RDMA网卡。
重复以下步骤,创建2张弹性RDMA网卡。
- 在左侧导航栏,单击。
- 在顶部菜单栏左上角处,选择地域华北2(北京)。
- 在弹性网卡页面,单击创建弹性网卡。
- 在创建弹性网卡对话框,完成弹性网卡配置。
本文示例配置如下表所示,完整配置项的说明,请参见
创建弹性网卡。
配置项 |
示例配置 |
专有网络 |
选择和c7recluster集群相同的专有网络。 |
交换机 |
选择和c7recluster集群相同的交换机。 |
弹性RDMA接口 |
打开弹性RDMA接口开关。
|
安全组 |
选择和c7recluster集群相同的安全组。 |
- 单击确定。
- 将弹性RDMA网卡绑定至c7recluster集群的计算节点。
重复以下步骤,分别为计算节点compute000和compute001绑定弹性RDMA网卡。
- 找到新创建的弹性RDMA网卡,在操作列中,单击绑定实例。
- 选择计算节点对应的实例,然后单击确定。
- 为计算节点配置弹性网卡并安装ERI驱动。
CentOS 7.6不支持自动识别辅助弹性网卡,因此需要手动配置。
- 在左侧导航栏,单击。
- 找到并远程连接计算节点对应的实例。
远程连接实例的方法介绍,请参见
连接方式概述。
说明 登录实例时输入普通用户的用户名c7reclusterUser及其密码。
如下图所示,multi-nic-util和ERI驱动的安装文件已同步到计算节点。
- 分别运行以下命令配置弹性网卡。
tar -zxvf multi-nic-util-0.6.tgz
cd multi-nic-util-0.6
sudo bash install.sh
sudo systemctl restart eni.service
说明 包含sudo
的命令可能要求输入root用户的密码,按提示输入即可。
- 返回普通用户的目录。
本文中以普通用户c7reclusterUser登录,示例命令如下:
cd /home/c7reclusterUser
- 分别运行以下命令安装ERI驱动。
tar -xf aliyun-erdma-installer-1.0.0.tar.gz
cd aliyun-erdma-installer
sudo sh ./erdma_install.sh -y
说明 包含sudo
的命令可能要求输入root用户的密码,按提示输入即可。
步骤四:在集群登录节点上部署IMB
- 切换至登录节点的远程连接窗口(普通用户登录)。
- 安装Intel® oneAPI。
以将下载的
l_HPCKit_p_2021.4.0.3347_offline.sh安装至
/home/c7reclusterUser/oneAPIDIR目录为例,示例命令如下:
sh ./l_HPCKit_p_2021.4.0.3347_offline.sh -a --silent --eula accept --components intel.oneapi.lin.mpi.devel --install-dir /home/c7reclusterUser/oneAPIDIR --ignore-errors
- 设置环境变量。
source /home/c7reclusterUser/oneAPIDIR/setvars.sh
- 分别运行以下命令编译IMB。
cd /home/c7reclusterUser/oneAPIDIR/mpi/latest/benchmarks/imb/src_c
make
编译成功后,会生成名为IMB-MPI1的可执行文件。
步骤五:在计算节点上执行IMB测试
- 切换至计算节点的远程连接窗口(普通用户登录)。
- 修改/home/c7reclusterUser/.bashrc文件。
在文件尾部添加以下内容:
export FI_VERBS_RX_IOV_LIMIT=1
- 修改/etc/security/limits.conf文件。
在文件尾部添加以下内容:
* hard memlock unlimited
* soft memlock unlimited
- 关闭当前的远程连接窗口,重新登录任一个计算节点(普通用户登录)。
- 执行IMB测试。
基于启用了ERI的计算节点compute000和compute001执行IMB测试,了解在HPC集群中MPI点到点消息通讯的延迟和带宽,示例命令如下:
source /home/c7reclusterUser/oneAPIDIR/setvars.sh
cd /home/c7reclusterUser/oneAPIDIR/mpi/latest/benchmarks/imb/src_c
mpirun -n 2 -hosts compute001,compute000 -ppn 1 ./IMB-MPI1 pingpong
说明 可执行文件路径、计算节点名称必须和上方步骤保持一致。