4 Commits
Author SHA1 Message Date
Eddie Yan a2bf3a697d [cuBLAS] Always eagerly allocate cuBLAS(Lt) workspaces (#194311)
authored with codex
as discussed w/ @eellison , @ngimel ,~~~ just stashing this prototype here as performance doesn't look great on the hot path:~~~

```

  Latest benchmark results:

   Backend        Shape (M,N,K)       Cached        Eager                 Delta
  ━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━  ━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━
   cuBLAS            (64,64,64)    14.807 µs    15.092 µs    +0.284 µs / +1.92%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS         (256,256,256)    14.904 µs    15.301 µs    +0.397 µs / +2.66%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS      (1024,1024,1024)    14.850 µs    15.363 µs    +0.513 µs / +3.46%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS       (32,2048,10944)    16.777 µs    17.626 µs    +0.849 µs / +5.06%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt          (64,64,64)    14.781 µs    15.181 µs    +0.399 µs / +2.70%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt       (256,256,256)    14.850 µs    15.099 µs    +0.249 µs / +1.68%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt    (1024,1024,1024)    14.718 µs    14.792 µs    +0.074 µs / +0.50%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt     (32,2048,10944)    16.715 µs    17.247 µs    +0.532 µs / +3.18%

  Paste-ready discussion summary—if this goes on GitHub, please add your own commentary around the quoted AI-generated material:

  > AI-generated benchmark summary, provided for human review
  >
  > Benchmarked cached versus operation-scoped eager cuBLAS workspaces on an NVIDIA GB300, CC 10.3, CUDA 13.4. PyTorch was built for CC 10.0. Measurements are medians across five alternating cached/eager process trials using synchronized
  > torch.utils.benchmark.Timer measurements of BF16 torch.mm.
  >
  > Eager workspace allocation added approximately 0.07–0.85 µs per operation. Relative overhead ranged from 0.5% to 5.1%, with the largest measured overhead on the legacy cuBLAS (M,N,K)=(32,2048,10944) regression shape.
  >
  > The cached implementation reproduced CUDA_ERROR_ILLEGAL_ADDRESS when separately captured graphs reused a workspace on the same stream. The eager implementation passed that reproducer.
  >
  > Given that most of the eager overhead appears to come from caching-allocator allocation/free bookkeeping, a simpler alternative under consideration is to retain the existing workspace cache but explicitly clear or isolate cached workspaces at
  > graph-capture boundaries.

```

Pull Request resolved: https://github.com/pytorch/pytorch/pull/194311
Approved by: https://github.com/ngimel, https://github.com/eellison
2026-09-05 05:35:27 +00:00
PyTorch MergeBot 4900b347cf Revert "[cuBLAS] Always eagerly allocate cuBLAS(Lt) workspaces (#194311)"
This reverts commit 4202fb82cb.

Reverted https://github.com/pytorch/pytorch/pull/194311 on behalf of https://github.com/pytorch-auto-revert due to Reverted automatically by pytorch's autorevert, to avoid this behaviour add the tag autorevert: disable ([comment](https://github.com/pytorch/pytorch/pull/194311#issuecomment-5536352297))
2026-09-04 05:57:50 +00:00
eqy 4202fb82cb [cuBLAS] Always eagerly allocate cuBLAS(Lt) workspaces (#194311)
authored with codex
as discussed w/ @eellison , @ngimel ,~~~ just stashing this prototype here as performance doesn't look great on the hot path:~~~

```

  Latest benchmark results:

   Backend        Shape (M,N,K)       Cached        Eager                 Delta
  ━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━  ━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━
   cuBLAS            (64,64,64)    14.807 µs    15.092 µs    +0.284 µs / +1.92%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS         (256,256,256)    14.904 µs    15.301 µs    +0.397 µs / +2.66%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS      (1024,1024,1024)    14.850 µs    15.363 µs    +0.513 µs / +3.46%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLAS       (32,2048,10944)    16.777 µs    17.626 µs    +0.849 µs / +5.06%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt          (64,64,64)    14.781 µs    15.181 µs    +0.399 µs / +2.70%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt       (256,256,256)    14.850 µs    15.099 µs    +0.249 µs / +1.68%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt    (1024,1024,1024)    14.718 µs    14.792 µs    +0.074 µs / +0.50%
  ──────────  ──────────────────  ───────────  ───────────  ────────────────────
   cuBLASLt     (32,2048,10944)    16.715 µs    17.247 µs    +0.532 µs / +3.18%

  Paste-ready discussion summary—if this goes on GitHub, please add your own commentary around the quoted AI-generated material:

  > AI-generated benchmark summary, provided for human review
  >
  > Benchmarked cached versus operation-scoped eager cuBLAS workspaces on an NVIDIA GB300, CC 10.3, CUDA 13.4. PyTorch was built for CC 10.0. Measurements are medians across five alternating cached/eager process trials using synchronized
  > torch.utils.benchmark.Timer measurements of BF16 torch.mm.
  >
  > Eager workspace allocation added approximately 0.07–0.85 µs per operation. Relative overhead ranged from 0.5% to 5.1%, with the largest measured overhead on the legacy cuBLAS (M,N,K)=(32,2048,10944) regression shape.
  >
  > The cached implementation reproduced CUDA_ERROR_ILLEGAL_ADDRESS when separately captured graphs reused a workspace on the same stream. The eager implementation passed that reproducer.
  >
  > Given that most of the eager overhead appears to come from caching-allocator allocation/free bookkeeping, a simpler alternative under consideration is to retain the existing workspace cache but explicitly clear or isolate cached workspaces at
  > graph-capture boundaries.

```

Pull Request resolved: https://github.com/pytorch/pytorch/pull/194311
Approved by: https://github.com/ngimel, https://github.com/eellison
2026-09-04 04:34:40 +00:00
Svetlana Karslioglu 19da3da3d3 Restructure C++ docs (#174096)
The fix-cpp-build branch is a major restructuring that:

- Drops Exhale (which auto-generated API docs but caused OOM in CI) in favor of hand-written RST pages using Breathe directives
- Reorganizes notes into a hierarchical API reference with proper categories
- Adds new content: XPU docs, stable ABI docs, DeviceGuard/Stream docs
- Always runs Doxygen instead of gating on an env var

Pull Request resolved: https://github.com/pytorch/pytorch/pull/174096
Approved by: https://github.com/janeyx99, https://github.com/seemethere, https://github.com/albanD
2026-04-07 17:24:38 +00:00