Após anexar uma Elastic RDMA Interface (ERI) a uma instância GPU, as instâncias GPU na mesma VPC usam passthrough de RDMA para acelerar a interconectividade. O eRDMA aprimora o RDMA tradicional ao oferecer transferência de dados mais eficiente, melhorar a comunicação entre instâncias GPU e reduzir o tempo de processamento de tarefas. Este tópico explica como ativar o eRDMA em uma instância GPU.
Limitações
|
Item |
Descrição |
|
Tipo de instância |
A Elastic RDMA Interface é compatível com os seguintes tipos de instância:
|
|
Imagem |
Use uma das seguintes imagens:
|
|
Número de Elastic RDMA Interfaces |
|
|
Limitações de rede |
|
Procedimento
Para usar o eRDMA em uma instância compatível, dois requisitos devem ser atendidos: a pilha de software eRDMA deve estar instalada e uma Elastic Network Interface (ENI) com a Elastic RDMA Interface (ERI) ativada deve estar anexada.
Configurar o eRDMA durante a criação da instância
Acesse a página Custom Launch no console ECS.
-
Crie uma instância GPU compatível com ERI.
Ao criar a instância, observe as configurações a seguir. Para obter informações sobre outros parâmetros, consulte Create an instance by using the wizard.
Instance Type: Selecione um tipo de instância compatível com ERI. Para mais informações, consulte Limits. Este tópico usa ebmgn8is como exemplo.
-
Images: Ao selecionar uma imagem pública, as opções Auto-install GPU Driver e Install eRDMA Software Stack são selecionadas por padrão. Após a criação da instância, o sistema instala automaticamente o driver da GPU, CUDA, cuDNN e a pilha de software eRDMA.
Neste exemplo, o sistema operacional é Alibaba Cloud Linux 3.2104 LTS 64-bit e a versão do driver da GPU é CUDA Version 12.4.1 / Driver Version 550.127.08 / CUDNN Version 9.2.0.82.
-
(Opcional) Jumbo Frames: Se a instância selecionada suportar jumbo frames, ative esse recurso para melhorar o desempenho da comunicação
eRDMA.A ativação de jumbo frames permite definir uma unidade máxima de transmissão (MTU) maior. Ao usar NCCL e o protocolo de baixa latência LL128 para comunicação, a MTU deve ser 8500. Sem os jumbo frames ativados, a MTU deve ser 1400. Uma configuração incorreta de MTU pode causar problemas de consistência de dados.
-
ENIs: Ao criar uma instância GPU e configurar ENIs na página Bandwidths & Security Groups do assistente de configuração, uma NIC primária e uma NIC secundária compatíveis com eRDMA são criadas por padrão. O sistema seleciona automaticamente a opção eRDMA Interface para as NICs primária e secundária.
NotaNão é possível ativar ou desativar a capacidade ERI para uma única ENI enquanto a instância GPU estiver em execução.
As duas NICs com ERI ativado são vinculadas automaticamente a canais diferentes. Não é necessário especificar os canais manualmente.
A NIC primária não pode ser desanexada da instância GPU. Ela é criada e liberada junto com a instância.
-
Acesse a página de detalhes da instância criada e clique em na aba ENIs para visualizar o tipo de NIC da instância.
Se o tipo da NIC primária ou de uma ENI secundária incluir "Elastic RDMA Interface", a ENI tem o ERI ativado.
Configurar o eRDMA para uma instância GPU existente
Faça login no console ECS.
-
Localize a instância desejada, acesse sua página de detalhes e clique em na aba ENIs para verificar se o ERI está ativado.
Caso uma ENI tenha o ERI ativado, a coluna ENI Type exibirá Primary ENI (Elastic RDMA Interface) ou Secondary ENI (Elastic RDMA Interface).
Se o ERI já estiver ativado, pule as etapas seguintes.
Caso o ERI não esteja ativado, siga estas etapas para configurar o eRDMA na NIC primária ou em uma ENI secundária.
-
Configure o eRDMA para a NIC primária ou para uma ENI secundária.
Nota-
Para instance types that support jumbo frames, você pode enable jumbo frames para melhorar o desempenho da comunicação
eRDMA.A ativação de jumbo frames permite definir uma MTU maior. Ao usar NCCL e o protocolo de baixa latência LL128 para comunicação, a MTU deve ser 8500. Sem os jumbo frames ativados, a MTU deve ser 1400. Uma configuração incorreta de MTU pode causar problemas de consistência de dados.
Se você não selecionou a opção eRDMA Interface para a NIC primária ou secundária durante a criação da instância GPU, poderá criar e ativar duas ENIs secundárias com ERI ativado após a criação da instância.
Caso não tenha selecionado a opção eRDMA Interface para uma das duas NICs (primária ou secundária) ao criar a instância GPU, será possível criar e ativar apenas mais uma ENI secundária com ERI ativado após a criação da instância.
-
-
(Opcional) Instale a pilha de software eRDMA na instância.
Se você não selecionou a opção Install eRDMA Software Stack ao escolher a imagem pública, instale a pilha de software eRDMA manualmente ou via script para ativar a capacidade da Elastic RDMA Interface (ERI).
-
Instalação por script
Após a criação da instância GPU, use o script de exemplo abaixo para instalar separadamente a pilha de software eRDMA, o driver da GPU, CUDA e 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 -
Instalação manual
Após criar uma instância GPU, instale manualmente o driver OFED, o driver eRDMA e o driver da GPU e, em seguida, carregue o componente de service
nv_peer_mem. Siga estas etapas:-
Conecte-se à instância GPU.
Para mais informações, consulte Connect to a Linux instance by using Workbench.
-
Instale o driver OFED.
-
Execute o comando a seguir para instalar os pacotes necessários.
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
-
-
Execute o comando a seguir para baixar o arquivo de configuração do pacote 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
-
-
Execute o comando correspondente ao seu SO para instalar o driver 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
Substitua
${VERSION_ID}pela sua versão do Ubuntu, como 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 -
-
Execute o comando a seguir para verificar se o diretório
/usr/src/ofa_kernel/existe.-
Se o diretório existir, prossiga para a próxima etapa.
ls /usr/src/ofa_kernel/`uname -r` -
Caso o diretório não exista, execute o comando a seguir para criar um link simbólico e depois prossiga para a próxima etapa.
sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
-
-
Reinicie a instância.
Após instalar o driver OFED, reinicie a instância para que o novo módulo do kernel entre em vigor. Para mais informações, consulte Restart an instance.
-
-
Instale o driver eRDMA.
-
Baixe e instale o driver eRDMA.
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo bash env_setup.sh --egs -
Execute o comando a seguir para verificar a instalação do driver eRDMA usando a ferramenta eadm:
sudo eadm verUma saída semelhante à seguinte indica uma instalação bem-sucedida.
[root@xxx ~]# sudo eadm ver Query kernel driver version: 0.2.35NotaEste tópico usa a versão 0.2.35 do driver como exemplo. Se o comando retornar um erro "command not found" ou falhar ao executar, reinstale o driver eRDMA.
-
-
Instale o driver da GPU.
Para mais informações, consulte Manually install a Tesla driver (Linux) on a GPU instance.
-
Carregue o componente de service nv_peer_mem.
-
(Recomendado) Driver da GPU 470.xx.xx ou posterior
Para ativar o GPUDirect RDMA, carregue o componente de service nv_peer_mem. Recomendamos o uso do driver da GPU 470.xx.xx ou posterior, pois a NVIDIA inclui esse componente nessas versões. Execute o comando a seguir para carregar o módulo nvidia_peermem.
sudo modprobe nvidia_peermem # You can run lsmod|grep nvidia to check whether nvidia_peermem is loaded.NotaSe a instância for reiniciada, recarregue o módulo nvidia_peermem.
-
Drivers da GPU anteriores a 470.xx.xx
Baixe e instale manualmente o componente de service. O código a seguir mostra como baixar, compilar e instalar o 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
-
-
-
-
Verifique a largura de banda.
-
Conecte-se à instância GPU.
Para mais informações, consulte Connect to a Linux instance by using Workbench.
-
Execute o comando a seguir para verificar se as duas NICs eRDMA estão funcionando conforme o esperado.
sudo ibv_devinfoPor padrão, o script de instalação do driver eRDMA instala a versão mais recente do driver. Se precisar instalar uma versão anterior do driver eRDMA, abra um ticket para obter assistência.
Este tópico usa a versão 0.2.37 ou posterior do driver eRDMA como exemplo. A saída a seguir mostra dois dispositivos eRDMA funcionando corretamente. Um dispositivo eRDMA está funcionando corretamente se o
statede sua porta forPORT_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: EthernetNotaSe o
stateda porta forinvalid state, o dispositivo não está funcionando corretamente. Recomendamos verificar primeiro a configuração da ENI secundária. Por exemplo, execute o comandoifconfigpara confirmar que cada NIC possui a configuração e o endereço IP corretos. -
Execute o comando a seguir para instalar a ferramenta perftest.
sudo yum install perftest -y -
Execute os comandos a seguir para testar se a largura de banda da rede RDMA atende às expectativas de hardware.
-
No servidor, execute o comando a seguir para ouvir solicitações de conexão do cliente.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 -
No cliente, execute o comando a seguir para enviar solicitações de conexão e pacotes de dados.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ipNeste comando,
server_ipé o endereço IP privado da ENI com ERI ativado do servidor. Para encontrar esse endereço IP, consulte View IP addresses.
NotaO benchmark perftest anterior usa uma NIC para comunicação. Se sua carga de trabalho exigir duas NICs para comunicação, inicie dois processos perftest. Em seguida, use o parâmetro
-dpara especificar uma NIC eRDMA para cada processo e o parâmetro-ppara especificar portas de comunicação diferentes. Para mais informações, consulte Detalhes do perftest.Os resultados do teste incluem a largura de banda média. Uma saída semelhante à seguinte indica que a comunicação eRDMA está normal.
-
-
Teste e verificação
Este tópico usa o nccl-tests como exemplo para demonstrar como testar e verificar o desempenho de instâncias GPU com eRDMA ativado. Para mais informações sobre o nccl-tests, consulte nccl-tests.
-
Execute os comandos a seguir para instalar o NCCL.
Compile e instale o NCCL a partir do código-fonte:
NotaVocê também pode baixar e instalar o pacote no site oficial do NVIDIA NCCL.
Este exemplo instala o NCCL no diretório
/usr/local/nccl. Especifique um caminho de instalação diferente conforme suas necessidades.# 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 -
Execute os comandos a seguir para verificar se o NCCL e a biblioteca libnccl.so estão instalados.
# Check for NCCL ls /usr/local/nccl # Check for the libnccl.so library ls /usr/local/nccl/lib -
Execute os comandos a seguir para instalar o Open MPI e os compiladores necessários.
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 -
Execute os comandos a seguir para definir as variáveis de ambiente.
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:$PATHOs comandos acima usam os seguintes caminhos de exemplo:
NCCL_HOMEaponta para o caminho de instalação do NCCL (/usr/local/nccl),CUDA_HOMEaponta para o caminho de instalação do CUDA (/usr/local/cuda) eMPI_HOMEaponta para o caminho de instalação do Open MPI (/usr/local/openmpi). Substitua esses caminhos pelos seus caminhos de instalação reais.Após terminar de editar o comando, edite o arquivo
~/.bashrcna instância para definirPATHeLD_LIBRARY_PATH. Em seguida, execute o comando a seguir para que as configurações das variáveis de ambiente entrem em vigor.source ~/.bashrc -
Execute os comandos a seguir para baixar e compilar o código de teste.
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 -
Execute os comandos a seguir para configurar o acesso SSH sem senha entre as instâncias.
Para configurar o acesso SSH sem senha, gere uma chave pública no host1 e copie-a para o 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. -
Execute o comando a seguir para testar o desempenho all-reduce do 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
Verificação da configuração do eRDMA
Após concluir a configuração básica do eRDMA, use a lista de verificação a seguir para validar seu ambiente e garantir que o eRDMA funcione corretamente.
Esta seção aplica-se aos seguintes tipos de instância elastic bare metal GPU compatíveis com eRDMA: ebmgn9g, ebmgn9gc, ebmgn9ge, ebmgn8is e ebmgn8v.
|
Categoria |
Item |
Método de verificação |
Descrição |
|
Configuração da interface de rede |
A instância possui duas interfaces de rede eRDMA |
Execute o comando |
Ao criar uma instância pelo console, duas interfaces de rede eRDMA são configuradas por padrão. Nenhuma ação adicional é necessária. |
|
O estado da interface de rede é PORT_ACTIVE |
Execute o comando a seguir para verificar se o status de todas as portas é
|
Se a verificação falhar, execute o comando |
|
|
As duas interfaces de rede estão anexadas a nós NUMA diferentes |
Execute o comando a seguir e verifique se os valores retornados são
|
Se ambos os comandos retornarem 0, a interface de rede secundária está anexada a um nó NUMA incorreto. Para corrigir isso, siga estas etapas:
|
|
|
Jumbo frames estão ativados |
Execute o comando a seguir e verifique se a MTU das interfaces de rede é 4096:
|
Se a MTU não for 4096, enable jumbo frames e execute a verificação novamente. |
|
|
O algoritmo de controle de congestionamento MPCC está ativado |
Execute os comandos a seguir para verificar o algoritmo de controle de congestionamento:
|
O driver eRDMA 1.5.6 e posteriores usam o algoritmo MPCC por padrão. Se o MPCC não estiver ativado, execute os comandos a seguir para ativá-lo manualmente:
|
|
|
Não há conflitos de endereço IP nas interfaces de rede eRDMA |
Execute o comando |
Esse problema ocorre frequentemente ao usar o plug-in de rede ACK Terway. Se encontrar esse problema, consulte Configuração da lista de permissões do Terway para soluções. |
|
|
NCCL |
Especificar o arquivo de topologia do NCCL |
Salve o arquivo de topologia (l20n.xml) em um caminho local na instância, como Antes de iniciar uma tarefa NCCL, defina a seguinte variável de ambiente:
|
URLs de download do arquivo de topologia:
|
|
GPU |
Desativar o GPU ACS (PCI Access Control Services) para melhorar o desempenho da comunicação P2P |
Execute o comando a seguir para verificar o status do ACS:
Se |
Se
|
Referências
Configure o eRDMA em uma instância de nível empresarial para obter um service de rede RDMA elástico, de alto throughput e latência ultrabaixa, sem alterar sua topologia de rede. Para mais informações, consulte Enable eRDMA on enterprise-level instances.
Para aplicações que exigem transferências de dados em grande escala e comunicação de rede de alto desempenho em contêineres, integre o eRDMA a um ambiente de contêiner (docker). Esse processo permite que aplicações em contêiner contornem o kernel do SO e acessem diretamente os dispositivos eRDMA do host, possibilitando transferência de dados mais rápida e comunicação mais eficiente. Para mais informações, consulte Enable eRDMA in a container (Docker).
Para monitorar e diagnosticar o eRDMA, consulte Monitor and diagnose eRDMA.