使用弹性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集群以及用户。

  1. 登录弹性高性能计算控制台
  2. 创建HPC集群。
    1. 集群页面右上角,单击创建集群
    2. 按向导顺序逐步完成硬件、软件、基本配置。
      本文示例配置如下表所示,完整配置项的说明,请参见使用向导创建集群
      配置类型 配置项 示例配置
      硬件配置 可用区 必须选择支持c7re规格族的可用区,目前邀测地域为华北2(北京)可用区K。
      部署方式 本文以精简为例,登录节点、管控节点混合部署在一台实例上。
      计算节点 必须为计算节点选择c7re规格(ecs.c7re.4xlarge),节点数量为2。
      登录节点 可以根据需要选择实例规格。
      软件配置 镜像类型、镜像 本文以公共镜像CentOS_7.6_64为例。
      调度器 本文以pbs为例。
      域账号服务 本文以nis为例。
      名称 本文以c7recluster为例。
      基础配置 登录节点方式 选择密码方式,并输入和确认密码。
      说明 该配置项对应root用户的密码。
    3. 选中E-HPC服务条款,然后在页面右上角单击确认
  3. 查看计算节点的名称。
    1. 集群页面中找到新创建的HPC集群(下文统一称为c7recluster集群),单击右上角的节点
    2. 节点与队列页面,查看主机名称列中的名称。
      本文中2个计算节点的名称分别为compute000和compute001。compute-node-name
  4. 创建用户。
    1. 在左侧导航栏,选择资源管理 > 用户
    2. 单击新增用户
    3. 新增用户对话框,完成用户配置。
      配置项 示例配置
      用户名 本文以c7reclusterUser为例。新增用户后,在所有节点中均会创建一个普通用户,对应的路径为/home/c7reclusterUser
      用户组 需要执行sudo命令安装软件,必须选择sudo权限组
      密码 输入和确认该普通用户的登录密码。
    4. 单击确定

步骤二:准备工具

您需要提前下载以下工具的安装文件:
  • multi-nic-util:用于在CentOS 7.6镜像中配置识别弹性网卡。
  • ERI驱动:用于启用ERI。
  • Intel® oneAPI安装包:用于部署IMB。
  1. 登录弹性高性能计算控制台
  2. 下载multi-nic-util以及ERI驱动。
    1. 集群页面找到c7recluster集群,在右上角单击远程连接
    2. 远程连接面板,输入普通用户的用户名c7reclusterUser及其密码,然后单击ssh连接
    3. 分别运行以下命令下载multi-nic-util工具和ERI驱动。
      wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz
      wget https://erdma.oss-cn-hangzhou.aliyuncs.com/aliyun-erdma-installer-1.0.0.tar.gz
      说明 在登录节点下载文件后,会自动同步到其他节点。
  3. 下载Intel® oneAPI。
    下载地址和相关说明,请参见Intel® oneAPI下载页面。本文以Offline的方式安装Intel® oneAPI 2021版本,在下载页面的选项如下图所示,下载的安装包名称示例为l_HPCKit_p_2021.4.0.3347_offline.sh
    说明 您可以在本地下载后,通过OSS等方式传输到登录节点。
    download-oneapi

步骤三:为计算节点启用ERI

如需使用ERI,必须为计算节点绑定弹性RDMA网卡,并安装相应驱动以启用ERI。

  1. 登录ECS管理控制台
  2. 创建弹性RDMA网卡。
    重复以下步骤,创建2张弹性RDMA网卡。
    1. 在左侧导航栏,单击网络与安全 > 弹性网卡
    2. 在顶部菜单栏左上角处,选择地域华北2(北京)
    3. 弹性网卡页面,单击创建弹性网卡
    4. 创建弹性网卡对话框,完成弹性网卡配置。
      本文示例配置如下表所示,完整配置项的说明,请参见创建弹性网卡
      配置项 示例配置
      专有网络 选择和c7recluster集群相同的专有网络。
      交换机 选择和c7recluster集群相同的交换机。
      弹性RDMA接口 打开弹性RDMA接口开关。
      安全组 选择和c7recluster集群相同的安全组。
    5. 单击确定
  3. 将弹性RDMA网卡绑定至c7recluster集群的计算节点。
    重复以下步骤,分别为计算节点compute000和compute001绑定弹性RDMA网卡。
    1. 找到新创建的弹性RDMA网卡,在操作列中,单击绑定实例
    2. 选择计算节点对应的实例,然后单击确定
  4. 为计算节点配置弹性网卡并安装ERI驱动。
    CentOS 7.6不支持自动识别辅助弹性网卡,因此需要手动配置。
    1. 在左侧导航栏,单击实例与镜像 > 实例
    2. 找到并远程连接计算节点对应的实例。
      远程连接实例的方法介绍,请参见连接方式概述
      说明 登录实例时输入普通用户的用户名c7reclusterUser及其密码。
      如下图所示,multi-nic-util和ERI驱动的安装文件已同步到计算节点。eri-tools
    3. 分别运行以下命令配置弹性网卡。
      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用户的密码,按提示输入即可。
    4. 返回普通用户的目录。
      本文中以普通用户c7reclusterUser登录,示例命令如下:
      cd /home/c7reclusterUser
    5. 分别运行以下命令安装ERI驱动。
      tar -xf aliyun-erdma-installer-1.0.0.tar.gz
      cd aliyun-erdma-installer
      sudo sh ./erdma_install.sh -y
      说明 包含sudo的命令可能要求输入root用户的密码,按提示输入即可。

步骤四:在集群登录节点上部署IMB

  1. 切换至登录节点的远程连接窗口(普通用户登录)。
  2. 安装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
    说明 更多安装操作的说明,请参见Intel® oneAPI安装指南
  3. 设置环境变量。
    source /home/c7reclusterUser/oneAPIDIR/setvars.sh
  4. 分别运行以下命令编译IMB。
    cd /home/c7reclusterUser/oneAPIDIR/mpi/latest/benchmarks/imb/src_c
    make
    编译成功后,会生成名为IMB-MPI1的可执行文件。

步骤五:在计算节点上执行IMB测试

  1. 切换至计算节点的远程连接窗口(普通用户登录)。
  2. 修改/home/c7reclusterUser/.bashrc文件。
    在文件尾部添加以下内容:
    export FI_VERBS_RX_IOV_LIMIT=1
  3. 修改/etc/security/limits.conf文件。
    在文件尾部添加以下内容:
    * hard memlock unlimited
    * soft memlock unlimited
    说明 该步骤需要在所有计算节点上执行。
  4. 关闭当前的远程连接窗口,重新登录任一个计算节点(普通用户登录)。
  5. 执行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
    说明 可执行文件路径、计算节点名称必须和上方步骤保持一致。