通过配置LS-DYNA和STAR-CCM+软件支持eRDMA以提升仿真效率

更新时间:2024-08-30 09:34:56

利用eRDMA技术,E-HPC集群在工业仿真任务中可达到媲美线下集群的高网络性能,包括高带宽和低延迟,可显著提升仿真效率和可靠性。同时,无需额外部署RDMA网卡,即可在现有业务组网中体验到RDMA的优势,实现无缝集成和便捷应用。本文以LS-DYNASTAR-CCM+两个广泛使用的工业仿真应用为例,介绍如何配置工业仿真软件以支持并使用eRDMA技术。

背景信息

弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA)是由阿里云自主研发的云上弹性RDMA网络技术,它不仅继承了传统RDMA网络的高性能特性,包括极高的数据吞吐量与超低延迟,而且实现了前所未有的可扩展性,能够在秒级时间内完成大规模RDMA网络的动态构建。更多信息,请参见eRDMA概述

eRDMA特别适用于工业仿真应用,例如像LS-Dyna多物理场仿真软件和Starccm+计算流体力学软件,eRDMA技术可以显著提升数据传输速度,减少计算任务间的等待时间,从而加快仿真过程,缩短产品设计周期。能够提供与线下部署的Infini BandRoCE等高端RDMA网络相匹敌的跨节点通信带宽与延迟表现。

支持说明

eRDMA提供的MPI版本在设计上拥有较好的兼容性,既能适应当前常用的MPI实现,也能兼容某些旧版本的MPI实现。此外,它还支持与RDMA技术相关的通信库(如DAPL、OpenFabrics等),这使得它能够在高性能计算环境中做到无缝集成,并确保良好的通信性能。具体支持情况如下:

MPI

通过DAPL提供对eRDMA的支持

通过OFI提供对eRDMA的支持

MPI

通过DAPL提供对eRDMA的支持

通过OFI提供对eRDMA的支持

Intel MPI 2017、2018

✔️

Intel MPI 2019

✔️

oneAPI MPI 2021.1及以后

✔️

Platform MPI

✔️

Open MPI 4

✔️

MPICH 3及以后

✔️

前提条件

  • 已创建E-HPC集群。具体操作,请参见使用向导创建集群

    配置集群时,您需要打开弹性RDMA接口开关。

  • 已创建集群用户。具体操作,请参见管理用户

  • 集群内计算节点需满足以下条件:

    1. 实例规格及镜像符合eRDMA的使用条件。更多信息,请参见使用限制

    2. 已配置eRDMA。具体操作,请参见在企业级实例上配置eRDMA

      重要

      如果您是通过弹性高性能计算控制台创建的集群,并在软件配置页面开启了弹性RDMA接口开关,那么您无需进行手动配置。系统会自动为计算节点绑定弹性RDMA网卡,以便您直接享受高性能RDMA网络服务。

  • 已下载安装LS-DYNASTAR-CCM+软件。

步骤一:连接集群

选择以下一种方式连接集群。

  • 通过客户端

    该方式仅支持使用PBS调度器的集群。操作前,请确保您已下载安装E-HPC客户端,且已配置客户端所需环境。具体操作,请参见配置客户端所需环境

    1. 打开并登录E-HPC客户端。

    2. 在客户端左侧导航栏,单击会话管理

    3. 会话管理页面的右上角,单击terminal,打开Terminal窗口。

  • 通过控制台

    1. 登录弹性高性能计算控制台

    2. 在顶部菜单栏左上角处,选择地域。

    3. 在左侧导航栏,单击集群

    4. 集群页面,找到目标集群,单击远程连接

    5. 远程连接页面,输入集群用户名、登录密码和端口,单击ssh连接

步骤二:配置软件支持eRDMA

说明

为确保软件支持eRDMA,请在运行软件时添加以下参数进行配置。

LS-DYNA

请根据您实际使用的软件的MPI库,选择相应的参数添加到运行软件的命令中。

Platform MPI
Intel MPI 2017、2018
Intel MPI 2019、oneAPI MPI 2021.1及以后

增加以下参数:

  • -rdmacm:启用RDMA的连接管理。

  • -UDAPL:程序使用UDAPL接口来进行RDMA操作。

运行命令示例如下:

mpirun \
  -e LSTC_LICENSE=network \
  -e LSTC_LICENSE_SERVER=192.168.**.** \
  -e MATFEMD_LICENSE_FILE=7790@192.168.**.** \
  -rdmacm -UDAPL \
  -hostlist ${hostfile} \
  ... > output.log &

增加以下参数:

  • -genv I_MPI_FABRICS=shm:dapl:使用共享内存(shm)和DAPL作为通信的底层传输协议。

  • -gen I_MPI_DAPL_PROVIDER=ofa-v2-erdma_0:指定使用的DAPL提供者为ofa-v2-erdma_0

运行命令示例如下:

mpirun \
  -np 192 \
  -hostlist ${HOSTLIST} \
  -perhost 64 \
  -genv I_MPI_FABRICS=shm:dapl \
  -genv I_MPI_DAPL_PROVIDER=ofa-v2-erdma_0 \
  ... > dyna.log 2>&1 &

增加以下参数:

  • -genv I_MPI_FABRICS=shm:ofi:使用共享内存(shm)和OFI作为通信的底层传输协议。

  • -genv I_MPI_OFI_PROVIDER=verbs:指定使用verbs作为OFI提供者。

运行命令示例如下:

mpirun \
  -np 192 \
  -hostlist ${HOSTLIST} \
  -perhost 64 \
  -genv I_MPI_FABRICS=shm:ofi \
  -genv I_MPI_OFI_PROVIDER=verbs \
  ... > dyna.log 2>&1 &

STAR-CCM+

  1. 执行以下命令,安装相关依赖库。

    sudo yum -y install libXext libXt
  2. 请根据您实际使用的软件的MPI库,选择相应的参数添加到运行软件的命令中。

    Platform MPI
    Intel MPI 2017、2018
    Intel MPI 2019、oneAPI MPI 2021.1及以后

    增加以下参数:

    • -rdmacm:启用RDMA的连接管理。

    • -UDAPL:程序使用UDAPL接口来进行RDMA操作。

    运行命令示例如下:

    starccm+ -batch \
      -on node1,node2 \
      -rsh ssh \
      -cpubind \
      -mpi platform \
      -mppflags "-intra=shm -rdmacm -UDAPL" \
      -fabricverbose \
      /xxx/xxx/xx.sim \
      -batch /xxx/xxx/RunStar.java \
      2>&1 > output.log &

    增加以下参数:

    • -genv I_MPI_FABRICS=shm:dapl:使用共享内存(shm)和DAPL作为通信的底层传输协议。

    • -gen I_MPI_DAPL_PROVIDER=ofa-v2-erdma_0:指定使用的DAPL提供者为ofa-v2-erdma_0

    运行命令示例如下:

    starccm+ \
      -batch \
      -on node1,node2 \
      -rsh ssh \
      -cpubind \
      -mpi intel \
      -mppflags "-genv I_MPI_FABRICS=shm:dapl -genv I_MPI_DAPL_PROVIDER=ofa-v2-erdma_0" \
      -fabricverbose \
      /xxx/xxx/xx.sim \
      -batch \
      /xxx/xxx/RunStar.java \
      2>&1 > output.log &

    增加以下参数:

    • -genv I_MPI_FABRICS=shm:ofi:使用共享内存(shm)和OFI作为通信的底层传输协议。

    • -genv I_MPI_OFI_PROVIDER=verbs:指定使用verbs作为OFI提供者。

    运行命令示例如下:

    starccm+ -batch \
      -on node1,node2 \
      -rsh ssh \
      -cpubind \
      -mpi intel \
      -mppflags "-genv I_MPI_FABRICS=shm:ofi -genv I_MPI_OFI_PROVIDER=verbs" \
      -fabricverbose /xxx/xxx/xx.sim \
      -batch /xxx/xxx/RunStar.java \
      2>&1 > output.log &

    (可选)您还可以在mppflags字段后根据您的业务需求添加额外参数,以调整或扩展命令的功能:

    • -genv FI_OFI_RXM_BUFFER_SIZE=1024:设定用于接收消息的缓冲区大小。

    • -genv FI_PROVIDER=verbs;ofi_rxm:指定使用的OFI提供者,允许在RDMA和其他模式之间切换。

    • -genv FI_OFI_RXM_USE_SRX=0:禁用SRX(Shared Receive Queue)模式。

    • -genv FI_VERBS_RX_IOV_LIMIT=1:限制接收I/O向量的数量为1。

    • -genv I_MPI_FABRICS=shm:ofi:使用共享内存(shm)和OFI作为通信的底层传输协议。

    • -genv I_MPI_DYNAMIC_CONNECTIONS_MODE=reject:拒绝动态连接的模式。

    • -genv I_MPI_DYNAMIC_CONNECTION=0:禁用动态连接。

    • -genv I_MPI_OFA_USE_XRC=0:禁用XRC(Extended Reliable Connections)。

相关操作

您可以在任一计算节点执行以下命令,监控eRDMA网络的实时流量状况。

eadm stat -l
  • 本页导读 (1)
  • 背景信息
  • 支持说明
  • 前提条件
  • 步骤一:连接集群
  • 步骤二:配置软件支持eRDMA
  • LS-DYNA
  • STAR-CCM+
  • 相关操作