Open HeGaoYuan opened 11 months ago
do you have any updates on this issue and have you fixed it?
how do you resolved the question? I met the same question as yours.
Using bonded devices is not recommended with NCCL. NCCL can most efficiently drive both cards if they are not bonded and presented individually to it.
Using bonded devices is not recommended with NCCL. NCCL can most efficiently drive both cards if they are not bonded and presented individually to it.
Hi @AddyLaddy , can you explain more? Why rdma perf on bonded devices is perfect while NCCL can only achieve half of the bandwidth of which ib_write_bw achieves?
Hi, @AddyLaddy . I have read the nccl source code (after commit 2.20.3), which add support for port fusion in NET/IB. So i'm confused Why does the bond port not support well, but the two separate ports support well? And the commit's message which support the fusion port,doesn't it mean support for bond ports?
NCCL uses advanced PCI-E topology detection to determine which NICs are close to each GPU and then will drive all available NICs in parallel to achieve the peak BW of that system. Bonding may hide away the real physical location of the NICs and also probably doesn't report the aggerate speed of the 2 NICs to NCCL so it can't determine how much resource should be dedicated to driving that bonded NIC. I believe Port Fusion will be the preferred method going forward.
You mean that the bond port will be parsed as a single port by nccl, and its two member ports cannot be identified, so nccl cannot allocate resources well for the two member ports, right? And I still don't understand completely, does fusion port refer to bond nic? If so, the current nccl version supports the use of fusion nic. then doesn't the current nccl version already support bond? Looking forward to your reply and explanation.
NCCL uses advanced PCI-E topology detection to determine which NICs are close to each GPU and then will drive all available NICs in parallel to achieve the peak BW of that system. Bonding may hide away the real physical location of the NICs and also probably doesn't report the aggerate speed of the 2 NICs to NCCL so it can't determine how much resource should be dedicated to driving that bonded NIC. I believe Port Fusion will be the preferred method going forward.
NCCL uses advanced PCI-E topology detection to determine which NICs are close to each GPU and then will drive all available NICs in parallel to achieve the peak BW of that system. Bonding may hide away the real physical location of the NICs and also probably doesn't report the aggerate speed of the 2 NICs to NCCL so it can't determine how much resource should be dedicated to driving that bonded NIC. I believe Port Fusion will be the preferred method going forward.
How can I configure the bond mode so that nccl can maximize its performance?
I have a bond RDMA device with two origin device, each bandwidth is 100Gb/s, the ib_write_bw can reach the 185Gb/s bandwidth, but the nccl-tests just can reach 95Gb/s, and our monitor shows only one of origin device has traffic. Is it expected?
Following is all my environment information. Please feel free to ask me any other informations.
Looking forward to your reply. Thanks!
the ib_write_bw result is following
the nccl-tests result is following (the highest busbw result in history is 11.xx GB/s)
the mlx5_bond_1 is a bond RDMA network device with two device/network_interface.
the cat /proc/net/bonding/bondpcie1 (corresponding to mlx5_bond_1) result shows the bond mode is 802.3ad, the Transmit Hash Policy: layer3+4(1), each network_interface's bandwidth is 100Gb/s.
the ibstatus result of mlx5_bond_1 shows rate is 100Gb/sec (4X EDR)
the nccl-test is 2.10.3, the nccl version is 2.14.3
the device is ConnectX-6 Dx, the ofed_driver is MLNX_OFED_LINUX-5.8-3.0.7.0-rhel7.9-x86_64.iso, the linux kernel is 3.10.0