Tags: tracel-ai/cubecl
Tags
fix(throughput): release the probe pool lock before the device call (#… …1678) * fix(throughput): release the probe pool lock before the device call `PooledProbes::cleanup_unless_held` held the global pool lock across `client.memory_cleanup()`, which submits to the device runner thread and spins until that thread drains the queue. The runner thread takes the same lock when it autotunes, so the two wait on each other and the process never recovers. The decision is still made under the lock and the release is now issued after it is dropped. A sweep entering in between pays a fault for pools it had not measured against yet, which is the cheaper of the two. Cleanup is also skipped when the throughput cache answered and no probe ran: nothing was allocated to release, and every `roofline_bounds` issued three of them on every thread that autotunes, which is what fills the queue in the first place. Closes #1668 * docs(throughput): keep only the why on the pooling change * docs(throughput): drop the comments the code already states * fix(throughput): release a curve's pool only when it probed
PreviousNext