- Remove explicit two-stream DBO switching (dbo_yield_and_switch_*),
use synchronous dispatch/combine (async_with_compute_stream=False).
The ElasticBuffer handles comm internally on its comm_stream.
- Switch from do_expand=True to do_expand=False for cudagraph compat.
do_expand=True requires do_cpu_sync=True (CPU polling loop) which
can't be captured in a cudagraph. do_expand=False with do_cpu_sync=False
is fully capturable.
- Handle worst-case padding from do_cpu_sync=False: use
handle.psum_num_recv_tokens_per_scaleup_rank to get real token count,
zero out padding rows in recv_x, recv_topk_weights, and expert_x_scale.
- Add explicitly_destroy=True to ElasticBuffer creation in all2all.py.
- Add cudagraph capture/replay unit test (test_deep_ep_v2_moe_cudagraph).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Tyler Michael Smith <tlrmchlsmth@gmail.com>