[GH-ISSUE #3] NCCL baseline performance #2

Closed
opened 2026-10-26 09:52:05 +00:00 by bsakaguchi · 4 comments
Owner

Originally created by @YangZhou1997 on GitHub (Feb 25, 2025).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/3

Hi DeepEP maintainers,

Really excited project! I wonder how does the in-stock NCCL would perform under the same testbed you have. Releasing this number would help the community understand the performance gain you achieved.

For example, in my local 2 DGX-H100 nodes with 400G NIC, I can easily achieve 46 GBps busbw with 30 microseconds small message latency. This is measured using standard nccl-tests alltoall with NVLink disabled to stress test the network. My testbed has both CC and adaptive routing enabled.

Image

However, I do not have more nodes than two, thus cannot measure the NCCL baseline performance beyond that. So I wonder how would NCCL perform. My guess is the low-latency mode might cut the time of CPU issuing RDMA verbs like 2-4 microseconds, as it lets the GPU issue directly; but the overall achieved bandwidth would be pretty much the same as in-stock NCCL, given the network won't have congestion due to adaptive routing.

Best,
Yang

Originally created by @YangZhou1997 on GitHub (Feb 25, 2025). Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/3 Hi DeepEP maintainers, Really excited project! I wonder how does the in-stock NCCL would perform under the same testbed you have. Releasing this number would help the community understand the performance gain you achieved. For example, in my local 2 DGX-H100 nodes with 400G NIC, I can easily achieve 46 GBps busbw with 30 microseconds small message latency. This is measured using standard nccl-tests alltoall with NVLink disabled to stress test the network. My testbed has both CC and adaptive routing enabled. <img width="1548" alt="Image" src="https://github.com/user-attachments/assets/c3d2528c-791b-46cb-b28d-3e65fce21d0a" /> However, I do not have more nodes than two, thus cannot measure the NCCL baseline performance beyond that. So I wonder how would NCCL perform. My guess is the low-latency mode might cut the time of CPU issuing RDMA verbs like 2-4 microseconds, as it lets the GPU issue directly; but the overall achieved bandwidth would be pretty much the same as in-stock NCCL, given the network won't have congestion due to adaptive routing. Best, Yang
Author
Owner

@sphish commented on GitHub (Feb 25, 2025):

The dispatch and combine operations in EP are more sophisticated than classical all-to-all scenarios. Each token needs to be routed to different GPU ranks based on topk_idx, involving complex control and layout logic. Our kernel has fused these operations together for optimal performance. Furthermore, EP's single message sizes are significantly smaller, and traffic patterns can be asymmetric. Therefore, we think that NCCL's all_to_all_test results cannot be directly compared to our implementation.

We welcome contributions from the community if anyone would like to develop an EP communication benchmark using NCCL and contribute it to our repository.

<!-- gh-comment-id:2680393203 --> @sphish commented on GitHub (Feb 25, 2025): The dispatch and combine operations in EP are more sophisticated than classical all-to-all scenarios. Each token needs to be routed to different GPU ranks based on topk_idx, involving complex control and layout logic. Our kernel has fused these operations together for optimal performance. Furthermore, EP's single message sizes are significantly smaller, and traffic patterns can be asymmetric. Therefore, we think that NCCL's all_to_all_test results cannot be directly compared to our implementation. We welcome contributions from the community if anyone would like to develop an EP communication benchmark using NCCL and contribute it to our repository.
Author
Owner

@youkaichao commented on GitHub (Feb 25, 2025):

NCCL is quite inflexible in the expert-parallel case, because the number of tokens routed to each expert is dynamic. However, NCCL can only communicate tensors with known sizes, see the api https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/api/p2p.html for example.

If you want to use NCCL, you need at least 2 communication passes:

  • one pass to aggregate metadata, i.e. number of tokens received by each expert
  • prepare buffers with corresponding size, and then launch the communication to send/recv tensors.

NOTE: technically we can use NCCL send/recv to achieve all-to-all, however, if the sizes of all-to-all are dynamic, they will not be compatible with cudagraph.

<!-- gh-comment-id:2680405442 --> @youkaichao commented on GitHub (Feb 25, 2025): NCCL is quite inflexible in the expert-parallel case, because the number of tokens routed to each expert is dynamic. However, NCCL can only communicate tensors with known sizes, see the api https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/api/p2p.html for example. If you want to use NCCL, you need at least 2 communication passes: - one pass to aggregate metadata, i.e. number of tokens received by each expert - prepare buffers with corresponding size, and then launch the communication to send/recv tensors. NOTE: technically we can use NCCL send/recv to achieve all-to-all, however, if the sizes of all-to-all are dynamic, they will not be compatible with cudagraph.
Author
Owner

@demonatic commented on GitHub (Mar 10, 2025):

@youkaichao @sphish I wonder can latency of "nccl 2 communication passes" tested using nccl-test be comparable to "Dispatch avg_t" in test_low_latency.py ?

<!-- gh-comment-id:2711417929 --> @demonatic commented on GitHub (Mar 10, 2025): @youkaichao @sphish I wonder can latency of "nccl 2 communication passes" tested using nccl-test be comparable to "Dispatch avg_t" in test_low_latency.py ?
Author
Owner

@alokprasad commented on GitHub (Oct 23, 2025):

i think it will be good to have a benchmark with recent NCCL they Recently added alltoall and with symmetrical memory support
https://docs.nvidia.com/deeplearning/nccl/release-notes/rel_2-28-3.html#rel_2-28-3

<!-- gh-comment-id:3437358937 --> @alokprasad commented on GitHub (Oct 23, 2025): i think it will be good to have a benchmark with recent NCCL they Recently added alltoall and with symmetrical memory support https://docs.nvidia.com/deeplearning/nccl/release-notes/rel_2-28-3.html#rel_2-28-3
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/DeepEP#2
No description provided.