AGENT PULSESJCPal Special EditionAI Industry Evidence & Trends
Aug 10, 2026 · PyTorch

viable/strict/1786340861: Add a shared CUPTI subscriber-callback registry to the monitor (#191944)

What Happened

PyTorch 的 CUPTI monitor 新增共享的 subscriber-callback registry,使 CUPTI subscriber callbacks 可通过 monitor 消费。此前 subscriber 的 CUpti_CallbackFunc 是 no-op,且持有第二个 cuptiSubscribe_v2 会导致 kineto 的 initCallbackApi 失败并返回 MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED,且不会重试,导致后续 torch.profiler 运行静默产生零 GPU 事件。该变更仅提供机制,不包含 CUDA-graph 节点标注消费者。

EVENT STORY

Development

  1. First Reportviable/strict/1786340861: Add a shared CUPTI subscriber-callback registry to the monitor (#191944)PyTorch Core
  2. Industry Responsetrunk/5a6e1a4d3dcf11f4789d07ff3d1acdc1cf65a4cc: Add a shared CUPTI subscriber-callback registry to the monitor (#191944)PyTorch Core
  3. Current AssessmentPyTorch 的这次变更反映了深度学习框架在 GPU 性能分析方面的持续投入。通过解决多订阅者冲突,框架为更高级的分析功能(如 CUDA-graph 节点标注)提供了基础,这有助于提升模型训练和推理的效率。Agent Pulse · analysis
What Changed

PyTorch 在 CUPTI monitor 中新增共享的 subscriber-callback registry,允许通过 monitor 消费 CUPTI subscriber callbacks。此前,subscriber 的 CUpti_CallbackFunc 是 no-op,且无法通过 monitor 消费这些回调。直接使用第二个 cuptiSubscribe_v2 会导致 kineto 的 initCallbackApi 失败,错误为 MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED,且 kineto 不会重试,释放 subscriber 后也无法恢复,导致后续 torch.profiler 运行静默产生零 GPU 事件。在 use_approx_timestamps 模式下,monitor 单独订阅,第二个 subscriber 完全不可能。共享 monitor 的订阅是唯一避免这两种情况的方案。该变更仅提供机制,不包含 CUDA-graph 节点标注消费者,后者需要 GRAPHNODE_CREATED 回调。

How the Capability Boundary Shifted

该变更解决了 CUPTI 多订阅者限制问题,通过共享订阅机制允许消费者注册回调。这为 CUDA-graph 节点标注等需要同步回调的功能铺平了道路。未来,开发者可以基于此机制实现更细粒度的 GPU 事件追踪,而无需担心与 kineto 的冲突。

Why It Matters

PyTorch 的这次变更反映了深度学习框架在 GPU 性能分析方面的持续投入。通过解决多订阅者冲突,框架为更高级的分析功能(如 CUDA-graph 节点标注)提供了基础,这有助于提升模型训练和推理的效率。

Who It Affects

该变更提升了 PyTorch 性能分析工具的可靠性,避免了静默失败,对依赖 torch.profiler 进行性能优化的团队有直接价值。

What to Watch Next

后续可关注 PyTorch 是否会将 CUDA-graph 节点标注功能集成到 monitor 中,以及该机制是否会被其他性能分析工具采用。