Setelah Anda menyambungkan Elastic RDMA Interface (ERI) ke instans GPU, instans GPU dalam VPC yang sama menggunakan RDMA passthrough untuk mempercepat konektivitas antar-instans. eRDMA meningkatkan RDMA tradisional dengan memberikan transfer data yang lebih efisien, meningkatkan efisiensi komunikasi antar-instans GPU, dan mengurangi waktu pemrosesan tugas. Topik ini menjelaskan cara mengaktifkan eRDMA pada instans GPU.
Batasan
|
Item |
Description |
|
Instance type |
Antarmuka RDMA elastis didukung pada tipe instans berikut:
|
|
Image |
Gunakan salah satu gambar berikut:
|
|
Number of elastic RDMA interfaces |
|
|
Network limitations |
|
Prosedur
Untuk menggunakan eRDMA pada instans yang mendukung eRDMA, dua persyaratan harus dipenuhi: tumpukan perangkat lunak eRDMA harus diinstal dan antarmuka jaringan elastis (ENI) dengan Elastic RDMA Interface (ERI) yang diaktifkan harus disambungkan.
Konfigurasikan eRDMA saat pembuatan instans
-
Buka halaman Custom Launch di Konsol ECS.
-
Buat instans GPU yang mendukung ERI.
Saat membuat instans, perhatikan pengaturan berikut. Untuk informasi tentang parameter lainnya, lihat Buat instans menggunakan wizard.
-
Instance Type: Pilih tipe instans yang mendukung ERI. Untuk informasi selengkapnya, lihat Batasan. Topik ini menggunakan ebmgn8is sebagai contoh.
-
Images: Saat memilih gambar publik, opsi Auto-install GPU Driver dan Install eRDMA Software Stack dipilih secara default. Setelah instans dibuat, sistem secara otomatis menginstal driver GPU, CUDA, cuDNN, dan tumpukan perangkat lunak eRDMA.
Dalam contoh ini, sistem operasi adalah Alibaba Cloud Linux 3.2104 LTS 64-bit, dan versi driver GPU adalah CUDA Version 12.4.1 / Driver Version 550.127.08 / CUDNN Version 9.2.0.82.
-
(Opsional) Jumbo Frames: Jika instans yang dipilih mendukung jumbo frames, Anda dapat mengaktifkan fitur ini untuk meningkatkan kinerja komunikasi
eRDMA.Mengaktifkan jumbo frames memungkinkan Anda mengatur unit transmisi maksimum (MTU) yang lebih besar. Saat menggunakan NCCL dan protokol latensi rendah LL128 untuk komunikasi, MTU harus 8500. Jika jumbo frames tidak diaktifkan, MTU sebaiknya 1400. Pengaturan MTU yang salah dapat menyebabkan masalah konsistensi data.
-
ENIs: Saat membuat instans GPU dan mengonfigurasi ENI pada halaman Bandwidths & Security Groups wizard konfigurasi, NIC utama dan NIC sekunder yang mendukung eRDMA dibuat secara default. Sistem secara otomatis memilih opsi eRDMA Interface untuk NIC utama dan NIC sekunder.
Catatan-
Anda tidak dapat mengaktifkan atau menonaktifkan kemampuan ERI untuk satu ENI saja saat instans GPU sedang berjalan.
-
Kedua NIC yang diaktifkan ERI secara otomatis diikat ke saluran yang berbeda. Anda tidak perlu menentukan saluran secara manual.
-
NIC utama tidak dapat dilepas dari instans GPU. NIC ini dibuat dan dilepas bersamaan dengan instans.
-
-
-
Buka halaman detail instans yang telah dibuat dan klik tab ENIs untuk melihat tipe NIC instans tersebut.
Jika tipe NIC NIC utama atau ENI sekunder mencantumkan "Elastic RDMA Interface", berarti ENI tersebut telah diaktifkan ERI.
Konfigurasikan eRDMA untuk instans GPU yang sudah ada
-
Login ke Konsol ECS.
-
Temukan instans target, buka halaman detailnya, dan klik tab ENIs untuk memeriksa apakah ERI telah diaktifkan.
Jika ENI diaktifkan ERI, kolom ENI Type akan menampilkan Primary ENI (Elastic RDMA Interface) atau Secondary ENI (Elastic RDMA Interface).
-
Jika ERI sudah diaktifkan, lewati langkah-langkah berikutnya.
-
Jika ERI belum diaktifkan, ikuti langkah-langkah berikut untuk mengonfigurasi eRDMA untuk NIC utama atau ENI sekunder.
-
-
Konfigurasikan eRDMA untuk NIC utama atau ENI sekunder.
Catatan-
Untuk tipe instans yang mendukung jumbo frames, Anda dapat mengaktifkan jumbo frames untuk meningkatkan kinerja komunikasi
eRDMA.Mengaktifkan jumbo frames memungkinkan Anda mengatur MTU yang lebih besar. Saat menggunakan NCCL dan protokol latensi rendah LL128 untuk komunikasi, MTU harus 8500. Jika jumbo frames tidak diaktifkan, MTU sebaiknya 1400. Pengaturan MTU yang salah dapat menyebabkan masalah konsistensi data.
-
Jika Anda tidak memilih opsi eRDMA Interface baik untuk NIC utama maupun NIC sekunder saat membuat instans GPU, Anda dapat membuat dan mengaktifkan dua ENI sekunder yang diaktifkan ERI setelah instans dibuat.
-
Jika Anda tidak memilih opsi eRDMA Interface untuk salah satu dari dua NIC (utama atau sekunder) saat membuat instans GPU, Anda hanya dapat membuat dan mengaktifkan satu ENI sekunder tambahan yang diaktifkan ERI setelah instans dibuat.
-
-
(Opsional) Instal tumpukan perangkat lunak eRDMA di dalam instans.
Jika Anda tidak memilih opsi Install eRDMA Software Stack saat memilih gambar publik, Anda harus menginstal tumpukan perangkat lunak eRDMA secara manual atau dengan skrip untuk mengaktifkan kemampuan Elastic RDMA Interface (ERI).
-
Instalasi skrip
Setelah instans GPU dibuat, Anda dapat menggunakan skrip contoh berikut untuk menginstal tumpukan perangkat lunak eRDMA, driver GPU, CUDA, dan cuDNN secara terpisah.
#!/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 -
Instalasi manual
Setelah membuat instans GPU, Anda dapat menginstal driver OFED, driver eRDMA, dan driver GPU secara manual, lalu memuat komponen layanan
nv_peer_mem. Ikuti langkah-langkah berikut:-
Hubungkan ke instans GPU.
Untuk informasi selengkapnya, lihat Hubungkan ke instans Linux menggunakan Workbench.
-
Instal driver OFED.
-
Jalankan perintah berikut untuk menginstal paket yang diperlukan.
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
-
-
Jalankan perintah berikut untuk mengunduh file konfigurasi paket 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
-
-
Jalankan perintah untuk OS Anda untuk menginstal 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
Ganti
${VERSION_ID}dengan versi Ubuntu Anda, misalnya 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 -
-
Jalankan perintah berikut untuk memeriksa apakah direktori
/usr/src/ofa_kernel/`uname -r`ada.-
Jika direktori ada, lanjutkan ke langkah berikutnya.
ls /usr/src/ofa_kernel/`uname -r` -
Jika direktori tidak ada, jalankan perintah berikut untuk membuat tautan simbolik, lalu lanjutkan ke langkah berikutnya.
sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
-
-
Restart instans.
Setelah menginstal driver OFED, restart instans agar modul kernel baru berlaku. Untuk informasi selengkapnya, lihat Restart instans.
-
-
Instal driver eRDMA.
-
Unduh dan instal driver eRDMA.
sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo bash env_setup.sh --egs -
Jalankan perintah berikut untuk memverifikasi instalasi driver eRDMA menggunakan alat eadm:
sudo eadm verOutput yang mirip dengan berikut menunjukkan instalasi berhasil.
[root@xxx ~]# sudo eadm ver Query kernel driver version: 0.2.35CatatanTopik ini menggunakan versi driver 0.2.35 sebagai contoh. Jika perintah mengembalikan error "command not found" atau gagal dijalankan, instal ulang driver eRDMA.
-
-
Instal driver GPU.
Untuk informasi selengkapnya, lihat Instal driver Tesla secara manual (Linux) pada instans GPU.
-
Muat komponen layanan nv_peer_mem.
-
(Direkomendasikan) Driver GPU 470.xx.xx atau yang lebih baru
Untuk mengaktifkan GPUDirect RDMA, Anda harus memuat komponen layanan nv_peer_mem. Kami merekomendasikan menggunakan driver GPU 470.xx.xx atau yang lebih baru karena NVIDIA menyertakan komponen ini dalam versi driver tersebut. Anda dapat menjalankan perintah berikut untuk memuat modul nvidia_peermem.
sudo modprobe nvidia_peermem # Anda dapat menjalankan lsmod|grep nvidia untuk memeriksa apakah nvidia_peermem telah dimuat.CatatanJika instans direstart, Anda harus memuat ulang modul nvidia_peermem.
-
Driver GPU sebelum versi 470.xx.xx
Anda harus mengunduh dan menginstal komponen layanan secara manual. Kode berikut menunjukkan cara mengunduh, mengompilasi, dan menginstal komponen tersebut.
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 # Anda dapat menjalankan lsmod|grep nv_peer_mem untuk memeriksa hasilnya. sudo service nv_peer_mem start
-
-
-
-
Verifikasi bandwidth.
-
Hubungkan ke instans GPU.
Untuk informasi selengkapnya, lihat Hubungkan ke instans Linux menggunakan Workbench.
-
Jalankan perintah berikut untuk memeriksa apakah dua NIC eRDMA berfungsi sebagaimana mestinya.
sudo ibv_devinfoSecara default, skrip instalasi driver eRDMA menginstal versi driver terbaru. Jika Anda perlu menginstal versi driver eRDMA yang lebih lama, kirim tiket untuk bantuan.
Topik ini menggunakan versi driver eRDMA 0.2.37 atau yang lebih baru sebagai contoh. Output berikut menunjukkan dua perangkat eRDMA berfungsi dengan benar. Perangkat eRDMA berfungsi dengan benar jika
stateport-nya adalahPORT_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: EthernetCatatanJika
stateport adalahinvalid state, perangkat tidak berfungsi dengan benar. Kami merekomendasikan Anda memeriksa konfigurasi ENI sekunder terlebih dahulu. Misalnya, jalankan perintahifconfiguntuk memverifikasi bahwa setiap NIC memiliki konfigurasi dan alamat IP yang benar. -
Jalankan perintah berikut untuk menginstal alat perftest.
sudo yum install perftest -y -
Jalankan perintah berikut untuk menguji apakah bandwidth jaringan RDMA sesuai dengan ekspektasi perangkat keras.
-
Pada server, jalankan perintah berikut untuk mendengarkan permintaan koneksi dari klien.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 -
Pada klien, jalankan perintah berikut untuk mengirim permintaan koneksi dan paket data.
sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ipDalam perintah ini,
server_ipadalah alamat IP pribadi ENI server yang diaktifkan ERI. Untuk menemukan alamat IP ini, lihat Lihat alamat IP.
CatatanTolok ukur perftest di atas menggunakan satu NIC untuk komunikasi. Jika beban kerja Anda memerlukan dua NIC untuk komunikasi, Anda harus menjalankan dua proses perftest. Kemudian, gunakan parameter
-duntuk menentukan NIC eRDMA untuk setiap proses dan parameter-puntuk menentukan port komunikasi yang berbeda. Untuk informasi selengkapnya, lihat Detail perftest.Hasil pengujian mencakup bandwidth rata-rata. Output yang mirip dengan berikut menunjukkan komunikasi eRDMA berjalan normal.
-
-
Pengujian dan verifikasi
Topik ini menggunakan nccl-tests sebagai contoh untuk menunjukkan cara menguji dan memverifikasi kinerja instans GPU yang diaktifkan eRDMA. Untuk informasi selengkapnya tentang nccl-tests, lihat nccl-tests.
-
Jalankan perintah berikut untuk menginstal NCCL.
Kompilasi dan instal NCCL dari kode sumber:
CatatanAnda juga dapat mengunduh dan menginstal paket dari situs web resmi NVIDIA NCCL.
Contoh ini menginstal NCCL ke direktori
/usr/local/nccl. Anda dapat menentukan jalur instalasi berbeda sesuai kebutuhan.# 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 -
Jalankan perintah berikut untuk memverifikasi bahwa NCCL dan pustaka libnccl.so telah diinstal.
# Check for NCCL ls /usr/local/nccl # Check for the libnccl.so library ls /usr/local/nccl/lib -
Jalankan perintah berikut untuk menginstal Open MPI dan kompilator yang diperlukan.
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 -
Jalankan perintah berikut untuk mengatur variabel lingkungan.
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:$PATHPerintah di atas menggunakan jalur contoh berikut:
NCCL_HOMEmengarah ke jalur instalasi NCCL (/usr/local/nccl),CUDA_HOMEmengarah ke jalur instalasi CUDA (/usr/local/cuda), danMPI_HOMEmengarah ke jalur instalasi Open MPI (/usr/local/openmpi). Ganti jalur-jalur ini dengan jalur instalasi aktual Anda.Setelah selesai mengedit perintah, edit file
~/.bashrcpada instans untuk mengaturPATHdanLD_LIBRARY_PATH. Kemudian, jalankan perintah berikut agar pengaturan variabel lingkungan berlaku.source ~/.bashrc -
Jalankan perintah berikut untuk mengunduh dan mengompilasi kode uji.
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 -
Jalankan perintah berikut untuk mengatur akses SSH tanpa password antar-instans.
Untuk mengatur akses SSH tanpa password, buat kunci publik pada host1 dan salin ke 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. -
Jalankan perintah berikut untuk menguji kinerja all-reduce 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
Verifikasi konfigurasi eRDMA
Setelah menyelesaikan konfigurasi dasar eRDMA, gunakan daftar periksa berikut untuk memverifikasi lingkungan Anda dan memastikan eRDMA berfungsi dengan benar.
Bagian ini berlaku untuk tipe instans bare metal elastis GPU berikut yang mendukung eRDMA: ebmgn9g, ebmgn9gc, ebmgn9ge, ebmgn8is, dan ebmgn8v.
|
Kategori |
Item |
Metode verifikasi |
Deskripsi |
|
Konfigurasi antarmuka jaringan |
Instans memiliki dua antarmuka jaringan eRDMA |
Jalankan perintah |
Saat membuat instans dari konsol, dua antarmuka jaringan eRDMA dikonfigurasi secara default. Tidak diperlukan tindakan tambahan. |
|
Status antarmuka jaringan adalah PORT_ACTIVE |
Jalankan perintah berikut dan verifikasi bahwa status semua port adalah
|
Jika pemeriksaan gagal, jalankan perintah |
|
|
Kedua antarmuka jaringan dilampirkan ke node NUMA yang berbeda |
Jalankan perintah berikut dan verifikasi bahwa nilai kembaliannya masing-masing adalah
|
Jika kedua perintah mengembalikan 0, berarti antarmuka jaringan sekunder dilampirkan ke node NUMA yang salah. Untuk memperbaikinya, ikuti langkah-langkah berikut:
|
|
|
Jumbo frames diaktifkan |
Jalankan perintah berikut dan verifikasi bahwa MTU antarmuka jaringan adalah 4096:
|
Jika MTU bukan 4096, aktifkan jumbo frames lalu jalankan pemeriksaan lagi. |
|
|
Algoritma pengendalian kemacetan MPCC diaktifkan |
Jalankan perintah berikut untuk memeriksa algoritma pengendalian kemacetan:
|
Driver eRDMA 1.5.6 dan yang lebih baru menggunakan algoritma MPCC secara default. Jika MPCC tidak diaktifkan, jalankan perintah berikut untuk mengaktifkannya secara manual:
|
|
|
Tidak ada konflik alamat IP untuk antarmuka jaringan eRDMA |
Jalankan perintah |
Masalah ini sering terjadi saat Anda menggunakan plug-in jaringan ACK Terway. Jika mengalami masalah ini, lihat konfigurasi daftar putih Terway untuk solusi. |
|
|
NCCL |
Tentukan file topologi NCCL |
Simpan file topologi (l20n.xml) ke jalur lokal pada instans, misalnya Sebelum memulai tugas NCCL, atur variabel lingkungan berikut:
|
URL unduhan file topologi:
|
|
GPU |
Nonaktifkan ACS GPU (PCI Access Control Services) untuk meningkatkan kinerja komunikasi P2P |
Jalankan perintah berikut untuk memeriksa status ACS:
Jika |
Jika
|
Referensi
-
Konfigurasikan eRDMA pada instans tingkat enterprise untuk layanan jaringan RDMA elastis dengan latensi ultra-rendah, throughput tinggi, dan tanpa mengubah topologi jaringan Anda. Untuk informasi selengkapnya, lihat Aktifkan eRDMA pada instans tingkat enterprise.
-
Untuk aplikasi yang memerlukan transfer data skala besar dan komunikasi jaringan berkinerja tinggi dalam kontainer, Anda dapat mengintegrasikan eRDMA ke dalam lingkungan kontainer (Docker). Proses ini memungkinkan aplikasi yang dikontainerisasi melewati kernel OS dan langsung mengakses perangkat eRDMA host, sehingga memungkinkan transfer data lebih cepat dan komunikasi lebih efisien. Untuk informasi selengkapnya, lihat Aktifkan eRDMA dalam kontainer (Docker).
-
Untuk memantau dan mendiagnosis eRDMA, lihat Pantau dan diagnosa eRDMA.