Skip to content

minimal_async_ep: split token exchange launches and waits - #3954

Draft
sanketpurandare wants to merge 5 commits into
gh/sanketpurandare/5/basefrom
gh/sanketpurandare/5/head
Draft

minimal_async_ep: split token exchange launches and waits#3954
sanketpurandare wants to merge 5 commits into
gh/sanketpurandare/5/basefrom
gh/sanketpurandare/5/head

Conversation

@sanketpurandare

@sanketpurandare sanketpurandare commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Stack from ghstack (oldest at bottom):

Summary

Split MinimalAsyncEP dispatch and combine into graph-visible launch and wait
operations. Launches perform metadata preparation and start symmetric-memory
row copies; waits only join the current stream to completion and return aliases
of the pending outputs.

Keepalive inputs describe storage read asynchronously by the communication
stream. Routing metadata consumed by later operations remains ordinary graph
dataflow rather than an artificial wait dependency.

Why

A monolithic custom operator hides the useful scheduling boundary and forces
communication to complete before independent expert work can run. Thin aliasing
waits expose the boundary while remaining compatible with autograd,
functionalization, full Inductor, and CUDA graph wrapping.

Test Plan

  • Trace the registered production APIs with fake tensors and verify launch/wait
    dependency edges.
  • Validate wait aliasing through structured operator schema metadata.
  • Compile wait forward and backward paths with full Inductor.
  • Compare two-rank outputs and gradients with a local reference.
  • Trace the production APIs through the CUDA graph pass.

…aunches and waits"

## Summary

Split MinimalAsyncEP dispatch and combine into graph-visible launch and wait
operations. Launches perform metadata preparation and start symmetric-memory
row copies; waits only join the current stream to completion and return aliases
of the pending outputs.

Keepalive inputs describe storage read asynchronously by the communication
stream. Routing metadata consumed by later operations remains ordinary graph
dataflow rather than an artificial wait dependency.

## Why

A monolithic custom operator hides the useful scheduling boundary and forces
communication to complete before independent expert work can run. Thin aliasing
waits expose the boundary while remaining compatible with autograd,
functionalization, full Inductor, and CUDA graph wrapping.

## Test Plan

- Trace the registered production APIs with fake tensors and verify launch/wait
  dependency edges.
- Validate wait aliasing through structured operator schema metadata.
- Compile wait forward and backward paths with full Inductor.
- Compare two-rank outputs and gradients with a local reference.
- Trace the production APIs through the CUDA graph pass.

[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/8gpu CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant