Skip to content

Windows HIP, 2× R9700: --peer-device hangs to driver timeout. Launch batching reproduced in a small probe #3767

Closed as not planned

Description

@wmmunn

Hi, a follow-up on the --peer-device hang on Windows (2x Radeon AI PRO R9700, driver 32.0.31041.5005 for ROCm 10.1; it also hung on PRO 26.Q3, ending in a driver timeout with 17 LiveKernelEvent records).

I think I've reproduced the mechanism in a 190-line HIP probe. Two single-thread kernels, one per card, ping-pong a flag through one hipHostMalloc(Coherent | Mapped | Portable) buffer (same address on the CPU and both cards), using system-scope release/acquire, with every wait bounded by time so it can't hang the driver.

  • With a timing-free event recorded right after each launch (hipEventCreateWithFlags(hipEventDisableTiming) + hipEventRecord on the same stream), 10,000 round trips complete in both directions, mean 2.8 us.
  • Without that, the host launches both kernels and then waits on the initiator's card. The responder's kernel is never submitted: the initiator spins for its full 400 ms bound with no answer. Only when the host synchronizes the responder's card does it start, finds the stale ping and answers it. Host time 450 ms = 400 + 50, both directions, every time.

So on Windows a launch can sit in the runtime's batch indefinitely until something submits that card's work (an event record, a sync, or the batch filling). Any kernel that spins waiting for a kernel on the other card will hang until TDR, unless each card's launch is flushed right after it's made.

If the peer tier exchanges through host memory, recording a timing-free event after every launch the other card waits on should fix it. That's what Radiance's Windows backend does after each collective. If it reads the other card's VRAM directly, note that this driver reports no peer access (hipDeviceCanAccessPeer = 0 both ways), so that path can't work on Windows regardless.

Happy to share the probe source or test a build.

Activity

  1. github-actions commented on Oct 22, 2026

    @github-actions

    Thanks for the issue. To keep the tracker readable, every item needs an area prefix in the title and the parts of the issue form filled in. This one is missing:

    • Start the title with its area: [Engine], [GUI], [TUI], [Benchmark], [Docs] or [Other], then a short description. Example: "[Engine] decode stops after 2 minutes".

    Edit the issue (title and description) and this note goes away on its own. If it is still missing parts in 5 days it will be closed, which is not a rejection: fix it and comment /reopen.

    Details: CONTRIBUTING.md

  2. wmmunn commented on Oct 22, 2026

    @wmmunn
    Author

    A few details I left out:

    • Strata version: 0.1.46 (rx9070 build), peer tier started with <your config name / flags>,
      --peer-device 1. I haven't retested on 0.2.0-beta yet.
    • To be precise about what the probe measured: the responder's kernel stayed unsubmitted for the
      whole 400 ms bounded wait, i.e. at least 400 ms. "Indefinitely" was my inference from the real
      hang, not something the probe timed.
    • On the Radeon side: my Windows port of Radiance flushes this way by design. I'm still verifying
      that it does so after every collective at two cards, so treat that as the approach, not a tested result.

    Probe source attached (mailbox2.hip, single file, hipcc --offload-arch=gfx1201 -O2).

  3. github-actions commented on Oct 28, 2026

    @github-actions

    Closing this issue because it still did not follow the format after 5 days. That is housekeeping, not a rejection.

    To bring it back: fix the title (area prefix) and the missing parts, then comment /reopen. A check runs and reopens it, or tells you what is still missing. See CONTRIBUTING.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-formatTitle or template does not follow CONTRIBUTING.md yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions