すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:sccgnインスタンスの使用とsccgnインスタンスのパフォーマンスの確認

最終更新日:Jan 27, 2025

SHENLONGアーキテクチャを使用するGPU高速化サーバーのネットワークパフォーマンスをさらに最適化するために、Alibaba Cloudは、sccgnインスタンスファミリーという名前のGPU高速化コンピューティング最適化スーパーコンピューティングクラスター (SCC) インスタンスファミリーを提供しています。 sccgnインスタンスは、優れたコンピューティングパワーと強力なネットワーク通信機能を提供します。 このトピックでは、sccgnインスタンスを使用し、sccgnインスタンスのパフォーマンスを確認する方法について説明します。

使用上の注意

sccgnインスタンスには、GPUと高性能NVIDIA Mellanox ConnectX SmartNICが搭載されており、優れたコンピューティングパワーと強力なネットワーク通信機能を提供します。 sccgnインスタンスは、深層学習や高性能コンピューティングなど、高強度のコンピューティングと通信を必要とするシナリオに適しています。 sccgnインスタンスを使用する場合は、次の項目に注意してください。

  • リモートダイレクトメモリアクセス (RDMA) 機能のみが必要な場合は、イメージを選択してsccgnインスタンスを作成するときに、[RDMAソフトウェアスタックの自動インストール] を選択します。

    .

  • ビジネスでGPUDirect RDMA機能が必要な場合は、イメージを選択してsccgnインスタンスを作成するときに、[GPUドライバーの自動インストール] を選択し、必要なソフトウェアスタックとツールキットをインストールします。

    説明

    GPUDirect RDMAは、KeplerクラスのGPUおよびCompute Unified Device Architecture (CUDA) 5.0で導入されたテクノロジーであり、GPUと、標準のPeripheral Component Interface Express (PCIe) 機能を使用するサードパーティデバイス間の直接データ交換を可能にします。 サードパーティ装置の例には、GPU、ネットワークインタフェース、映像取得装置、及びストレージアダプタが含まれる。 詳細については、「NVIDIAドキュメント」をご参照ください。

  • インストールするネットワークインターフェイスコントローラー (NIC) ドライバーがOpenFabrics Enterprise Distribution (OFED) オープンソースバージョン (ダウンロードURL) の場合は、NICドライバーをインストールしてから、GPUドライバーとCUDAをインストールできます。

    説明

    nvidia-peermemカーネルモジュールは、CUDA 11.4とR470の時点でGPUドライバーに統合されています。 nv_peer_memモジュールをインストールする必要はありません。 詳細については、nv_peer_memoryをご参照ください。

機能検証と帯域幅検証

機能検証

この検証では、RDMAソフトウェアスタックがsccgnインスタンスに期待どおりにインストールおよび構成されているかどうかを確認します。

次のコマンドを実行して、RDMAソフトウェアスタックのインストールを確認します。

説明

チェック中に発生する可能性のある問題については、このトピックのFAQセクションを参照してください。

rdma_qos_check -V

次のコマンド出力は、RDMAソフトウェアスタックが期待どおりにインストールされていることを示します。

===========================================================
*    rdma_qos_check
-----------------------------------------------------------
* ITEM          DETAIL                               RESULT
===========================================================
* link_up       eth1: yes                                ok
* mlnx_device   eth1: 1                                  ok
* drv_ver       eth1: 5.2-2.2.3                          ok
...
* pci           0000:c5:00.1                             ok
* pci           0000:e1:00.0                             ok
* pci           0000:e1:00.1                             ok
===========================================================

帯域幅検証

