Después de conectar una interfaz Elastic RDMA (ERI) a una instancia GPU, las instancias GPU dentro de la misma VPC utilizan el paso directo de RDMA para acelerar la interconectividad. eRDMA mejora el RDMA tradicional al ofrecer una transferencia de datos más eficiente, optimizar la comunicación entre instancias GPU y reducir el tiempo de procesamiento de tareas. En este tema se explica cómo habilitar eRDMA en una instancia GPU.
Límites
|
Elemento |
Descripción |
|
Tipo de instancia |
La interfaz Elastic RDMA es compatible con los siguientes tipos de instancia:
|
|
Imagen |
Utilice una de las siguientes imágenes:
|
|
Número de interfaces Elastic RDMA |
|
|
Límites de red |
|
Procedimiento
Para utilizar eRDMA en una instancia compatible, se deben cumplir dos requisitos: instalar la pila de software de eRDMA y conectar una interfaz de red elástica (ENI) con la interfaz Elastic RDMA (ERI) habilitada.
Configurar eRDMA durante la creación de la instancia
Vaya a la página Custom Launch en la consola de ECS.
-
Cree una instancia GPU que admita ERI.
Durante la creación de la instancia, preste atención a la siguiente configuración. Para obtener información sobre otros parámetros, consulte Create an instance by using the wizard.
Instance Type: seleccione un tipo de instancia compatible con ERI. Para obtener más información, consulte Limits. En este tema se utiliza ebmgn8is como ejemplo.
-
Images: al seleccionar una imagen pública, las opciones Auto-install GPU Driver y Install eRDMA Software Stack se seleccionan de forma predeterminada. Una vez creada la instancia, el sistema instala automáticamente el controlador de GPU, CUDA, cuDNN y la pila de software de eRDMA.
En este ejemplo, el sistema operativo es Alibaba Cloud Linux 3.2104 LTS 64-bit y la versión del controlador de GPU es CUDA Version 12.4.1 / Driver Version 550.127.08 / CUDNN Version 9.2.0.82.
-
(Opcional) Jumbo Frames: si la instancia seleccionada admite jumbo frames, habilite esta función para mejorar el rendimiento de la comunicación
eRDMA.Habilitar tramas jumbo permite establecer una unidad máxima de transmisión (MTU) mayor. Cuando utilice NCCL y el protocolo de baja latencia LL128 para la comunicación, la MTU debe ser 8500. Si las tramas jumbo no están habilitadas, la MTU debe ser 1400. Una configuración incorrecta de la MTU puede provocar problemas de coherencia en los datos.
-
ENIs: cuando crea una instancia GPU y configura las ENI en la página Bandwidths & Security Groups del asistente de configuración, se crean de forma predeterminada una NIC principal y una NIC secundaria compatibles con eRDMA. El sistema selecciona automáticamente la opción eRDMA Interface para ambas tarjetas de red.
NotaNo es posible habilitar ni deshabilitar la capacidad ERI de una sola ENI mientras la instancia GPU se está ejecutando.
Las dos tarjetas de red con ERI habilitado se vinculan automáticamente a canales distintos. No necesita especificar los canales manualmente.
La NIC principal no se puede desconectar de la instancia GPU. Se crea y se libera junto con la instancia.
-
Vaya a la página de detalles de la instancia creada y haga clic en la pestaña ENIs para consultar el tipo de tarjeta de red de la instancia.
Si el tipo de la NIC principal o de una ENI secundaria incluye "Elastic RDMA Interface", significa que la ENI tiene ERI habilitado.
Configurar eRDMA en una instancia GPU existente
Inicie sesión en la consola de ECS.
-
Busque la instancia de destino, vaya a su página de detalles y haga clic en la pestaña ENIs para comprobar si ERI está habilitado.
Si una ENI tiene ERI habilitado, la columna ENI Type mostrará Primary ENI (Elastic RDMA Interface) o Secondary ENI (Elastic RDMA Interface).
Si ERI ya está habilitado, omita los pasos siguientes.
Si ERI no está habilitado, siga estos pasos para configurar eRDMA en la NIC principal o en una ENI secundaria.
-
Configure eRDMA en la NIC principal o en una ENI secundaria.
Nota-
Para instance types that support jumbo frames, puede enable jumbo frames con el fin de mejorar el rendimiento de la comunicación
eRDMA.Habilitar tramas jumbo permite establecer una MTU mayor. Cuando utilice NCCL y el protocolo de baja latencia LL128 para la comunicación, la MTU debe ser 8500. Si las tramas jumbo no están habilitadas, la MTU debe ser 1400. Una configuración incorrecta de la MTU puede provocar problemas de coherencia en los datos.
Si no seleccionó la opción eRDMA Interface para la NIC principal ni para la secundaria al crear la instancia GPU, puede crear y habilitar dos ENI secundarias con ERI después de crear la instancia.
Si no seleccionó la opción eRDMA Interface para una de las dos tarjetas de red (principal o secundaria) al crear la instancia GPU, solo podrá crear y habilitar una ENI secundaria adicional con ERI después de crear la instancia.
-
-
(Opcional) Instale la pila de software de eRDMA en la instancia.
Si no seleccionó la opción Install eRDMA Software Stack al elegir la imagen pública, debe instalar la pila de software de eRDMA de forma manual o mediante un script para habilitar la capacidad de la interfaz Elastic RDMA (ERI).
-
Instalación mediante script
Una vez creada la instancia GPU, puede utilizar el siguiente script de ejemplo para instalar por separado la pila de software de eRDMA, el controlador de GPU, CUDA y cuDNN.
#!/bin/sh #Please input version to install DRIVER_VERSION="570.133.20" CUDA_VERSION="12.8.1" CUDNN_VERSION="9.8.0.87" 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 -
Instalación manual
Después de crear una instancia GPU, puede instalar manualmente el controlador OFED, el controlador eRDMA y el controlador de GPU; luego, cargue el componente de servicio
nv_peer_mem. Siga estos pasos:-
Conéctese a la instancia GPU.
Para obtener más información, consulte Connect to a Linux instance by using Workbench.
-
Instale el controlador OFED.
-
Ejecute el siguiente comando para instalar los paquetes necesarios.
Alibaba Cloud Linux 4
sudo yum install -y perl-File-Find perl-File-Copy perl-sigtrap perl-File-Compare sudo yum install --enablerepo=alinux4-devel libdb-devel valgrind-devel -y sudo yum install -y libselinux-devel autoconf iptables-devel patch elfutils-devel rpm-build kernel-devel-$(uname -r) libmnl-devel flex bison automake lsofAlibaba Cloud Linux 3
sudo yum install rpm-build flex iptables-devel systemd-devel gdb-headless elfutils-devel python3-Cython bison numactl-devel libmnl-devel libnl3-devel libdb-devel libselinux-devel perl-generators elfutils-libelf-devel kernel-rpm-macros valgrind-devel cmake lsof -yCentOS 8.5/8.4/7.9
-
CentOS 8.5/8.4
sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/centos8/python3-Cython-0.29.32-3.16.x86_64.rpm sudo yum install python3-Cython-0.29.32-3.16.x86_64.rpm -y cyum 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
sudo apt-get update -y sudo apt-get install -y pkg-config -
Ubuntu 22.04
sudo apt-get update -y sudo apt-get install -y pkg-config -
Ubuntu 20.04
sudo apt-get update -y sudo apt-get install -y pkg-config -
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
-
-
Ejecute el siguiente comando para descargar el archivo de configuración del paquete OFED.
Alibaba Cloud Linux 4
sudo echo '%rhel 10' > /usr/lib/rpm/macros.d/macros.alinux-compat sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/MLNX_OFED_SRC-26.04-0.8.5.0.tgz sudo tar -xf MLNX_OFED_SRC-26.04-0.8.5.0.tgz && cd MLNX_OFED_SRC-26.04-0.8.5.0/ sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud4/4/ofed_alibaba_cloud4.conf sudo rm -rf SRPMS/mlnx-ofa_kernel-26.04-OFED.26.04.0.8.5.1.src.rpm sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-26.04-OFED.26.04.0.8.5.1.egs.1.src.rpm -O SRPMS/mlnx-ofa_kernel-26.04-OFED.26.04.0.8.5.1.egs.1.src.rpmAlibaba Cloud Linux 3
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/MLNX_OFED_SRC-24.10-3.2.5.0.tgz sudo tar -xvf MLNX_OFED_SRC-24.10-3.2.5.0.tgz && cd MLNX_OFED_SRC-24.10-3.2.5.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-24.10-OFED.24.10.3.2.5.1.src.rpm sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-24.10-OFED.24.10.3.2.5.1.egs.1.src.rpm -O SRPMS/mlnx-ofa_kernel-24.10-OFED.24.10.3.2.5.1.egs.1.src.rpmCentOS 8.5/8.4/7.9
-
CentOS 8.5/8.4
cd /root 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 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/22.04/20.04
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/MLNX_OFED_SRC-debian-24.10-3.2.5.0.tgz sudo tar -xvf MLNX_OFED_SRC-debian-24.10-3.2.5.0.tgz && cd MLNX_OFED_SRC-24.10-3.2.5.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.3.2.5.1.orig.tar.gz sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/mlnx-ofed-kernel_24.10.egs.1.OFED.24.10.3.2.5.1.orig.tar.gz -O SOURCES/mlnx-ofed-kernel_24.10.egs.1.OFED.24.10.3.2.5.1.orig.tar.gz -
Ubuntu 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
-
-
Ejecute el comando correspondiente a su sistema operativo para instalar el controlador OFED.
Alibaba Cloud Linux 4
sudo ./install.pl --config ./ofed_alibaba_cloud4.conf --distro RHEL8 --without-depcheck --without-dkms sudo dracut -fAlibaba Cloud Linux 3
sudo ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL8 sudo dracut -fCentOS 8.5/8.4/7.9
-
CentOS 8.5/8.4
sudo ./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
Reemplace
${VERSION_ID}con su versión de Ubuntu, por ejemplo, 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`lsb_release -s -r`/x86_64/*.deb sudo update-initramfs -u -
-
Ejecute el siguiente comando para comprobar si existe el directorio
/usr/src/ofa_kernel/.-
Si el directorio existe, continúe con el siguiente paso.
ls /usr/src/ofa_kernel/`uname -r` -
Si el directorio no existe, ejecute el siguiente comando para crear un enlace simbólico y, a continuación, continúe con el siguiente paso.
sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
-
-
Reinicie la instancia.
Después de instalar el controlador OFED, reinicie la instancia para que el nuevo módulo del kernel surta efecto. Para obtener más información, consulte Restart an instance.
-
-
Instale el controlador eRDMA.
-
Descargue e instale el controlador eRDMA.
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo bash env_setup.sh --egs -
Ejecute el siguiente comando para verificar la instalación del controlador eRDMA mediante la herramienta eadm:
sudo eadm verUna salida similar a la siguiente indica que la instalación se completó correctamente.
[root@xxx ~]# sudo eadm ver Query kernel driver version: 0.2.35NotaEn este tema se utiliza la versión 0.2.35 del controlador como ejemplo. Si el comando devuelve un error de "command not found" o no se ejecuta, vuelva a instalar el controlador eRDMA.
-
-
Instale el controlador de GPU.
Para obtener más información, consulte Manually install a Tesla driver (Linux) on a GPU instance.
-
Cargue el componente de servicio nv_peer_mem.
-
(Recomendado) Controlador de GPU 470.xx.xx o posterior
Para habilitar GPUDirect RDMA, debe cargar el componente de servicio nv_peer_mem. Se recomienda utilizar el controlador de GPU 470.xx.xx o posterior, ya que NVIDIA incluye este componente en dichas versiones. Puede ejecutar el siguiente comando para cargar el módulo nvidia_peermem.
sudo modprobe nvidia_peermem # You can run lsmod|grep nvidia to check whether nvidia_peermem is loaded.NotaSi se reinicia la instancia, debe volver a cargar el módulo nvidia_peermem.
-
Controladores de GPU anteriores a 470.xx.xx
Debe descargar e instalar manualmente el componente de servicio. El siguiente código muestra cómo descargar, compilar e instalar el componente.
sudo git clone https://github.com/Mellanox/nv_peer_memory.git # Compile and install nv_peer_mem.ko. cd nv_peer_memory && make cp nv_peer_mem.ko /lib/modules/$(uname -r)/kernel/drivers/video sudo depmod -a sudo modprobe nv_peer_mem # You can run lsmod|grep nv_peer_mem to check the result. sudo service nv_peer_mem start
-
-
-
-
Compruebe el ancho de banda.
-
Conéctese a la instancia GPU.
Para obtener más información, consulte Connect to a Linux instance by using Workbench.
-
Ejecute el siguiente comando para comprobar si las dos NIC eRDMA funcionan correctamente.
sudo ibv_devinfoDe forma predeterminada, el script de instalación del controlador eRDMA instala la versión más reciente. Si necesita instalar una versión anterior del controlador eRDMA, envíe un ticket para solicitar asistencia.
Este tema toma como ejemplo la versión 0.2.37 o posterior del controlador eRDMA. La siguiente salida muestra dos dispositivos eRDMA que funcionan correctamente. Un dispositivo eRDMA funciona bien cuando el
statede su puerto esPORT_ACTIVE.[ecs-xxx...xxx4gnd0hZ ~]$ sudo ibv_devinfo hca_id: erdma_0 transport: eRDMA (0) fw_ver: 0.2.0 node_guid: 0216:3eff:fe36:1eb4 sys_image_guid: 0216:3eff:fe36:1eb4 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 hca_id: erdma_1 transport: eRDMA (0) fw_ver: 0.2.0 node_guid: 0216:3eff:fe43:9c2a sys_image_guid: 0216:3eff:fe43:9c2a 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: EthernetNotaSi el
statedel puerto esinvalid state, el dispositivo no funciona correctamente. Se recomienda revisar primero la configuración de la ENI secundaria. Por ejemplo, ejecute el comandoifconfigpara comprobar que cada NIC tenga la configuración y la dirección IP correctas. -
Ejecute el siguiente comando para instalar la herramienta perftest.
sudo yum install perftest -y -
Ejecute los siguientes comandos para probar si el ancho de banda de la red RDMA cumple con lo esperado por el hardware.
-
En el servidor, ejecute el siguiente comando para escuchar las solicitudes de conexión del cliente.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 -
En el cliente, ejecute el siguiente comando para enviar las solicitudes de conexión y los paquetes de datos.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ipEn este comando,
server_ipes la dirección IP privada de la ENI con ERI habilitado del servidor. Para consultar esta dirección IP, consulte View IP addresses.
NotaLa prueba de rendimiento de perftest anterior utiliza una sola NIC para la comunicación. Si su carga de trabajo requiere dos NIC, debe iniciar dos procesos de perftest. Luego, use el parámetro
-dpara especificar una NIC eRDMA distinta para cada proceso y el parámetro-ppara indicar puertos de comunicación diferentes. Para obtener más información, consulte Detalles de perftest.Los resultados de la prueba incluyen el ancho de banda promedio. Una salida similar a la siguiente indica que la comunicación eRDMA es normal.
-
-
Prueba y verificación
Este tema utiliza nccl-tests como ejemplo para demostrar cómo probar y verificar el rendimiento de las instancias GPU con eRDMA habilitado. Para obtener más información sobre nccl-tests, consulte nccl-tests.
-
Ejecute los siguientes comandos para instalar NCCL.
Compile e instale NCCL desde el código fuente:
NotaTambién puede descargar e instalar el paquete desde el sitio web oficial de NVIDIA NCCL.
Este ejemplo instala NCCL en el directorio
/usr/local/nccl. Puede especificar una ruta de instalación diferente según sus necesidades.# build nccl cd /root sudo git clone https://github.com/NVIDIA/nccl.git cd nccl/ sudo make -j src.lib PREFIX=/usr/local/nccl sudo make install PREFIX=/usr/local/nccl -
Ejecute los siguientes comandos para comprobar que NCCL y la biblioteca libnccl.so estén instalados.
# Check for NCCL ls /usr/local/nccl # Check for the libnccl.so library ls /usr/local/nccl/lib -
Ejecute los siguientes comandos para instalar Open MPI y los compiladores necesarios.
sudo wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.3.tar.gz sudo tar -xzf openmpi-4.1.3.tar.gz cd openmpi-4.1.3 sudo ./configure --prefix=/usr/local/openmpi sudo make -j && make install -
Ejecute los siguientes comandos para establecer las variables de entorno.
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:$PATHLos comandos anteriores utilizan las siguientes rutas de ejemplo:
NCCL_HOMEapunta a la ruta de instalación de NCCL (/usr/local/nccl),CUDA_HOMEapunta a la ruta de instalación de CUDA (/usr/local/cuda) yMPI_HOMEapunta a la ruta de instalación de Open MPI (/usr/local/openmpi). Reemplace estas rutas por sus rutas de instalación reales.Una vez que termine de editar el comando, edite el archivo
~/.bashrcen la instancia para configurarPATHyLD_LIBRARY_PATH. Después, ejecute el siguiente comando para que la configuración de las variables de entorno surta efecto.source ~/.bashrc -
Ejecute los siguientes comandos para descargar y compilar el código de prueba.
sudo git clone https://github.com/NVIDIA/nccl-tests cd nccl-tests/ sudo make MPI=1 CUDA_HOME=/usr/local/cuda MPI_HOME=/usr/local/openmpi -
Ejecute los siguientes comandos para configurar el acceso SSH sin contraseña entre las instancias.
Para configurar el acceso SSH sin contraseña, genere una clave pública en host1 y cópiela a host2.
# On host1 ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2} ssh root@${host2} # On host1, run this command to test the connection. A successful login without a password prompt confirms that the setup is complete. -
Ejecute el siguiente comando para probar el rendimiento de all-reduce de NCCL.
# Replace host1 and host2 with the IP addresses of your instances. 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_GIN_TYPE=0 \ -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
Verificación de la configuración de eRDMA
Después de completar la configuración básica de eRDMA, utilice la siguiente lista de comprobación para verificar su entorno y asegurarse de que eRDMA funcione correctamente.
Esta sección aplica a los siguientes tipos de instancias bare metal elásticas GPU compatibles con eRDMA: ebmgn9g, ebmgn9gc, ebmgn9ge, ebmgn8is y ebmgn8v.
|
Categoría |
Elemento |
Método de verificación |
Descripción |
|
Configuración de la interfaz de red |
La instancia tiene dos interfaces de red eRDMA |
Ejecute el comando |
Cuando crea una instancia desde la consola, se configuran dos interfaces de red eRDMA de forma predeterminada. No se requiere ninguna acción adicional. |
|
El estado de la interfaz de red es PORT_ACTIVE |
Ejecute el siguiente comando para comprobar que el estado de todos los puertos sea
|
Si la comprobación falla, ejecute el comando |
|
|
Las dos interfaces de red están conectadas a nodos NUMA distintos |
Ejecute el siguiente comando y compruebe que los valores devueltos sean
|
Si ambos comandos devuelven 0, la interfaz de red secundaria está conectada a un nodo NUMA incorrecto. Para solucionarlo, siga estos pasos:
|
|
|
Las tramas jumbo están habilitadas |
Ejecute el siguiente comando y compruebe que la MTU de las interfaces de red sea 4096:
|
Si la MTU no es 4096, enable jumbo frames y vuelva a ejecutar la comprobación. |
|
|
El algoritmo de control de congestión MPCC está habilitado |
Ejecute los siguientes comandos para comprobar el algoritmo de control de congestión:
|
El controlador eRDMA 1.5.6 y versiones posteriores utilizan el algoritmo MPCC de forma predeterminada. Si MPCC no está habilitado, ejecute los siguientes comandos para habilitarlo manualmente:
|
|
|
No existen conflictos de direcciones IP en las interfaces de red eRDMA |
Ejecute el comando |
Este problema suele presentarse cuando se usa el complemento de red Terway de ACK. Si lo encuentra, consulte Configuración de la lista de permitidos de Terway para conocer las soluciones. |
|
|
NCCL |
Especifique el archivo de topología de NCCL |
Guarde el archivo de topología (l20n.xml) en una ruta local de la instancia, como Antes de iniciar una tarea de NCCL, establezca la siguiente variable de entorno:
|
URL de descarga del archivo de topología:
|
|
GPU |
Deshabilite el ACS de la GPU (PCI Access Control Services) para mejorar el rendimiento de la comunicación P2P |
Ejecute el siguiente comando para comprobar el estado del ACS:
Si se muestra |
Si se muestra
|
Referencias
Configure eRDMA en una instancia de nivel empresarial para obtener un servicio de red RDMA elástico, de latencia ultrabaja y alto throughput, sin modificar su topología de red. Para obtener más información, consulte Enable eRDMA on enterprise-level instances.
Para aplicaciones que requieren transferencias de datos a gran escala y comunicación de red de alto rendimiento en contenedores, puede integrar eRDMA en un entorno de contenedores (docker). Este proceso permite que las aplicaciones en contenedores omitan el kernel del sistema operativo y accedan directamente a los dispositivos eRDMA del host, lo que agiliza la transferencia de datos y hace más eficiente la comunicación. Para obtener más información, consulte Enable eRDMA in a container (Docker).
Para supervisar y diagnosticar eRDMA, consulte Monitor and diagnose eRDMA.