Bir Elastic RDMA Interface (ERI) öğesini bir GPU örneğine bağladıktan sonra, aynı VPC içindeki GPU örnekleri RDMA passthrough kullanarak bağlantı hızını artırır. eRDMA, daha verimli veri aktarımı sunarak, GPU örnekleri arasındaki iletişim verimliliğini iyileştirerek ve görev işleme süresini azaltarak geleneksel RDMA'nın üzerine çıkar. Bu konuda, bir GPU örneğinde eRDMA'nın nasıl etkinleştirileceği açıklanmaktadır.
Sınırlamalar
|
Öğe |
Açıklama |
|
Örnek türü |
Elastic RDMA arayüzü aşağıdaki örnek türlerinde desteklenir:
|
|
Görüntü |
Aşağıdaki görüntülerden birini kullanın:
|
|
Elastic RDMA arayüzü sayısı |
|
|
Ağ sınırlamaları |
|
Yordam
eRDMA uyumlu bir örnekte eRDMA kullanmak için iki gereksinimin karşılanması gerekir: eRDMA yazılım yığını yüklenmiş olmalıdır ve Elastic RDMA Interface (ERI) etkinleştirilmiş bir elastic ağ arayüzü (ENI) bağlı olmalıdır.
Örnek oluştururken eRDMA'yı yapılandırın
ECS konsolunda Custom Launch sayfasına gidin.
-
ERI'yi destekleyen bir GPU örneği oluşturun.
Örneği oluştururken aşağıdaki ayarlara dikkat edin. Diğer parametreler hakkında bilgi için bkz. Sihirbazı kullanarak bir örnek oluşturun.
Instance Type: ERI uyumlu bir örnek türü seçin. Daha fazla bilgi için bkz. Sınırlamalar. Bu konuda örnek olarak ebmgn8is kullanılmıştır.
-
Images: Bir genel görüntü seçtiğinizde, Auto-install GPU Driver ve Install eRDMA Software Stack seçenekleri varsayılan olarak seçilir. Örnek oluşturulduktan sonra sistem, GPU sürücüsünü, CUDA'yı, cuDNN'yi ve eRDMA yazılım yığınını otomatik olarak yükler.
Bu örnekte işletim sistemi Alibaba Cloud Linux 3.2104 LTS 64-bit ve GPU sürücü sürümü CUDA Version 12.4.1 / Driver Version 550.127.08 / CUDNN Version 9.2.0.82'dir.
-
(İsteğe Bağlı) Jumbo Çerçeveler: Seçilen örnek jumbo çerçeveleri destekliyorsa,
eRDMAiletişim performansını artırmak için bu özelliği etkinleştirebilirsiniz.Jumbo çerçevelerin etkinleştirilmesi, daha büyük bir maksimum aktarım birimi (MTU) ayarlamanıza olanak tanır. İletişim için NCCL ve LL128 düşük gecikme süreli protokolü kullandığınızda MTU 8500 olmalıdır. Jumbo çerçeveler etkinleştirilmezse MTU 1400 olmalıdır. Yanlış bir MTU ayarı veri tutarlılığı sorunlarına neden olabilir.
-
ENIs: Bir GPU örneği oluşturup yapılandırma sihirbazının Bandwidths & Security Groups sayfasında ENI'leri yapılandırdığınızda, varsayılan olarak eRDMA uyumlu bir birincil NIC ve ikincil NIC oluşturulur. Sistem, birincil ve ikincil NIC'ler için eRDMA Interface seçeneğini otomatik olarak seçer.
NotGPU örneği çalışırken tek bir ENI için ERI özelliğini etkinleştiremez veya devre dışı bırakamazsınız.
ERI etkinleştirilmiş iki NIC otomatik olarak farklı kanallara bağlanır. Kanalları manuel olarak belirtmeniz gerekmez.
Birincil NIC, GPU örneğinden ayrılamaz. Örnek ile birlikte oluşturulur ve serbest bırakılır.
-
Oluşturulan örneğin ayrıntılar sayfasına gidin ve örneğin NIC türünü görüntülemek için ENIs sekmesini tıklayın.
Birincil NIC'in veya ikincil bir ENI'nin NIC türü "Elastic RDMA Interface" içeriyorsa, ENI'de ERI etkinleştirilmiştir.
Mevcut bir GPU örneği için eRDMA'yı yapılandırın
ECS console üzerinde oturum açın.
-
Hedef örneği bulun, ayrıntılar sayfasına gidin ve ERI'nin etkin olup olmadığını kontrol etmek için ENIs sekmesini tıklayın.
Bir ENI'de ERI etkinleştirilmişse, ENI Type sütunu Primary ENI (Elastic RDMA Interface) veya Secondary ENI (Elastic RDMA Interface) değerini gösterir.
ERI etkinleştirilmişse aşağıdaki adımları atlayın.
ERI etkinleştirilmemişse, birincil NIC veya ikincil bir ENI için eRDMA'yı yapılandırmak üzere şu adımları izleyin.
-
Birincil NIC veya ikincil bir ENI için eRDMA'yı yapılandırın.
Not-
Jumbo çerçeveleri destekleyen örnek türleri için,
eRDMAiletişim performansını artırmak amacıyla jumbo çerçeveleri etkinleştirebilirsiniz.Jumbo çerçevelerin etkinleştirilmesi daha büyük bir MTU ayarlamanıza olanak tanır. İletişim için NCCL ve LL128 düşük gecikme süreli protokolü kullandığınızda MTU 8500 olmalıdır. Jumbo çerçeveler etkinleştirilmezse MTU 1400 olmalıdır. Yanlış bir MTU ayarı veri tutarlılığı sorunlarına neden olabilir.
GPU örneğini oluştururken birincil NIC veya ikincil NIC için eRDMA Interface seçeneğini seçmediyseniz, örnek oluşturulduktan sonra ERI etkinleştirilmiş iki ikincil ENI oluşturup etkinleştirebilirsiniz.
GPU örneğini oluştururken iki NIC'ten biri (birincil veya ikincil) için eRDMA Interface seçeneğini seçmediyseniz, örnek oluşturulduktan sonra yalnızca bir adet daha ERI etkinleştirilmiş ikincil ENI oluşturup etkinleştirebilirsiniz.
-
-
(İsteğe Bağlı) Örnekte eRDMA yazılım yığınını yükleyin.
Genel görüntüyü seçerken Install eRDMA Software Stack seçeneğini seçmediyseniz, Elastic RDMA Interface (ERI) özelliğini etkinleştirmek için eRDMA yazılım yığınını manuel olarak veya bir komut dosyasıyla yüklemeniz gerekir.
-
Komut dosyası ile yükleme
GPU örneği oluşturulduktan sonra, eRDMA yazılım yığınını, GPU sürücüsünü, CUDA'yı ve cuDNN'yi ayrı ayrı yüklemek için aşağıdaki örnek komut dosyasını kullanabilirsiniz.
#!/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 -
Manuel yükleme
Bir GPU örneği oluşturduktan sonra OFED sürücüsünü, eRDMA sürücüsünü ve GPU sürücüsünü manuel olarak yükleyebilir ve ardından
nv_peer_memhizmet bileşenini yükleyebilirsiniz. Aşağıdaki adımları izleyin:-
GPU örneğine bağlanın.
Daha fazla bilgi için bkz. Workbench kullanarak bir Linux örneğine bağlanın.
-
OFED sürücüsünü yükleyin.
-
Gerekli paketleri yüklemek için aşağıdaki komutu çalıştırın.
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
-
-
OFED paketi yapılandırma dosyasını indirmek için aşağıdaki komutu çalıştırın.
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
-
-
OFED sürücüsünü yüklemek için işletim sisteminize uygun komutu çalıştırın.
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
${VERSION_ID}ifadesini Ubuntu sürümünüzle (örneğin 24.04) değiştirin.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 -
-
/usr/src/ofa_kernel/dizininin var olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın.-
Dizin varsa sonraki adıma geçin.
ls /usr/src/ofa_kernel/`uname -r` -
Dizin yoksa sembolik bir bağlantı oluşturmak için aşağıdaki komutu çalıştırın ve ardından sonraki adıma geçin.
sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
-
-
Örneği yeniden başlatın.
OFED sürücüsünü yükledikten sonra yeni çekirdek modülünün etkili olması için örneği yeniden başlatın. Daha fazla bilgi için bkz. Bir örneği yeniden başlatın.
-
-
eRDMA sürücüsünü yükleyin.
-
eRDMA sürücüsünü indirin ve yükleyin.
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo bash env_setup.sh --egs -
eRDMA sürücü yüklemesini eadm aracıyla doğrulamak için aşağıdaki komutu çalıştırın:
sudo eadm verAşağıdakine benzer bir çıktı, yüklemenin başarılı olduğunu gösterir.
[root@xxx ~]# sudo eadm ver Query kernel driver version: 0.2.35NotBu konuda sürücü sürümü 0.2.35 örnek olarak kullanılmıştır. Komut "command not found" hatası döndürür veya çalışmazsa eRDMA sürücüsünü yeniden yükleyin.
-
-
GPU sürücüsünü yükleyin.
Daha fazla bilgi için bkz. GPU örneğinde Tesla sürücüsünü manuel olarak yükleyin (Linux).
-
nv_peer_mem hizmet bileşenini yükleyin.
-
(Önerilen) GPU sürücüsü 470.xx.xx veya üzeri
GPUDirect RDMA'yı etkinleştirmek için nv_peer_mem hizmet bileşenini yüklemeniz gerekir. NVIDIA bu bileşeni bu sürücü sürümlerine dahil ettiği için GPU sürücüsü 470.xx.xx veya üzerini kullanmanızı öneririz. nvidia_peermem modülünü yüklemek için aşağıdaki komutu çalıştırabilirsiniz.
sudo modprobe nvidia_peermem # You can run lsmod|grep nvidia to check whether nvidia_peermem is loaded.NotÖrnek yeniden başlatılırsa nvidia_peermem modülünü yeniden yüklemeniz gerekir.
-
470.xx.xx öncesi GPU sürücüleri
Hizmet bileşenini manuel olarak indirip yüklemeniz gerekir. Aşağıdaki kod, bileşenin nasıl indirileceğini, derleneceğini ve yükleneceğini gösterir.
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
-
-
-
-
Bant genişliğini doğrulayın.
-
GPU örneğine bağlanın.
Daha fazla bilgi için bkz. Workbench kullanarak bir Linux örneğine bağlanın.
-
İki eRDMA NIC'in beklendiği gibi çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu çalıştırın.
sudo ibv_devinfoVarsayılan olarak eRDMA sürücü yükleme komut dosyası en son sürücü sürümünü yükler. eRDMA sürücüsünün daha eski bir sürümünü yüklemeniz gerekiyorsa yardım almak için destek talebi gönderin.
Bu konuda eRDMA sürücü sürümü 0.2.37 veya üzeri örnek olarak kullanılmıştır. Aşağıdaki çıktı, doğru çalışan iki eRDMA cihazını gösterir. Bir eRDMA cihazının port
statedeğeriPORT_ACTIVEise cihaz doğru çalışıyor demektir.[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: EthernetNotPort
statedeğeriinvalid stateise cihaz doğru çalışmıyordur. Öncelikle ikincil ENI yapılandırmasını kontrol etmenizi öneririz. Örneğin, her NIC'in doğru yapılandırma ve IP adresine sahip olduğunu doğrulamak içinifconfigkomutunu çalıştırın. -
perftest aracını yüklemek için aşağıdaki komutu çalıştırın.
sudo yum install perftest -y -
RDMA ağ bant genişliğinin donanım beklentilerini karşılayıp karşılamadığını test etmek için aşağıdaki komutları çalıştırın.
-
Sunucuda, istemci bağlantı isteklerini dinlemek için aşağıdaki komutu çalıştırın.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 -
İstemcide, bağlantı istekleri ve veri paketleri göndermek için aşağıdaki komutu çalıştırın.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ipBu komutta
server_ipsunucunun ERI etkinleştirilmiş ENI'sinin özel IP adresidir. Bu IP adresini bulmak için bkz. IP adreslerini görüntüleyin.
NotYukarıdaki perftest kıyaslaması iletişim için bir NIC kullanır. İş yükünüz iletişim için iki NIC gerektiriyorsa iki perftest işlemi başlatmanız gerekir. Ardından, her işlem için bir eRDMA NIC belirtmek üzere
-dparametresini ve farklı iletişim bağlantı noktaları belirtmek üzere-pparametresini kullanın. Daha fazla bilgi için bkz. perftest Details.Test sonuçları ortalama bant genişliğini içerir. Aşağıdakine benzer bir çıktı, eRDMA iletişiminin normal olduğunu gösterir.
-
-
Test ve doğrulama
Bu konuda, eRDMA etkinleştirilmiş GPU örneklerinin performansını test etmek ve doğrulamak için nccl-tests örnek olarak kullanılmıştır. nccl-tests hakkında daha fazla bilgi için bkz. nccl-tests.
-
NCCL'yi yüklemek için aşağıdaki komutları çalıştırın.
NCCL'yi kaynak koddan derleyip yükleyin:
NotPaketi resmi NVIDIA NCCL web sitesinden de indirip yükleyebilirsiniz.
Bu örnekte NCCL
/usr/local/nccldizinine yüklenir. Gereksinimlerinize göre farklı bir yükleme yolu belirtebilirsiniz.# 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 -
NCCL ve libnccl.so kitaplığının yüklü olduğunu doğrulamak için aşağıdaki komutları çalıştırın.
# Check for NCCL ls /usr/local/nccl # Check for the libnccl.so library ls /usr/local/nccl/lib -
Open MPI'yi ve gerekli derleyicileri yüklemek için aşağıdaki komutları çalıştırın.
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 -
Ortam değişkenlerini ayarlamak için aşağıdaki komutları çalıştırın.
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:$PATHYukarıdaki komutlar aşağıdaki örnek yolları kullanır:
NCCL_HOMENCCL yükleme yoluna (/usr/local/nccl),CUDA_HOMECUDA yükleme yoluna (/usr/local/cuda) veMPI_HOMEOpen MPI yükleme yoluna (/usr/local/openmpi) işaret eder. Bu yolları gerçek yükleme yollarınızla değiştirin.Komutu düzenlemeyi tamamladıktan sonra, örnekteki
~/.bashrcdosyasını düzenleyerekPATHveLD_LIBRARY_PATHayarlayın. Ardından, ortam değişkeni ayarlarının etkili olması için aşağıdaki komutu çalıştırın.source ~/.bashrc -
Test kodunu indirmek ve derlemek için aşağıdaki komutları çalıştırın.
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 -
Örnekler arasında parolasız SSH erişimi ayarlamak için aşağıdaki komutları çalıştırın.
Parolasız SSH erişimi ayarlamak için host1'de bir genel anahtar oluşturun ve bunu host2'ye kopyalayın.
# 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. -
NCCL all-reduce performansını test etmek için aşağıdaki komutu çalıştırın.
# 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
eRDMA yapılandırma doğrulaması
Temel eRDMA yapılandırmasını tamamladıktan sonra ortamınızı doğrulamak ve eRDMA'nın doğru çalıştığından emin olmak için aşağıdaki kontrol listesini kullanın.
Bu bölüm aşağıdaki eRDMA uyumlu GPU elastik bare metal örnek türleri için geçerlidir: ebmgn9g, ebmgn9gc, ebmgn9ge, ebmgn8is ve ebmgn8v.
|
Kategori |
Öğe |
Doğrulama yöntemi |
Açıklama |
|
Ağ arayüzü yapılandırması |
Örnekte iki eRDMA ağ arayüzü bulunur |
|
Konsoldan bir örnek oluşturduğunuzda varsayılan olarak iki eRDMA ağ arayüzü yapılandırılır. Ek bir işlem gerekmez. |
|
Ağ arayüzü durumu PORT_ACTIVE durumundadır |
Tüm bağlantı noktalarının durumunun
|
Kontrol başarısız olursa eRDMA ağ arayüzüne karşılık gelen Ethernet cihazının UP durumunda olduğunu onaylamak için |
|
|
İki ağ arayüzü farklı NUMA düğümlerine bağlıdır |
Aşağıdaki komutu çalıştırın ve dönen değerlerin sırasıyla
|
Her iki komut da 0 döndürürse ikincil ağ arayüzü yanlış bir NUMA düğümüne bağlıdır. Bunu düzeltmek için şu adımları izleyin:
|
|
|
Jumbo çerçeveler etkinleştirilmiştir |
Ağ arayüzlerinin MTU değerinin 4096 olduğunu doğrulamak için aşağıdaki komutu çalıştırın:
|
MTU 4096 değilse jumbo çerçeveleri etkinleştirin ve ardından kontrolü tekrar çalıştırın. |
|
|
MPCC tıkanıklık kontrol algoritması etkinleştirilmiştir |
Tıkanıklık kontrol algoritmasını kontrol etmek için aşağıdaki komutları çalıştırın:
|
eRDMA sürücüsü 1.5.6 ve sonraki sürümler varsayılan olarak MPCC algoritmasını kullanır. MPCC etkinleştirilmemişse bunu manuel olarak etkinleştirmek için aşağıdaki komutları çalıştırın:
|
|
|
eRDMA ağ arayüzleri için IP adresi çakışması yoktur |
Her eRDMA ağ arayüzünün benzersiz bir IP adresine sahip olduğunu doğrulamak için |
Bu sorun genellikle ACK Terway ağ eklentisini kullandığınızda ortaya çıkar. Bu sorunla karşılaşırsanız çözüm için bkz. Terway beyaz liste yapılandırması. |
|
|
NCCL |
NCCL topoloji dosyasını belirtin |
Topoloji dosyasını (l20n.xml) örnekteki yerel bir yola kaydedin, örneğin Bir NCCL görevini başlatmadan önce aşağıdaki ortam değişkenini ayarlayın:
|
Topoloji dosyası indirme URL'leri:
|
|
GPU |
P2P iletişim performansını artırmak için GPU ACS'yi (PCI Access Control Services) devre dışı bırakın |
ACS durumunu kontrol etmek için aşağıdaki komutu çalıştırın:
|
|
Referanslar
Ağ topolojinizi değiştirmeden ultra düşük gecikme süresi, yüksek aktarım hızı ve esnek bir RDMA ağ hizmeti için kurumsal düzeyde bir örnekte eRDMA'yı yapılandırın. Daha fazla bilgi için bkz. Kurumsal düzeyde örneklerde eRDMA'yı etkinleştirin.
Konteynerlerde büyük ölçekli veri aktarımları ve yüksek performanslı ağ iletişimi gerektiren uygulamalar için eRDMA'yı bir konteyner (Docker) ortamına entegre edebilirsiniz. Bu süreç, konteynerleştirilmiş uygulamaların işletim sistemi çekirdeğini atlayarak doğrudan ana bilgisayarın eRDMA cihazlarına erişmesine olanak tanır ve daha hızlı veri aktarımı ile daha verimli iletişim sağlar. Daha fazla bilgi için bkz. Bir konteynerde (Docker) eRDMA'yı etkinleştirin.
eRDMA'yı izlemek ve teşhis etmek için bkz. eRDMA'yı izleyin ve teşhis edin.