この検証では、RDMAネットワーク帯域幅がハードウェアの要件を満たしているかどうかを確認します。

  • サーバー側で次のコマンドを実行します。

    ib_read_bw -a -q 20 --report_gbits -d mlx5_bond_0

    次のコードは、コマンド出力の例を示しています。

    ---------------------------------------------------------------------------------------
                        RDMA_Read BW Test
     Dual-port       : OFF        Device         : mlx5_bond_0
     Number of qps   : 20        Transport type : IB
     Connection type : RC        Using SRQ      : OFF
     PCIe relax order: ON
     ibv_wr* API     : ON
     CQ Moderation   : 100
     Mtu             : 1024[B]
     Link type       : Ethernet
     GID index       : 3
     Outstand reads  : 16
     rdma_cm QPs     : OFF
     Data ex. method : Ethernet
    ---------------------------------------------------------------------------------------
     local address: LID 0000 QPN 0x11ca PSN 0x6302b0 OUT 0x10 RKey 0x17fddc VAddr 0x007f88e1e5d000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14
     local address: LID 0000 QPN 0x11cb PSN 0x99aeda OUT 0x10 RKey 0x17fddc VAddr 0x007f88e265d000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14
     local address: LID 0000 QPN 0x11cc PSN 0xf0d01c OUT 0x10 RKey 0x17fddc VAddr 0x007f88e2e5d000
     ...
      remote address: LID 0000 QPN 0x11dd PSN 0x8efe92 OUT 0x10 RKey 0x17fddc VAddr 0x007f672004b000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14
    ---------------------------------------------------------------------------------------
     #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
     8388608    20000            165.65             165.63            0.002468
    ---------------------------------------------------------------------------------------
  • クライアント側で次のコマンドを実行します。

    ib_read_bw -a -q 20 --report_gbits -d mlx5_bond_0 #server_ip

    次のコードは、コマンド出力の例を示しています。

    ---------------------------------------------------------------------------------------
                        RDMA_Read BW Test
     Dual-port       : OFF        Device         : mlx5_bond_0
     Number of qps   : 20        Transport type : IB
     Connection type : RC        Using SRQ      : OFF
     PCIe relax order: ON
     ibv_wr* API     : ON
     TX depth        : 128
     CQ Moderation   : 100
     Mtu             : 1024[B]
     Link type       : Ethernet
     GID index       : 3
     Outstand reads  : 16
     rdma_cm QPs     : OFF
     Data ex. method : Ethernet
    ---------------------------------------------------------------------------------------
     local address: LID 0000 QPN 0x11ca PSN 0x787f05 OUT 0x10 RKey 0x17fddc VAddr 0x007f671684b000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14
     local address: LID 0000 QPN 0x11cb PSN 0x467042 OUT 0x10 RKey 0x17fddc VAddr 0x007f671704b000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14
     local address: LID 0000 QPN 0x11cc PSN 0xac262e OUT 0x10 RKey 0x17fddc VAddr 0x007f671784b000
     ...
      remote address: LID 0000 QPN 0x11dd PSN 0xeb1c3f OUT 0x10 RKey 0x17fddc VAddr 0x007f88eb65d000
     GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14
    ---------------------------------------------------------------------------------------
     #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
    Conflicting CPU frequency values detected: 800.000000 != 3177.498000. CPU Frequency is not max.
     2          20000           0.058511            0.058226            3.639132
    Conflicting CPU frequency values detected: 799.996000 != 3384.422000. CPU Frequency is not max.
    ...
    Conflicting CPU frequency values detected: 800.000000 != 3166.731000. CPU Frequency is not max.
     4194304    20000            165.55             165.55            0.004934
    Conflicting CPU frequency values detected: 800.000000 != 2967.226000. CPU Frequency is not max.
     8388608    20000            165.65             165.63            0.002468
    ---------------------------------------------------------------------------------------

上記のコマンドが実行されている場合は、rdma_monitor -s -t -Gコマンドを実行して、ECSコンソールのNICの各ポートの帯域幅を監視します。 次のコードは、コマンド出力の例を示しています。

------
2022-2-18 09:48:59 CST
tx_rate: 81.874 (40.923/40.951)
rx_rate: 0.092 (0.055/0.037)
tx_pause: 0 (0/0)
rx_pause: 0 (0/0)
tx_pause_duration: 0 (0/0)
rx_pause_duration: 0 (0/0)
np_cnp_sent: 0
rp_cnp_handled: 4632
num_of_qp: 22
np_ecn_marked: 0
rp_cnp_ignored: 0
out_of_buffer: 0
out_of_seq: 0
packet_seq_err: 0
tx_rate_prio0: 0.000 (0.000/0.000)
rx_rate_prio0: 0.000 (0.000/0.000)
tcp_segs_retrans: 0
tcp_retrans_rate: 0
cpu_usage: 0.35%
free_mem: 1049633300 kB

------

NCCLテストケース

アプリケーションでRDMAネットワークを使用するインスタンスのパフォーマンスをテストおよび検証するために、次のセクションでは、sccgnインスタンスのRDMA機能を使用してアプリケーションを高速化する方法の例を示します。 この例では、NVIDIA Collective Communication Library (NCCL) テストケースが使用されています。

説明

NCCLテストの詳細については、nccl-testsをご参照ください。

