mirror of
https://github.com/deepseek-ai/DeepEP.git
synced 2026-11-05 00:47:32 +00:00
[GH-ISSUE #668] Question: Why did DeepEP v2 drop the double-buffer design in favor of explicit pre/post-sync barriers? #396
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepEP#396
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @mkbk-with-circle on GitHub (Jun 19, 2026).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/668
Hi,
I'm comparing DeepEP v1 (legacy) and v2, and noticed a major change in the synchronization and buffering strategy.
In v1, the
low_latencypath avoided thenotifypre-sync kernels by using a double-buffer (ping-pong) design combined with in-kernel atomic/flag polling over NVLink to overlap communication and computation.However, in v2, it seems this double-buffer design is dropped, and the implementation goes back to using explicit pre-sync and post-sync barriers.
Could you share the design trade-offs behind this change? Specifically:
mbarrieror cluster-level sync) to make the barrier overhead negligible?Thanks!
@hiSandog commented on GitHub (Jul 2, 2026):
This is a good design question because the v1 double-buffer path and the v2 explicit barrier path optimize different failure modes. It would help if the answer separated correctness constraints from performance trade-offs: whether v2 dropped double-buffering because of resource pressure, harder deadlock/debuggability, weaker portability across RDMA/NVLink modes, or because overlap moved to a different layer. A short note in the docs would be useful for users comparing v1 low-latency behavior with v2.