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

Container Service for Kubernetes:ACKクラスターのeRDMAノードでGDRアプリケーションを実行する

最終更新日:Dec 25, 2024

GPU Direct RDMA (GDR) は、高性能コンピューティングとディープラーニングのためにNVIDIAによって開発された技術です。 これにより、GPUは、他のGPUやアクセラレータなど、CPUを介さずにリモートダイレクトメモリアクセス (RDMA) をサポートするデバイスとデータを直接交換できます。 このトピックでは、Container Service for Kubernetes (ACK) クラスターのelastic RDMA (eRDMA) ノードでGDRアプリケーションを実行する方法について説明します。

前提条件

手順

  1. Arenaを使用して推論タスクを送信します。

    arena submit mpijob \
      --name=mpi-allreduce-sync-erdma \
      --device=aliyun/erdma=1 \
      -e NCCL_DEBUG=TRACE \
      -e OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 \
      -e OMPI_ALLOW_RUN_AS_ROOT=1 \
      --gpus=8 \
      --memory=16Gi \
      --hostNetwork true \
      --cpu=4 \
      --workers=2 \
      --image=registry.cn-beijing.aliyuncs.com/acs/horovod:0.28.1-tf2.9.2-torch1.12.1-py3.8-erdma \
      --toleration all \
      "mpirun -np 2 \
      --allow-run-as-root \
      --mca btl_tcp_if_include bond0 \
      --mca oob_tcp_if_include bond0 \
      --mca pml ob1 \
      --mca btl ^openib \
      python /examples/pytorch/pytorch_synthetic_benchmark.py"

    期待される出力:

    iZ2zeg0kcgyxepyc5r63kgZ:17:28 [0] NCCL INFO NET/IB : Using [0]rocep26s0:1/RoCE ; OOB eth0:192.168.8.128<0>
    iZ2zeg0kcgyxepyc5r63kgZ:17:28 [0] NCCL INFO Using network IB
    iZ2zeg0kcgyxepyc5r63kgZ:18:27 [1] NCCL INFO NET/IB : Using [0]rocep26s0:1/RoCE ; OOB eth0:192.168.8.128<0>
    iZ2zeg0kcgyxepyc5r63kgZ:18:27 [1] NCCL INFO Using network IB

    ジョブのログは、NVIDIA Collective Communication Library (NCCL) の初期化中にeRDMAデバイスが識別されたことを示しています。 eRDMAデバイスはRoCEモードで動作し、ネットワーク通信にeRDMA InfiniBand (BI) を使用します。

  2. ホスト上のeRDMAインターフェイス (ERIs) に関する情報を照会します。

    $ ibv_devinfo
    hca_id:	rocep156s0
    	transport:			eRDMA
    	fw_ver:				0.2.0
    	node_guid:			0216:3eff:fe2c:b8f3
    	sys_image_guid:			0216:3eff:fe2c:b8f3
    	vendor_id:			0x1ded
    	vendor_part_id:			4223
    	hw_ver:				0x0
    	phys_port_cnt:			1
    		port:	1
    			state:			PORT_DOWN (1)
    			max_mtu:		1024 (3)
    			active_mtu:		1024 (3)
    			sm_lid:			0
    			port_lid:		0
    			port_lmc:		0x00
    			link_layer:		Ethernet
    
    hca_id:	rocep26s0
    	transport:			eRDMA
    	fw_ver:				0.2.0
    	node_guid:			0216:3eff:fe10:f8b0
    	sys_image_guid:			0216:3eff:fe10:f8b0
    	vendor_id:			0x1ded
    	vendor_part_id:			4223
    	hw_ver:				0x0
    	phys_port_cnt:			1
    		port:	1
    			state:			PORT_ACTIVE (4)
    			max_mtu:		1024 (3)
    			active_mtu:		1024 (3)
    			sm_lid:			0
    			port_lid:		0
    			port_lmc:		0x00
    			link_layer:		Ethernet
  3. eadmを使用して、ホスト上のeRDMAトラフィックを監視します。

    $ eadm stat -d rocep26s0 -l
    Monitoring rocep26s0...    (press CTRL-C to stop)
    
     15:59:56  rx:           0 B/s     0 p/s          tx:           0 B/s     0 p/s
    
    
     rocep26s0  /  traffic statistics
    
                               rx         |       tx
    --------------------------------------+------------------
      bytes                    11.06 KiB  |       11.18 KiB
    --------------------------------------+------------------
              max            15.43 KiB/s  |     15.10 KiB/s
          average             4.03 KiB/s  |      4.07 KiB/s
              min                  0 B/s  |           0 B/s
    --------------------------------------+------------------
      packets                    8406769  |         8546764
    --------------------------------------+------------------
              max              38990 p/s  |       37488 p/s
          average               2988 p/s  |        3038 p/s
              min                  0 p/s  |           0 p/s
    --------------------------------------+------------------
      time                 33.78 minutes

    前の出力は、eRDMAトラフィックがリアルタイムで検出されたことを示します。