Files
foxhunt/crates
jgrusewski 4a06e99ee5 fix: bypass stale cudarc events for all post-graph operations
After CUDA Graph capture (which disables/re-enables event tracking),
CudaSlices modified during capture have stale write events. Any cudarc
API call (memcpy_dtoh, synchronize, launch_builder.arg) on these slices
fails with CUDA_ERROR_INVALID_VALUE because cuStreamWaitEvent gets an
invalid event handle.

Fix: use raw CUDA driver calls for ALL post-graph operations:
- cuStreamSynchronize instead of cudarc synchronize() (avoids bind_to_thread)
- cuMemcpyDtoH_v2 via raw_device_ptr for scalar readbacks (2 × 4 bytes)
- raw_device_ptr for EMA kernel args (bypasses device_ptr event wait)

Event tracking remains enabled globally — only the 3 post-graph call sites
use raw driver calls. All other cudarc operations (cat/stack, alloc, etc.)
work normally with event tracking.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 23:25:58 +01:00
..