#!/bin/sh
# Use instances that run Alibaba Cloud Linux 2.
# Install openmpi and a compiler.
yum install -y gcc-c++
wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/rdma/sccgn7ex/Alinux2/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


# Modify ~/.bashrc.
export PATH=/usr/local/cuda/bin:/usr/local/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/lib:/usr/local/openmpi/lib:$LD_LIBRARY_PATH

# Download and compile the test code.
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests/
make MPI=1 CUDA_HOME=/usr/local/cuda

# Replace host1 and host2 with the IP addresses of the instances.
mpirun --allow-run-as-root -np 16 -npernode 8 -H {host1}:{host2}  \
  --bind-to none \
  -mca btl_tcp_if_include bond0 \
  -x PATH \
  -x CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
  -x NCCL_SOCKET_IFNAME=bond0 \
  -x NCCL_IB_HCA=mlx5 \
  -x NCCL_IB_DISABLE=0 \
  -x NCCL_DEBUG=INFO \
  -x NCCL_NSOCKS_PERTHREAD=8 \
  -x NCCL_SOCKET_NTHREADS=8 \
  -x NCCL_IB_GID_INDEX=3 \
  -x NCCL_DEBUG_SUBSYS=NET,GRAPH \
  -x NCCL_IB_QPS_PER_CONNECTION=4 \
  ./build/all_reduce_perf -b 4M -e 4M -f 2 -g 1 -t 1 -n 20

よくある質問

rdma_qos_check -Vコマンドを実行すると、drv_fw_ver eth1: 5.2-2.2.3/22.29.1016 failエラーメッセージが返されます。

原因: Mellanox NICファームウェアが更新されていません。

解決策:

  • インスタンスがAlibaba Cloud Linux 2またはCentOS 8.3オペレーティングシステムを実行している場合、次のコマンドを実行してインスタンスのNICファームウェアを更新します。

    /usr/share/nic-drivers-mellanox-rdma/sources/alifwmanager-22292302 --force --yes
  • インスタンスがDebianベースのオペレーティングシステムを実行している場合は、ファームウェア更新プログラムをダウンロードし、次のコマンドを実行してインスタンスのNICファームウェアを更新します。

    wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/rdma/sccgn7ex/Debian10u10/alifwmanager-22312902
    ./alifwmanager-22312902 --force --yes

rdma_qos_check -Vコマンドを実行すると、* roce_ver : 0 failエラーメッセージが返されます。

原因: configfsやrdma_cmなどのカーネルモジュールがありません。

解決策: modprobe mlx5_ib && modprobe configfs && modprobe rdma_cmコマンドを実行し、必要なカーネルモジュールをロードします。

Debianオペレーティングシステムを実行しているインスタンスでsystemctl start networkingコマンドを実行してネットワークサービスを開始すると、システムはボンドインターフェイスが見つからないことを確認します。

原因: mlx5_ibカーネルモジュールがロードされていないため、エラーが発生する可能性があります。

解決策: modprobe mlx5_ibコマンドを実行して、mlx5_ibカーネルモジュールをロードします。

rdma_qos_check -Vまたはib_read_bwコマンドを実行すると、ERROR: RoCE tos isn correct on mlx5_bond_3というエラーメッセージが返されます。

rdma_qos_initコマンドを実行して、ネットワークを初期化します。

rdma_qos_check -Vコマンドを実行すると、cm_tos mlx5_bond_1: 0 failエラーメッセージが返されます。

Alibaba Cloud Linux 2オペレーティングシステムを実行するインスタンスを再起動した後、rdma_qos_check -V検証コマンドを実行すると、cm_tos mlx5_bond_1: 0 failエラーメッセージが返されます。 この問題を解決するには、rdma_qos_initコマンドを実行してネットワークを初期化します。

rdma_qos_check -Vコマンドを実行すると、trust_mod eth1: pcp failエラーメッセージが返されます。

CentOS 8.3オペレーティングシステムを実行するインスタンスを再起動した後、rdma_qos_check -V検証コマンドを実行すると、trust_mod eth1: pcp failエラーメッセージが返されます。 この問題を解決するには、rdma_qos_initコマンドを実行してネットワークを初期化します。

RDMAネットワークインタフェースbond * のIPアドレスを取得できません。

ifdown bond * およびifup bond * コマンドを実行して、bondインターフェイスのIPアドレスを取得します。

説明

* を対応するネットワークインターフェイスのシリアル番号に置き換えます。