全部產品
Search
文件中心

Elastic Compute Service:在GPU執行個體上啟用eRDMA

更新時間:Jun 12, 2025

GPU執行個體綁定彈性RDMA網卡(ERI)後,各GPU執行個體間在VPC網路下可以實現RDMA直通加速互連,相比傳統的RDMA,eRDMA可以提供更高效的Data Transmission Service,有效提升GPU執行個體之間的通訊效率並縮短任務處理時間。本文介紹如何在GPU執行個體上啟用eRDMA。

使用限制

限制項

說明

執行個體規格

支援ERI的執行個體規格如下:

  • gn8is、ebmgn8is、gn8v、ebmgn8v

鏡像

支援以下鏡像(任選一款):

  • (推薦)Alibaba Cloud Linux 3

  • CentOS 8.5/8.4/7.9

  • Ubuntu 24.04/22.04/20.04/18.04

eRDMA裝置數量

  • gn8is和gn8v執行個體規格類型系列僅支援1個eRDMA網卡裝置。

  • ebmgn8is以及ebmgn8v彈性裸金屬執行個體支援2個eRDMA網卡裝置。

網路限制

  • 網卡開啟彈性RDMA介面後,不支援分配IPv6地址。

  • 兩個執行個體之間通過ERI通訊,通訊鏈路中間不支援跨網元裝置(例如Server Load Balancer等)。

操作步驟

支援eRDMA能力的執行個體使用eRDMA能力需滿足2個條件:安裝了eRDMA軟體棧綁定了開啟彈性RDMA介面的網卡

購買執行個體時配置eRDMA

  1. 前往執行個體購買頁

  2. 建立支援ERI的GPU執行個體。

    建立過程中需注意以下配置項(其他參數,請參見自訂購買執行個體):

    • 執行個體規格:請參見使用限制,本樣本以ebmgn8is為例。

    • 鏡像:選擇公用鏡像時,預設同時選中安裝GPU驅動安裝eRDMA軟體棧選項,則該執行個體建立完成後,系統會自動在執行個體內部安裝GPU驅動、CUDA、cuDNN以及eRDMA軟體棧。

      image

      安裝彈性RDMA網卡(ERI)軟體棧的注意事項

      • 公用鏡像頁簽下,如果選擇了支援安裝eRDMA軟體棧的鏡像作業系統及版本(即可選中安裝eRDMA軟體棧選項),但實際並未選中安裝eRDMA軟體棧選項,則執行個體建立後您可通過指令碼安裝或手動安裝方式安裝eRDMA軟體棧。

      • 公用鏡像頁簽下,如果選擇了不支援安裝eRDMA軟體棧的鏡像作業系統及版本(即無法選中安裝eRDMA軟體棧選項),則執行個體建立後您無法通過指令碼安裝方式或手動安裝方式來啟動並使用eRDMA網卡。

      • 公用鏡像頁簽下,如果取消安裝eRDMA軟體棧選項,則您可以選擇更多的鏡像作業系統及版本。

    • 彈性網卡:建立GPU執行個體過程中,在頻寬和安全性群組設定精靈頁面配置彈性網卡時,會預設建立一塊eRDMA主網卡和一塊eRDMA輔助網卡,並且主網卡和輔助網卡右側的彈性RDMA介面選項會預設被自動選中。

      彈性網卡.jpg

      說明
      • GPU執行個體運行後不支援單獨啟用或關閉某一彈性網卡的彈性RDMA能力。

      • 開啟了彈性RDMA能力後的2張網卡會自動綁定到不同的通道上,無需您單獨指定。

      • 主網卡不支援從GPU執行個體中解除綁定,只能隨GPU執行個體一起建立和釋放。

  3. 進入已建立的執行個體詳情頁,單擊彈性網卡頁簽,查看執行個體網卡類型。

    主網卡或輔助網卡的網卡類型如下所示,表示該執行個體已開啟了彈性RDMA介面的網卡。

    主輔助彈性網卡.jpg

為已有GPU執行個體配置eRDMA

  1. 登入ECS管理主控台

  2. 找到目標執行個體並進入執行個體詳情頁,選擇彈性網卡頁簽,查看執行個體是否已開啟了彈性RDMA介面的網卡。

    彈性網卡.jpg

    • 如果已開啟(如上圖),請跳過以下步驟。

    • 如果未開啟,請按照以下步驟,為主網卡或者輔助彈性網卡配置eRDMA。

  3. 為主網卡或輔助彈性網卡配置eRDMA。

    說明
    • 建立GPU執行個體時,如果主網卡和輔助網卡均未選中彈性RDMA介面,則建立執行個體後,您可以再單獨建立並啟用2個eRDMA輔助彈性網卡。

    • 建立GPU執行個體時,如果主網卡或輔助網卡其中一個網卡未選中彈性RDMA介面,則建立執行個體後,您只能再單獨建立並啟用1個eRDMA輔助彈性網卡。

    • 為主網卡配置eRDMA

      通過OpenAPI方式為主網卡配置eRDMA。具體操作,請參見ModifyNetworkInterfaceAttribute - 修改彈性網卡屬性

      主要配置項說明

      參數

      說明

      RegionId

      主網卡所在地區ID。

      NetworkInterfaceId

      主網卡的ID。

      NetworkInterfaceTrafficMode

      設定主網卡的通訊模式。取值範圍:

      • Standard:使用TCP通訊模式。

      • HighPerformance:開啟ERI(Elastic RDMA Interface)介面,使用RDMA通訊模式。

      本步驟選擇HighPerformance模式。

    • 為輔助彈性網卡配置eRDMA

      通過控制台方式建立和掛載eRDMA網卡到GPU執行個體時,不支援綁定到不同通道,這會導致2張eRDMA網卡總頻寬減少一半,故建議您使用OpenAPI的方式掛載eRDMA網卡。

      (推薦)OpenAPI方式

      • 方式一:建立並綁定彈性RDMA網卡

        每個GPU執行個體最多支援2張eRDMA網卡,且需要分別通過NetworkCardIndex參數綁定到不同的通道上。

        1. 建立彈性RDMA網卡。

          具體操作,請參見CreateNetworkInterface

          主要參數說明

          參數

          說明

          RegionId

          待建立彈性網卡所屬地區ID。

          VSwitchId

          指定VPC的交換器ID。彈性網卡的私網IP地址在交換器的IP位址區段內的空閑地址中取值。

          SecurityGroupId

          加入一個安全性群組。安全性群組和彈性網卡必須在同一個Virtual Private Cloud中。

          NetworkInterfaceTrafficMode

          彈性網卡的通訊模式。取值範圍:

          • Standard:使用TCP通訊模式。

          • HighPerformance:開啟ERI(Elastic RDMA Interface)介面,使用RDMA通訊模式。

          本步驟選擇HighPerformance模式。

          調用成功後,請記錄返回資料中產生的彈性網卡ID(即NetworkInterfaceId對應的傳回值)。

        2. 綁定eRDMA彈性網卡。

          具體操作,請參見AttachNetworkInterface

          主要參數說明

          參數

          說明

          RegionId

          執行個體所在地區的ID。

          NetworkInterfaceId

          彈性網卡ID,即已建立的彈性RDMA網卡。

          InstanceId

          執行個體ID。

          NetworkCardIndex

          網卡指定的物理網卡索引。

          建立彈性RDMA網卡時,在綁定到某個執行個體時需要您手動指定通道(即物理網卡索引),當前通道可以指定為0或1(2張彈性RDMA指定不同的值)。

          說明

          為了擷取最大網路頻寬,您需要指定2張RDMA網卡綁定到不同的通道。

          調用成功(即掛載成功)後,在GPU執行個體的彈性網卡頁簽下,您可以看到掛載的彈性RDMA網卡。彈性網卡

      • 方式二:修改已有彈性網卡屬性

        說明

        該方式不支援指定NetworkCardIndex參數(即網卡指定的物理網卡索引),如果同時綁定兩張RDMA網卡,採用該方式為輔助彈性網卡配置eRDMA可能會導致最大頻寬達不到要求。

        具體操作,請參見ModifyNetworkInterfaceAttribute - 修改彈性網卡屬性

        主要配置項說明

        參數

        說明

        RegionId

        輔助網卡所在地區ID。

        NetworkInterfaceId

        輔助網卡的ID。

        NetworkInterfaceTrafficMode

        設定輔助網卡的通訊模式。取值範圍:

        • Standard:使用TCP通訊模式。

        • HighPerformance:開啟ERI(Elastic RDMA Interface)介面,使用RDMA通訊模式。

        本步驟選擇HighPerformance模式。

        調用成功(即掛載成功)後,在GPU執行個體的彈性網卡頁簽下,您可以看到掛載的彈性RDMA網卡。

        網卡類型.jpg

      控制台方式

      1. 建立輔助彈性網卡。

        具體操作,請參見建立並使用彈性網卡。在建立並啟用ERI的輔助彈性網卡時,啟動增加彈性RDMA介面開關。ERI會共用該輔助彈性網卡的設定,包括彈性網卡的IP、應用於彈性網卡的安全性群組規則等。彈性網卡

      2. 將輔助彈性網卡綁定至GPU執行個體。

        具體操作,請參見綁定輔助彈性網卡

        說明

        單台執行個體最多綁定2個啟用ERI的輔助彈性網卡。

        將啟用ERI的輔助彈性網卡綁定至GPU執行個體後,如需解除綁定,必須先停止該執行個體。具體操作,請參見停止執行個體

      3. 遠端連線GPU執行個體。

        具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)

      4. 執行ifconfig命令,查看新綁定的服務彈性網卡是否存在。

        如未顯示新綁定的輔助彈性網卡,請手動設定該網卡,具體操作,請參見配置輔助彈性網卡。否則,請跳過該步驟。

        說明

        部分鏡像可能無法自動識別新綁定的輔助彈性網卡,您需要在執行個體內配置輔助彈性網卡。

  4. (可選)在執行個體內安裝彈性RDMA網卡(ERI)軟體棧。

    如果選擇公用鏡像時未選中安裝eRDMA軟體棧選項,根據實際情況選擇指令碼方式或者手動方式安裝eRDMA軟體棧,以便啟動並使用彈性RDMA網卡(ERI)能力。

    • 指令碼安裝方式

      GPU執行個體建立完成後,您可以通過指令碼安裝方式單獨安裝eRDMA軟體棧、GPU驅動、CUDA以及cuDNN等軟體,指令碼樣本如下所示。

      #!/bin/sh
      
      #Please input version to install
      DRIVER_VERSION="550.127.08"
      CUDA_VERSION="12.4.1"
      CUDNN_VERSION="9.2.0.82"
      IS_INSTALL_eRDMA="TRUE"
      IS_INSTALL_RDMA="FALSE"
      INSTALL_DIR="/root/auto_install"
      
      #using .run to install driver and cuda
      auto_install_script="auto_install_v4.0.sh"
      
      script_download_url=$(curl http://100.100.100.200/latest/meta-data/source-address | head -1)"/opsx/ecs/linux/binary/script/${auto_install_script}"
      echo $script_download_url
      
      rm -rf $INSTALL_DIR
      mkdir -p $INSTALL_DIR
      cd $INSTALL_DIR && wget -t 10 --timeout=10 $script_download_url && bash ${INSTALL_DIR}/${auto_install_script} $DRIVER_VERSION $CUDA_VERSION $CUDNN_VERSION $IS_INSTALL_RDMA $IS_INSTALL_eRDMA
    • 手動安裝方式

      GPU執行個體建立完成後,您可以通過手動安裝方式單獨安裝OFED驅動、eRDMA驅動、GPU驅動以及載入nv_peer_mem服務元件,具體操作如下所示。

      1. 遠端連線GPU執行個體。

        具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)

      2. 安裝OFED驅動。

        1. 執行以下命令,安裝依賴軟體包。

          Alibaba Cloud Linux 3

          sudo yum install perl-generators python3-Cython kernel-rpm-macros libmnl-devel valgrind-devel rpm-build systemd-devel libdb-devel iptables-devel lsof elfutils-devel bison libnl3-devel libselinux-devel flex cmake numactl-devel -y

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/centos8/python3-Cython-0.29.32-3.16.x86_64.rpm
            yum install python3-Cython-0.29.32-3.16.x86_64.rpm -y
            yum install kernel-rpm-macros perl-generators libmnl-devel valgrind-devel rpm-build systemd-devel libdb-devel iptables-devel lsof elfutils-devel bison libnl3-devel libselinux-devel flex cmake numactl-devel -y
          • CentOS 7.9

            sudo yum install  python-devel python3-Cython kernel-rpm-macros perl-generators libmnl-devel valgrind-devel rpm-build systemd-devel libdb-devel iptables-devel lsof elfutils-devel bison libnl3-devel libselinux-devel flex cmake numactl-devel -y

          Ubuntu 24.04/22.04/20.04/18.04

          • Ubuntu 24.04

            apt-get update
            apt-get install -y pkg-config
            apt install -y flex make libelf-dev sudo libmnl-dev autoconf autotools-dev dh-dkms bison dh-python libdb-dev quilt automake debhelper chrpath gcc libselinux1-dev python3
          • Ubuntu 22.04

            sudo apt-get update
            sudo apt-get install -y pkg-config
            sudo apt install -y python3-distutils libmnl-dev bison sudo flex dh-python quilt python3 dpatch swig libelf-dev libdb-dev libselinux1-dev gcc chrpath graphviz make
          • Ubuntu 20.04

            sudo apt-get update
            sudo apt-get install -y pkg-config
            sudo apt-get install quilt swig gcc dh-python python3 chrpath bison sudo flex graphviz libmnl-dev python3-distutils make libdb-dev libselinux1-dev dpatch libelf-dev -y
          • Ubuntu 18.04

            sudo apt-get update
            sudo apt-get install -y pkg-config
            sudo apt install -y make dh-python libdb-dev libselinux1-dev flex dpatch swig graphviz chrpath quilt python3-distutils bison libmnl-dev libelf-dev gcc sudo python3
        2. 執行以下命令,下載OFED軟體包設定檔。

          Alibaba Cloud Linux 3

          sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-5.4-3.5.8.0.tgz
          sudo tar -xvf MLNX_OFED_SRC-5.4-3.5.8.0.tgz && cd MLNX_OFED_SRC-5.4-3.5.8.0/
          sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
          sudo rm -rf SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.src.rpm
          sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            cd /root
            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-5.4-3.5.8.0.tgz
            tar -xvf MLNX_OFED_SRC-5.4-3.5.8.0.tgz && cd MLNX_OFED_SRC-5.4-3.5.8.0/
            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
            rm -rf SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.src.rpm
            wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm
          • CentOS 7.9

            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-5.4-3.5.8.0.tgz
            sudo tar -xvf MLNX_OFED_SRC-5.4-3.5.8.0.tgz && cd MLNX_OFED_SRC-5.4-3.5.8.0/
            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
            sudo rm -rf SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.src.rpm
            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm

          Ubuntu 24.04/22.04/20.04/18.04

          • Ubuntu 24.04

            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/MLNX_OFED_SRC-debian-24.10-2.1.8.0.tgz
            sudo tar -xvf MLNX_OFED_SRC-debian-24.10-2.1.8.0.tgz && cd MLNX_OFED_SRC-24.10-2.1.8.0 && curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
            sudo rm -rf SOURCES/mlnx-ofed-kernel_24.10.OFED.24.10.2.1.8.1.orig.tar.gz
            wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/mlnx-ofed-kernel_24.10.egs.OFED.24.10.2.1.8.1.orig.tar.gz -O SOURCES/mlnx-ofed-kernel_24.10.egs.OFED.24.10.2.1.8.1.orig.tar.gz
          • Ubuntu 22.04/20.04/18.04

            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-debian-5.4-3.6.8.1.tgz
            sudo tar -xvf MLNX_OFED_SRC-debian-5.4-3.6.8.1.tgz && cd MLNX_OFED_SRC-5.4-3.6.8.1 && curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
            sudo rm -rf SOURCES/mlnx-ofed-kernel_5.4.orig.tar.gz
            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/mlnx-ofed-kernel_5.4.egs.orig.tar.gz -O SOURCES/mlnx-ofed-kernel_5.4.egs.orig.tar.gz
        3. 根據不同系統,執行相應命令安裝OFED驅動。

          Alibaba Cloud Linux 3

          sudo ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL8
          sudo dracut -f

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL8 
          • CentOS 7.9

            sudo ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL7 

          Ubuntu 24.04/22.04/20.04/18.04

          你需要將${VERSION_ID}替換為您的Ubuntu系統版本(例如24.04)。

          sudo curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
          sudo ./install.pl --config ./ofed_debian.conf --without-dkms --build-only --kernel-only 
          sudo /usr/bin/dpkg -i --force-confmiss DEBS/ubuntu${VERSION_ID}/x86_64/*.deb
        4. 執行以下命令,確認/usr/src/ofa_kernel/`uname -r`目錄是否存在。

          • 目錄存在,則直接執行下一步。

            ls /usr/src/ofa_kernel/`uname -r`
          • 目錄不存在,則先執行以下命令建立軟連結,再執行下一步。

            sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
        5. 重啟執行個體。

          OFED驅動安裝完成後,您需要重啟執行個體,確保新的核心模組生效。具體操作,請參見重啟執行個體

      3. 安裝eRDMA驅動。

        1. 下載並安裝eRDMA驅動。

          • Ubuntu 24.04執行以下命令。

            rm -rf  /lib/modules/`uname -r`/updates/dkms/erdma.ko
            curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh && bash env_setup.sh --url "http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.4.3.tar.gz"
          • 其他系統執行以下命令。

            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
            sudo bash env_setup.sh --egs
        2. 執行以下命令,通過eadm工具確認eRDMA驅動是否正常安裝。

          eadm ver

          返回結果如下所示,表示驅動已正常安裝。driver

          說明

          本樣本以驅動版本為0.2.35為例。如果返回結果提示沒有本命令或者執行失敗,請您重新安裝eRDMA驅動。

      4. 安裝GPU驅動。

        具體操作,請參見在GPU計算型執行個體中手動安裝Tesla驅動(Linux)

      5. 載入nv_peer_mem服務元件。

        • (推薦)GPU驅動為470.xx.xx及以上版本

          使能GPU Direct RDMA需要載入nv_peer_mem服務元件,建議使用470.xx.xx及以上版本的GPU驅動,因為NVIDIA在驅動版本為470.xx.xx及以上版本中已預裝了該服務元件。您可以直接按照以下步驟載入nvidia_peermem模組。

          sudo modprobe nvidia_peermem
          # 可通過lsmod|grep nvidia檢查是否已成功載入nvidia_peermem
          說明

          如果機器重啟後,您需要重新載入nvidia_peermem模組。

        • GPU驅動為470.xx.xx以下版本

          您需要手動下載並安裝相應服務元件,下載及編譯安裝方法如下所示。

          sudo git clone https://github.com/Mellanox/nv_peer_memory.git
          # 編譯並安裝nv_peer_mem.ko
          cd nv_peer_memory && make
          cp nv_peer_mem.ko /lib/modules/$(uname -r)/kernel/drivers/video
          depmod -a
          modprobe nv_peer_mem
          # 可通過lsmod|grep nv_peer_mem檢查
          service nv_peer_mem start
  1. 頻寬驗證。

    1. 遠端連線GPU執行個體。

      具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)

    2. 執行以下命令,檢查2塊eRDMA網卡是否正常。

      sudo ibv_devinfo

      eRDMA驅動安裝指令碼預設安裝最新版本的驅動,如果您需要安裝舊版本eRDMA驅動,請提交工單擷取協助。

      本文以eRDMA驅動為0.2.37或以上版本為例,顯示結果如下所示,表示2塊eRDMA網卡正常存在。其中,2個eRDMA裝置的連接埠state均為PORT_ACTIVE時,表示eRDMA網卡狀態正常。

      網卡.jpg

      說明

      如果eRDMA裝置的連接埠stateinvalid state,則表示該eRDMA網卡狀態異常,建議先檢查輔助網卡是否配置正確。例如,通過執行ifconfig命令查看所有網卡配置是否存在,以及所有網卡IP地址是否存在。

    3. 執行以下命令,安裝perftest測試載入器。

      sudo yum install perftest -y
    4. 執行以下命令,測試RDMA網路頻寬是否符合對應硬體的預期表現。

      1. 在Server端執行以下命令,等待Client端的串連請求。

        sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515
      2. 在Client端執行以下命令,發送串連請求和資料包。

        sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ip

        其中,server_ip是Server端ECS執行個體上綁定eRDMA的彈性網卡所對應的私人IP地址。擷取IP地址的方法,請參見查看IP地址

      說明

      上述perftest測試使用了1張網卡通訊,如果您業務需要啟用2張網卡進行通訊,則需要同時啟動2個perftest進程,並通過-d參數為2個進程各指定1張eRDMA網卡、-p參數指定不同的通訊連接埠。更多資訊,請參見perftest詳情

      測試結果包括平均頻寬,系統返回資訊如下,表示eRDMA通訊正常。

      回顯資訊詳情

      ---------------------------------------------------------------------------------------
                          RDMA_Write BW Test
       Dual-port       : OFF          Device         : erdma_0
       Number of qps   : 16           Transport type : IB
       Connection type : RC           Using SRQ      : OFF
       PCIe relax order: ON
       ibv_wr* API     : OFF
       TX depth        : 128
       CQ Moderation   : 1
       Mtu             : 1024[B]
       Link type       : Ethernet
       GID index       : 1
       Max inline data : 0[B]
       rdma_cm QPs     : OFF
       Data ex. method : Ethernet
      ---------------------------------------------------------------------------------------
       local address: LID 0000 QPN 0x0002 PSN 0xa66b22 RKey 0x000100 VAddr 0x007f09922fd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0003 PSN 0x3b9364 RKey 0x000100 VAddr 0x007f099230d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0004 PSN 0x6b1ade RKey 0x000100 VAddr 0x007f099231d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0005 PSN 0x8c83d5 RKey 0x000100 VAddr 0x007f099232d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0006 PSN 0x1335c4 RKey 0x000100 VAddr 0x007f099233d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0007 PSN 0xc451d6 RKey 0x000100 VAddr 0x007f099234d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0008 PSN 0x4edd7d RKey 0x000100 VAddr 0x007f099235d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0009 PSN 0x93d832 RKey 0x000100 VAddr 0x007f099236d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000a PSN 0x16d2ee RKey 0x000100 VAddr 0x007f099237d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000b PSN 0x6820d8 RKey 0x000100 VAddr 0x007f099238d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000c PSN 0x9419c RKey 0x000100 VAddr 0x007f099239d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000d PSN 0xedd7ff RKey 0x000100 VAddr 0x007f09923ad000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000e PSN 0x70ff7f RKey 0x000100 VAddr 0x007f09923bd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000f PSN 0x8ccc0 RKey 0x000100 VAddr 0x007f09923cd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0010 PSN 0x33327e RKey 0x000100 VAddr 0x007f09923dd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0011 PSN 0x9b836a RKey 0x000100 VAddr 0x007f09923ed000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       remote address: LID 0000 QPN 0x0002 PSN 0x651666 RKey 0x000100 VAddr 0x007f5011099000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0003 PSN 0xf99758 RKey 0x000100 VAddr 0x007f50110a9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0004 PSN 0xd001c2 RKey 0x000100 VAddr 0x007f50110b9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0005 PSN 0x23aae9 RKey 0x000100 VAddr 0x007f50110c9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0006 PSN 0xfad148 RKey 0x000100 VAddr 0x007f50110d9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0007 PSN 0xca210a RKey 0x000100 VAddr 0x007f50110e9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0008 PSN 0xe0cea1 RKey 0x000100 VAddr 0x007f50110f9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0009 PSN 0x8ddc86 RKey 0x000100 VAddr 0x007f5011109000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000a PSN 0xde22b2 RKey 0x000100 VAddr 0x007f5011119000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000b PSN 0x9f2f4c RKey 0x000100 VAddr 0x007f5011129000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000c PSN 0x66a100 RKey 0x000100 VAddr 0x007f5011139000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000d PSN 0x934d93 RKey 0x000100 VAddr 0x007f5011149000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000e PSN 0xf70783 RKey 0x000100 VAddr 0x007f5011159000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000f PSN 0xfdce74 RKey 0x000100 VAddr 0x007f5011169000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0010 PSN 0xfca422 RKey 0x000100 VAddr 0x007f5011179000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0011 PSN 0xaa3e3e RKey 0x000100 VAddr 0x007f5011189000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
      ---------------------------------------------------------------------------------------
       #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
       65536      910045           0.00               95.42              0.182003

測實驗證

為測試和驗證配備eRDMA網路的GPU執行個體在應用中的實際表現,本文以nccl-tests為例,展示如何在實際業務中使用eRDMA的具體操作。關於nccl-tests的更多資訊,請參見nccl-tests

  1. 執行以下命令,安裝NCCL。

    通過下載並編譯源碼安裝NCCL,源碼編譯的方式如下:

    說明

    您也可以在NVIDIA官網NVIDIA NCCL下載安裝包,然後進行安裝。

    本測試以將NCCL安裝在/usr/local/nccl路徑下為例,您也可以根據實際需要設定NCCL安裝的目標路徑。

    # build nccl
    cd /root
    git clone https://github.com/NVIDIA/nccl.git
    cd nccl/
    make -j src.lib PREFIX=/usr/local/nccl
    make install PREFIX=/usr/local/nccl
  2. 執行以下命令,查看nccl和libnccl.so庫是否已安裝。

    # 查看nccl
    ls /usr/local/nccl
    # 查看libnccl.so庫
    ls /usr/local/nccl/lib
  3. 執行以下命令,安裝OpenMPI及編譯器。

    wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.3.tar.gz
    tar -xzf openmpi-4.1.3.tar.gz
    cd openmpi-4.1.3
    ./configure --prefix=/usr/local/openmpi
    make -j && make install
  4. 執行以下命令,設定環境變數。

    NCCL_HOME=/usr/local/nccl
    CUDA_HOME=/usr/local/cuda
    MPI_HOME=/usr/local/openmpi
    
    export LD_LIBRARY_PATH=${NCCL_HOME}/lib:${CUDA_HOME}/lib64:${MPI_HOME}/lib:$LD_LIBRARY_PATH
    export PATH=${CUDA_HOME}/bin:${MPI_HOME}/bin:$PATH

    其中,上述命令中以NCCL_HOME指向NCCL安裝路徑(/usr/local/nccl)、CUDA_HOME指向CUDA安裝路徑(/usr/local/cuda)、MPI_HOME指向OpenMPI的安裝路徑(/usr/local/openmpi)為例,請根據您實際的安裝路徑進行替換。

    命令編輯完成後,在執行個體內部進入~/.bashrc檔案、設定PATHLD_LIBRARY_PATH,執行以下命令使環境變數設定生效。

    source ~/.bashrc
  5. 執行以下命令,下載並編譯測試代碼。

    git clone https://github.com/NVIDIA/nccl-tests
    cd nccl-tests/
    make MPI=1 CUDA_HOME=/usr/local/cuda MPI_HOME=/usr/local/openmpi
  6. 執行以下命令,建立執行個體之間的SSH互信。

    在host1產生公開金鑰後並拷貝到host2上以建立執行個體之間的SSH互信。

    #在host1執行
    ssh-keygen
    ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2}
    
    ssh root@{host2}   # 在host1執行,測試一下是否可以無密碼串連host2。如果是,表示已建立執行個體之間的SSH互信。
  7. 執行如下命令,測試NCCL all_reduce效果。

    # 將host1, host2替換為您對應的IP地址
    mpirun --allow-run-as-root -np 16 -npernode 8 -H host1:8,host2:8 \
    --bind-to none \
    -mca btl_tcp_if_include eth0 \
    -x NCCL_SOCKET_IFNAME=eth0 \
    -x NCCL_DEBUG=INFO \
    -x LD_LIBRARY_PATH \
    -x PATH \
    ./build/all_reduce_perf -b 4M -e 4M -f 2 -g 1 -t 1 -n 20

相關文檔

  • 在企業級ECS執行個體上配置eRDMA,可實現無需更改業務組網,即可在原有網路下體驗超低延遲、大吞吐、高彈性的高效能RDMA網路服務。具體操作,請參見在企業級執行個體上啟用eRDMA

  • 容器中需要大規模資料轉送和高效能網路通訊的應用情境中,將eRDMA功能引入容器(Docker)環境可實現容器應用程式繞過作業系統核心直接存取主機的物理eRDMA裝置,從而提供更快的資料轉送和通訊效率。具體操作,請參見在容器(Docker)中啟用eRDMA

  • 如需監測或診斷eRDMA,方便您對eRDMA的運行狀態進行即時監控。具體操作,請參見監測和診斷eRDMA