pytorch-backlog-intelligence / data /pull_requests.html
cjc0013's picture
Publish PyTorch backlog intelligence public demo
14ed4df verified
Raw
History Blame Contribute Delete
80.9 kB
<style>
:root { color-scheme: light; }
.bi-wrap { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #1f2328 !important; }
.bi-wrap h1, .bi-wrap h2, .bi-wrap h3, .bi-wrap p, .bi-wrap strong, .bi-wrap td, .bi-wrap th, .bi-wrap div { color: #1f2328 !important; }
.bi-band { border: 1px solid #d8dee4; border-radius: 8px; background: #ffffff !important; padding: 16px; margin: 0 0 12px; }
.bi-title { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; margin-bottom: 12px; }
.bi-title h1, .bi-title h2 { margin: 0; line-height: 1.15; letter-spacing: 0; }
.bi-title h1 { font-size: 1.55rem; }
.bi-title h2 { font-size: 1.12rem; }
.bi-title p { margin: 4px 0 0; color: #57606a; max-width: 820px; }
.status-pill { border-radius: 999px; padding: 5px 9px; font-size: .78rem; font-weight: 700; background: #dafbe1; color: #116329 !important; white-space: nowrap; }
.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(138px, 1fr)); gap: 8px; }
.metric { border: 1px solid #d0d7de; border-radius: 8px; padding: 10px; background: #f6f8fa !important; min-height: 86px; }
.metric-value { font-size: 1.45rem; font-weight: 800; line-height: 1.1; color: #0969da !important; }
.metric-label { margin-top: 4px; font-size: .84rem; font-weight: 700; }
.metric-note { margin-top: 2px; font-size: .76rem; color: #57606a !important; }
.callout-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }
.callout { border-left: 4px solid #0969da; background: #f6f8fa !important; border-radius: 8px; padding: 10px 12px; }
.callout:nth-child(2) { border-left-color: #1a7f37; }
.callout:nth-child(3) { border-left-color: #bf8700; }
.callout:nth-child(4) { border-left-color: #cf222e; }
.callout strong { display: block; margin-bottom: 4px; }
.group-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); gap: 10px; }
.group-card { border: 1px solid #d8dee4; border-radius: 8px; padding: 12px; background: #fff !important; }
.group-card h3 { margin: 0 0 7px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }
.meta-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.chip-row { display: inline-flex; flex-wrap: wrap; gap: 5px; align-items: center; vertical-align: middle; }
.chip { display: inline-flex; align-items: center; border: 1px solid #d0d7de; border-radius: 999px; padding: 2px 7px; font-size: .78rem; background: #f6f8fa !important; color: #24292f !important; }
.chip.bucket { border-color: #9a6700; background: #fff8c5 !important; }
.chip.kind { border-color: #0969da; background: #ddf4ff !important; }
.workflow-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.workflow-card { border: 1px solid #d8dee4; border-radius: 8px; padding: 12px; background: #fff !important; }
.workflow-card h3 { margin: 0 0 7px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }
.workflow-card .move-count { font-weight: 800; color: #0969da !important; }
.move-list { display: grid; gap: 10px; }
.move-row { border: 1px solid #d8dee4; border-radius: 8px; background: #fff !important; }
.move-row summary { list-style: none; cursor: pointer; padding: 12px; }
.move-row summary::-webkit-details-marker { display: none; }
.move-summary { display: grid; grid-template-columns: minmax(190px, 1fr) minmax(260px, 1.45fr) minmax(260px, 1.45fr) minmax(150px, .8fr) minmax(250px, 1.35fr) auto; gap: 16px; align-items: start; }
.move-title, .move-field { min-width: 0; }
.move-title h3 { margin: 0 0 4px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }
.move-field span { display: block; color: #57606a !important; font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0; }
.move-field p { margin: 3px 0 0; font-size: .84rem; line-height: 1.35; overflow-wrap: anywhere; }
.move-field .chip, .move-title { overflow-wrap: anywhere; }
.view-bundles { align-self: center; justify-self: end; border: 1px solid #000000; border-radius: 999px; color: #000000 !important; background: #ffffff !important; padding: 4px 9px; font-size: .78rem; font-weight: 800; white-space: nowrap; }
.move-row[open] .view-bundles { background: #f6f8fa !important; }
.move-expanded { border-top: 1px solid #d8dee4; padding: 0 12px 12px; }
.bundle-row { border-top: 1px solid #eef1f4; padding: 12px 0; }
.bundle-row:first-child { border-top: none; }
.bundle-row h4 { margin: 0 0 6px; font-size: .94rem; line-height: 1.25; letter-spacing: 0; }
.bundle-scope { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 7px; margin-top: 8px; }
.evidence-list { margin: 8px 0 0 18px; padding: 0; color: #57606a !important; font-size: .82rem; line-height: 1.35; }
.evidence-list li { margin: 3px 0; }
.muted { color: #57606a !important; }
.evidence { font-size: .84rem; color: #57606a !important; }
.scroll-table { overflow-x: auto; border: 1px solid #d8dee4; border-radius: 8px; background: #fff !important; }
table.bi-table { width: 100%; border-collapse: collapse; font-size: .86rem; }
.bi-table th { text-align: left; background: #f6f8fa !important; color: #57606a !important; font-size: .78rem; border-bottom: 1px solid #d8dee4; padding: 8px; white-space: nowrap; }
.bi-table td { border-bottom: 1px solid #eef1f4; padding: 8px; vertical-align: top; min-width: 86px; }
.bi-table tr:last-child td { border-bottom: none; }
.wide { min-width: 280px; }
.tight { max-width: 180px; }
a { color: #0969da !important; text-decoration: none; }
a:hover { text-decoration: underline; }
.bi-wrap, .bi-wrap * { color: #000000 !important; }
@media (max-width: 720px) {
.bi-title { display: block; }
.status-pill { display: inline-block; margin-top: 8px; }
.group-grid { grid-template-columns: 1fr; }
.move-summary { grid-template-columns: 1fr; }
.view-bundles { justify-self: start; }
}
</style>
<div class='bi-wrap'><section class='bi-band'><div class='bi-title'><div><h2>Open Pull Requests</h2><p>Public-safe normalized rows for auditability.</p></div></div><div class='scroll-table'><table class='bi-table'><thead><tr><th>Pull Request</th><th>Bucket</th><th>Score</th><th>Linked</th><th>Labels</th><th>Excerpt</th></tr></thead><tbody><tr><td><a href='https://github.com/pytorch/pytorch/pull/189096' target='_blank' rel='noopener noreferrer'>Pull Request #189096: [aot_autograd] Make CPU-side stream syncs real cross-stream barriers</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, release notes: inductor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189096 #189095 synchronize_stream / synchronize_device / synchronize_event block the CPU until a stream (or event) drains, so every subsequent kernel launch is host-ordered after them. Unlike device-side waits (wait_event / wait_stream), nothing on a consumer&#x27;s stream waits...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189024' target='_blank' rel='noopener noreferrer'>Pull Request #189024: [Dynamo] Support exception attribute access (StopIteration/AttributeError/NameError)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, module: dynamo, ciflow/inductor, release notes: dynamo, merging, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189024 #188825 #188834 #188824 #157149 #188639 #188638 #188004 #187744 #187690 Dynamo wrapped exceptions in a single ExceptionVariable that only tracked args/context/cause/traceback. Reading exception-specific attributes (StopIteration.value, AttributeError.name/.obj, NameE...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189318' target='_blank' rel='noopener noreferrer'>Pull Request #189318: Bump pip from 26.0.1 to 26.1.2 in /.ci/docker</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, python, dependencies, ciflow/docker</td><td><div class='wide'>Bumps pip from 26.0.1 to 26.1.2. Changelog Sourced from pip&#x27;s changelog. 26.1.2 (2026-05-31) Bug Fixes Reject console_scripts and gui_scripts entry points whose name would install a script outside the scripts directory. ([#14000](https://github.com/pypa/pip/issues/14000) &lt;https://github.com/pypa/pip/issues/14000&gt;_)...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189329' target='_blank' rel='noopener noreferrer'>Pull Request #189329: [DEBUG] Profile the XPU SYCL device-link bottleneck</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/xpu</td><td><div class='wide'>Do not merge - temporary diagnostic. Why linux-noble-xpu-n-py3.10 / build takes ~35-45 min vs 5-15 min for the other builds in the same workflow. Profiling pull run 28986110660 showed the Build step is ~33 min even with sccache at 99.93% hit rate - because sccache caches only host C/C++, not SYCL device code. The si...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188597' target='_blank' rel='noopener noreferrer'>Pull Request #188597: [ROCm] Add initial support for gfx1250</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, Merged, Reverted, ciflow/binaries, ciflow/trunk, release notes: releng, module: inductor, ciflow/inductor, merging, ci-no-td, ciflow/rocm-mi300, ciflow/h100, ciflow/b200, ciflow/torchtitan, ciflow/docker</td><td><div class='wide'>This PR adds initial ROCm support for gfx1250 (CDNA5). What this PR enables: Gates gfx1250-specific behavior on ROCm 7.14+ (the support floor), applied consistently across CUDABlas.cpp, ScaledBlas.cpp, CUDAHooks.cpp, and the test helpers. Adds gfx1250 to the hipBLASLt preferred/supported arch lists and the hipSparse...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188963' target='_blank' rel='noopener noreferrer'>Pull Request #188963: [XPU] Enable XPU testing for 50 test classes across 40 test files</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: quantization, topic: not user facing, module: inductor, module: dynamo, ciflow/inductor, keep-going, ciflow/xpu, ci-no-td, ciflow/rocm-mi300, ciflow/h100, ciflow/b200</td><td><div class='wide'>Summary Enable XPU (allow_xpu=True) for test classes that are confirmed working on Intel GPU (XPU). Each class was validated by running pytest -k &quot;&lt;ClassName&gt; and xpu&quot; in an XPU-enabled PyTorch environment. Changes by file File Classes Enabled test/complex_tensor/test_complex_tensor.py TestComplexTensor, TestComplex...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189173' target='_blank' rel='noopener noreferrer'>Pull Request #189173: torchfuzz: detach batch_norm running stats</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/trunk, topic: not user facing, merging</td><td><div class='wide'>The fuzzer marks float tensor args requires_grad=True for the backward pass, but torch.nn.functional.batch_norm is not differentiable w.r.t. running_mean / running_var, so when those inputs are grad-requiring args the generated program raises RuntimeError: ... &#x27;running_mean&#x27; ... cannot have requires_grad True in eag...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189111' target='_blank' rel='noopener noreferrer'>Pull Request #189111: [torchcomms hash update] update the pinned torchcomms hash</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, topic: not user facing, ciflow/inductor, merging, ci-no-td</td><td><div class='wide'>This PR is auto-generated nightly by this action. Update the pinned torchcomms hash.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/184218' target='_blank' rel='noopener noreferrer'>Pull Request #184218: Support decorator/curried calling convention for torch.utils.checkpoint.checkpoint</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, release notes: distributed (fsdp), topic: new features, module: inductor, module: dynamo, ciflow/inductor, release notes: distributed (dtensor), ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #184218 checkpoint() can now be called without a function argument to produce a decorator, keeping checkpoint configuration separate from the checkpointed function&#x27;s arguments: checkpointed_fn = checkpoint(use_reentrant=False)(fn) out = checkpointed_fn(*args, **kwargs) This...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188980' target='_blank' rel='noopener noreferrer'>Pull Request #188980: Fix inconsistent accelerator guard in checkpoint staging test</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#188790</span></span></td><td>open source, ciflow/trunk, topic: not user facing, release notes: distributed (checkpoint), merging</td><td><div class='wide'>Fixes #188790 Summary In test/distributed/checkpoint/_experimental/test_staging.py, the block that appends the async-staging and non-blocking-copy test cases was guarded by torch.cuda.is_available(), while the config values constructed inside that same block already use the backend-generic torch.accelerator.is_avail...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187940' target='_blank' rel='noopener noreferrer'>Pull Request #187940: [xpu][inductor] fix the fallback behavior of maxpool backward for performance</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/trunk, module: inductor, ciflow/inductor, release notes: inductor, ciflow/xpu, ciflow/torchtitan</td><td><div class='wide'>Fix max_pool2d_backward fallback to eager op behavior. Previously, the decomposition pass was executed before lowering, causing max_pool2d_backward to be decomposed before the fallback mechanism could be applied(described in #182619). As a result, the eager fallback path was bypassed, and the operation was fused int...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189328' target='_blank' rel='noopener noreferrer'>Pull Request #189328: Add retry with backoff to download_mnist.py</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189328 Note from human: this is not a big deal but it&#x27;s also the kind of thing coding agents eat for lunch, so whatever. MNIST download in CI hits a single S3 mirror via urlretrieve with no retry, so a transient network blip fails the whole job. This adds up to 3 attempts p...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189284' target='_blank' rel='noopener noreferrer'>Pull Request #189284: Add torch.autograd.graph.node_creation_hook</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>release notes: autograd, topic: new features</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189284 Adds a public context manager that registers a thread-local hook fired once for every autograd Node created within it, with the freshly created Node as argument. This gives users a creation-time dual of saved_tensors_hooks: the hook can inspect the node, record it, s...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/181680' target='_blank' rel='noopener noreferrer'>Pull Request #181680: [triton hash update] update the pinned triton hash</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, topic: not user facing, ciflow/inductor, ci-no-td, ciflow/docker</td><td><div class='wide'>This PR is auto-generated nightly by this action. Update the pinned triton hash.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189217' target='_blank' rel='noopener noreferrer'>Pull Request #189217: [vision hash update] update the pinned vision hash</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, topic: not user facing, ciflow/inductor, ci-no-td</td><td><div class='wide'>This PR is auto-generated nightly by this action. Update the pinned vision hash.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187288' target='_blank' rel='noopener noreferrer'>Pull Request #187288: [vllm hash update] update the pinned vllm hash</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, topic: not user facing, ciflow/inductor, ci-no-td, ciflow/vllm, ci-refresh-hf-cache</td><td><div class='wide'>This PR is auto-generated nightly by this action. Update the pinned vllm hash.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188262' target='_blank' rel='noopener noreferrer'>Pull Request #188262: [CI] fix OpenBLAS build for non-AArch64</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, Merged, Reverted, ciflow/trunk, topic: not user facing, ci-no-td, ciflow/docker</td><td><div class='wide'>TARGET=ARMV8 was hardcoded, breaking non-aarch64 builds. Now it&#x27;s only set on aarch64; other platforms (like riscv64) rely on DYNAMIC_ARCH instead. Also forcibly enable the float/double/complex precision variants and pass build flags to make install consistently.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/179651' target='_blank' rel='noopener noreferrer'>Pull Request #179651: [torchtitan hash update] update the pinned torchtitan hash</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, topic: not user facing, ciflow/inductor, ci-no-td, ciflow/torchtitan</td><td><div class='wide'>This PR is auto-generated nightly by this action. Update the pinned torchtitan hash.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187600' target='_blank' rel='noopener noreferrer'>Pull Request #187600: [ROCm][Inductor] Enable NHWC convs by default on CDNA with an Inductor layout-opt gate</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, ciflow/trunk, module: inductor, ciflow/inductor, keep-going, release notes: inductor, ciflow/rocm-mi300, ciflow/inductor-perf-test-nightly-rocm-mi300, ciflow/inductor-perf-test-nightly-rocm-mi350, ciflow/inductor-rocm-mi300, ciflow/torchtitan, ciflow/docker</td><td><div class='wide'>Enable NHWC convs by default on CDNA (gfx9xx) and gate Inductor layout-opt so grouped convs that hit MIOpen&#x27;s slow naive kernel stay NCHW. Builds on / supersedes #149039 (closed): keeps its NHWC-on-CDNA enablement, fixes the arch-guard bug, makes ConvUtils.h ATEN_CPU-lint-clean via a runtime CUDAHooks hook, adds a c...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189083' target='_blank' rel='noopener noreferrer'>Pull Request #189083: [profiler][cupti] Drive periodic cuptiActivityFlushAll from the decode thread</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189185 -&gt; #189083 #188621 #189109 The CUPTI monitor&#x27;s background flush loop woke on a Python thread every background_flush_period_s just to call cuptiActivityFlushAll -- a pure-C call that needs no GIL -- so it held the GIL for no reason and contended with the training thread....</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189185' target='_blank' rel='noopener noreferrer'>Pull Request #189185: [profiler][cupti] Make CuptiMonitor a singleton configured via a global configure()</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td></td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189185 #189083 #188621 #189109 Ports the config-only change from commit 4a24d3b207 (drop the TORCH_CUPTI_MONITOR_* env vars) and turns CuptiMonitor into a process-wide singleton, mirroring PmSampler. buffer_size, background_flush_period_s, and background_drain_period_s were...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188621' target='_blank' rel='noopener noreferrer'>Pull Request #188621: [profiler][cupti] Generate CUPTI field-id catalogs from the ABI as Field(id, ctype)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189185 #189083 -&gt; #188621 #189109 The v2 CUPTI user-defined-record path selects records by field id (CUpti_ActivityFieldIds), which cupti-python does not expose. Instead of hand-maintaining those ids, generate them from cupti_activity.h at build time, and model each field as a...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189229' target='_blank' rel='noopener noreferrer'>Pull Request #189229: [DO NOT MERGE][ROCm] Use torch.version.hip to detect ROCm when /opt/rocm is absent</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, open source, release notes: releng, module: inductor, module: dynamo, ciflow/inductor, release notes: distributed (checkpoint), keep-going, ci-no-td, ciflow/rocm-nightly, ciflow/dtensor, ciflow/docker</td><td><div class='wide'>cc @jeffdaily @sunway513 @jithunnair-amd @pruthvistony @ROCmSupport @jataylo @hongxiayang @naromero77amd @pragupta @jerrymannil @xinyazhang @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @chauhang @aakhundov @coc...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188100' target='_blank' rel='noopener noreferrer'>Pull Request #188100: Support callable msg lambda in TestCase.assert* methods beyond assertEqual()</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, topic: not user facing, mergedog, make tests great again</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189286 #188573 #188299 -&gt; #188100 Allows for lazy building of error messages only when tests fail! Saves on overhead, especially when serialized tensors are involved.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189275' target='_blank' rel='noopener noreferrer'>Pull Request #189275: Consolidate CD wheel build pipelines under .ci/wheel/ and unify the numpy pin</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: releng, ciflow/binaries_wheel</td><td><div class='wide'>Summary The three CD wheel-build pipelines (Linux, Windows, macOS) grew as three independent Python ports and drifted apart: copy-pasted helpers, three different numpy build-pin tables, and different directory homes. This PR consolidates them under a common .ci/wheel/ root with a single shared _common.py, and reconc...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/115316' target='_blank' rel='noopener noreferrer'>Pull Request #115316: Automated submodule update: FBGEMM</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, topic: not user facing, ciflow/rocm-mi300, ciflow/h100, ciflow/b200</td><td><div class='wide'>This is an automated pull request to update the first-party submodule for pytorch/FBGEMM. New submodule commit: pytorch/FBGEMM@a75b43f Test Plan: Ensure that CI jobs succeed on GitHub before landing.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189175' target='_blank' rel='noopener noreferrer'>Pull Request #189175: torchfuzz: fix clamp_min/max emitting None bound</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/trunk, topic: not user facing</td><td><div class='wide'>ClampMinOperator/ClampMaxOperator stored the random bound as mutable instance state in fuzz_inputs_specs and read it back in codegen. The same operator instance serves multiple clamp nodes, so during code generation the first codegen resets the stored bound to None and later clamp nodes emit clamp_min(x, min=None) o...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/167224' target='_blank' rel='noopener noreferrer'>Pull Request #167224: [FlopCounter] Add skip_unsupported parameter for graceful handling of unsupported HOPs</a></td><td>waiting on contributor</td><td>53</td><td><span class='chip-row'><span class='chip'>#134385</span></span></td><td>triaged, open source, release notes: python_frontend</td><td><div class='wide'>Fixes #134385 FlopCounterMode returns NotImplemented when it encounters a Higher Order Operator it does not handle, which makes it hard to use for benchmarking real-world models that mix standard PyTorch ops with custom HOPs or kernels. What this PR does Adds a skip_unsupported flag (default False) to FlopCounterMod...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188299' target='_blank' rel='noopener noreferrer'>Pull Request #188299: Lazily build error messages for assert*() calls across tests to reduce overhead</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>release notes: quantization, topic: not user facing, ciflow/mps, module: inductor, module: dynamo, ciflow/inductor, release notes: distributed (checkpoint), ciflow/rocm-mi300, ciflow/h100, ciflow/h100-symm-mem, ciflow/b200, ciflow/dtensor, mergedog, make tests great again</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189286 #188573 -&gt; #188299 #188100 Apply new lazy error message feature to call-sites throughout test files. cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @chauhang @aak...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189192' target='_blank' rel='noopener noreferrer'>Pull Request #189192: [MPS] Add `geqrf` and refactor `linalg_qr`</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: mps, ciflow/mps, ciflow/inductor, release notes: inductor (aoti)</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189192 This PR splits out the geqrf code from the linalg_qr kernel and refactors linalg_qr for MPS to call the device-agnostic linalg_qr_out function that CPU and CUDA use.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188573' target='_blank' rel='noopener noreferrer'>Pull Request #188573: Cleanup dead code across tests</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>release notes: quantization, topic: not user facing, module: inductor, module: dynamo, ciflow/inductor, ciflow/rocm-mi300, ciflow/h100, ciflow/b200, ciflow/dtensor, mergedog, make tests great again</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189286 -&gt; #188573 #188299 #188100 I don&#x27;t expect huge perf improvements, but why not? cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @chauhang @aakhundov @coconutruben @...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189264' target='_blank' rel='noopener noreferrer'>Pull Request #189264: [ROCm][CI] Make rocm-nightly workflow fully mi300-specific (name, ciflow tag, filename)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, ciflow/binaries, topic: not user facing, ciflow/rocm-mi300</td><td><div class='wide'>Summary Make the rocm-nightly workflow fully arch-specific for mi300: Renamed the workflow file to .github/workflows/rocm-nightly-mi300.yml. Set the workflow display name to rocm-nightly-mi300 and its push-trigger ciflow tag to ciflow/rocm-nightly-mi300/*. Job name and build-environment are linux-noble-rocm-nightly-...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189193' target='_blank' rel='noopener noreferrer'>Pull Request #189193: [XCCL] Allow XCCL to be set as default in `_new_process_group_helper`</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#4098</span></span></td><td>open source, ciflow/trunk, release notes: distributed (c10d), ciflow/torchtitan</td><td><div class='wide'>Fixes intel/torch-xpu-ops#4098 For DeviceMesh which doesn&#x27;t specify the backend type, _new_process_group_helper is called with the &quot;undefined&quot; backend, which is set based on available devices. NCCL backend can be set as default, as well as CUSTOM backends. This PR also allows the XCCL backend to be set as default if...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187465' target='_blank' rel='noopener noreferrer'>Pull Request #187465: [Symm_mem] Support expandable segements inside PyTorch Symmetric memory for NCCL backend</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, release notes: distributed (c10d), ciflow/h100-symm-mem, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #187465 #189088 This PR allows the NCCL symmetric-memory allocator to back its allocations with the CUDA caching allocator&#x27;s expandable segments; when expandable_segments is enabled. In that mode, NCCLSymmetricMemoryAllocator now allocates/frees the symmetric buffer via CUDA...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189302' target='_blank' rel='noopener noreferrer'>Pull Request #189302: [ROCm][CI] Make ROCM_SO_FILES a single shared source of truth for wheel bundling + preload</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, ciflow/binaries_wheel, ciflow/rocm-mi300</td><td><div class='wide'>Summary The ROCm shared-library basename list was duplicated in two places that had drifted apart: .ci/manywheel/repair_wheel.py::ROCM_SO_FILES (27 entries) — the libs bundled into the wheel. torch/__init__.py::_rocm_core_libs (22 entries) — the libs preloaded RTLD_GLOBAL, leaf-first, before import torch._C (added i...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189314' target='_blank' rel='noopener noreferrer'>Pull Request #189314: flex_gemm: recognize 2-D block local-reduce contracts</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 -&gt; #189314 #189190 #189188 #188739 #188112 #188470 #188469 #188468 Recognize structural 2-D block local-reduce aux outputs of the form acc.view(M // bm, bm, N // bn, bn) reduced over both grouped dims. This threads block geometry through the output plan, templat...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189315' target='_blank' rel='noopener noreferrer'>Pull Request #189315: flex_gemm: store 2-D block local reductions</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 -&gt; #189315 #189314 #189190 #189188 #188739 #188112 #188470 #188469 #188468 Enable the first QUACK-backed 2-D block local-reduce STORE path for 128x128 block-scale aux outputs. The compiler now threads block geometry into runtime dispatch with explicit block kwargs, requ...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187699' target='_blank' rel='noopener noreferrer'>Pull Request #187699: Add a debug log when we skip sync_decision_cross_ranks (#187699)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, ciflow/inductor, meta-exported, ciflow/torchtitan</td><td><div class='wide'>Summary: When there is collectives in the graph but there is no sync decision cross ranks, it could potentially have issue of inconsistent decisions on different ranks on what to save. So adding this debug log to facilitate debug when the inconsistent issue happens. Test Plan: Existing tests already cover it Reviewe...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189316' target='_blank' rel='noopener noreferrer'>Pull Request #189316: flex_gemm: support mx block-scale stores</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189316 #189315 #189314 #189190 #189188 #188739 #188112 #188470 #188469 #188468 Compose 2-D block local-reduce stores with physical-only finalizers such as mx_e8m0_scale. Block aux plan classification now traces a shape-preserving pointwise finalizer back to its base block r...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189320' target='_blank' rel='noopener noreferrer'>Pull Request #189320: [inductor] Enable nested Inductor configs for invoke_subgraph regions</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189321 -&gt; #189320 The normal Inductor invoke_subgraph path compiled each nested region under the surrounding graph&#x27;s Inductor config, so per-region config patches were dropped and nested options had no effect on the region. This threads the nested-region config through the inv...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189307' target='_blank' rel='noopener noreferrer'>Pull Request #189307: [CI/CD] Copy newer CUPTI headers into manywheel binary-build images</a></td><td>waiting on CI/check fix</td><td>108</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, ciflow/docker</td><td><div class='wide'>#189214 added install_cupti_headers, which stages the newer standalone CUPTI redist headers into /usr/local/cupti-headers-&lt;major.minor&gt; for the CUDA-13 build containers. However, the manywheel binary-build images only COPY /usr/local/cuda-&lt;ver&gt; out of the cuda build stage, so the staged headers never reach the final...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189324' target='_blank' rel='noopener noreferrer'>Pull Request #189324: [T278829272][Claude Code] Gate TLX flex_attention choices on tlx_mode</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, meta-exported, ciflow/torchtitan</td><td><div class='wide'>Summary: X-link: facebookexperimental/triton#1961 15 caffe2/test/inductor:flex_attention tests broke on Hopper/Blackwell CI, root-caused to a missing gate against tlx-mode in flex_attention code. TLXInductorChoices.append_flex_attention_choices was the only method on the class that did not gate on config.triton.tlx_...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189321' target='_blank' rel='noopener noreferrer'>Pull Request #189321: [inductor] Enable per-region cudagraphs for invoke_subgraph via auto graph partition</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189321 #189320 Building on nested Inductor configs, a region can set triton.cudagraphs to opt into or out of cudagraphs independently of the enclosing graph. When a region&#x27;s preference differs from the enclosing graph and graph partition is globally off, compile_fx enables...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189266' target='_blank' rel='noopener noreferrer'>Pull Request #189266: [ROCm][CI] Fix py3.15 ROCm manywheel numpy source build (pkg-config python3)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, ciflow/binaries_wheel</td><td><div class='wide'>Summary Python 3.15 has no prebuilt numpy wheel on PyPI yet, so pip builds numpy from source for every arch. meson&#x27;s Cython sanity check resolves the python3 pkg-config dependency to get Python include/link flags. The ROCm manylinux2_28-builder image ships the system Python 3.6 pkg-config file on the default search...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189291' target='_blank' rel='noopener noreferrer'>Pull Request #189291: Add an accurate Metal erfc for MPS (eager + inductor)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/mps, module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Splits the MPS backend portion out of #189234 (gh-187806) per review. Problem c10::metal::erfc is 1.0 - erf(x): once erf saturates in fp32 (x ~ 3.9), erfc returns 0.0, i.e. 100% relative error over the entire upper tail. Everything consuming it on MPS inherits the flush: eager torch.erfc / torch.special.erfc igammac...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188862' target='_blank' rel='noopener noreferrer'>Pull Request #188862: [inductor] Fix bool minimum/maximum crash in index propagation (#188862) (#188862)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: cpu, ciflow/trunk, module: inductor, ciflow/inductor, meta-exported, ciflow/torchtitan</td><td><div class='wide'>Summary: Context torch.minimum/torch.maximum on boolean tensors crash under torch.compile(backend=&quot;inductor&quot;) with ValueError: The argument &#x27;False&#x27; is not comparable., while eager mode works. Reported in #188230 (repro: threshold -&gt; torch.eq -&gt; torch.empty_like -&gt; torch.minimum). The root cause is that inductor feed...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188643' target='_blank' rel='noopener noreferrer'>Pull Request #188643: [AOTI] Add external constants API for zero-copy weight sharing (#188643)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, module: inductor, ciflow/inductor, release notes: inductor (aoti), meta-exported, ciflow/torchtitan</td><td><div class='wide'>Summary: Add a new AOTI C API, AOTInductorModelContainerCreateWithExternalConstants, that creates a model container with caller-provided weight tensors instead of loading from the .so file. The caller retains ownership (user_managed=true), enabling zero-copy weight sharing via CUDA IPC. The new ExternalConstantsTag...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189109' target='_blank' rel='noopener noreferrer'>Pull Request #189109: [profiler][cupti] Resolve a version-gated CUPTI header and conditionally install libclang for the field-id codegen</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189185 #189083 #188621 -&gt; #189109 The CUPTI field-id codegen (tools/gen_cupti_stubs.py, stacked on top) parses the CUPTI ABI header cupti_activity.h with libclang to emit the _cupti_stubs field-id catalogs. This commit adds the header resolver + the conditional libclang build...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/181559' target='_blank' rel='noopener noreferrer'>Pull Request #181559: [XPU] Enable _flash_attention_forward/_flash_attention_backward</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#2442</span></span></td><td>open source, intel priority, ciflow/trunk, ciflow/inductor, ciflow/xpu, release notes: inductor (aoti)</td><td><div class='wide'>Fix intel/torch-xpu-ops#2442 intel/torch-xpu-ops#2853 at::_flash_attention_forward and at::_flash_attention_backward are two ops which is one-one mapping to Tridao&#x27;s FlashAttention2 API. at::_scaled_dot_product_flash_attention and at::_scaled_dot_product_flash_attention_backward are two ops of SDPA FlashAttention ba...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/181726' target='_blank' rel='noopener noreferrer'>Pull Request #181726: [xpu][1/4]Implement scaled_mm_v2 for MXFP8/MXFP4/NVFP4 on XPU</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: cpu, triaged, open source, intel priority</td><td><div class='wide'>Extend the XPU scaled_mm_v2 dispatch to support MXFP8 (BlockWise1x32 with e8m0fnu scales), MXFP4 (BlockWise1x32 with e8m0fnu scales on packed FP4 data), and NVFP4(BlockWise1x16 with float8_e4m3fn scales on packed FP4 data) Updated after blockwise FP8 support #173630 is merged. PR Stack: Since I don&#x27;t have ghstack pe...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189051' target='_blank' rel='noopener noreferrer'>Pull Request #189051: [dynamo] Reject keyword args to set()/frozenset() constructors</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, module: dynamo, ciflow/inductor, release notes: dynamo, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #185424 #189053 #189052 #189022 -&gt; #189051 #189021 set(a=1) / set().init(a=1) silently returned an empty set under Dynamo instead of raising TypeError. BuiltinVariable.call_set / call_frozenset checked the keyword arguments only after a len(args) == 0 early-return, so the zero-...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189317' target='_blank' rel='noopener noreferrer'>Pull Request #189317: [doc] Add accelerator test reuse guide (#181474)</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#181474</span></span></td><td>open source, topic: not user facing</td><td><div class='wide'>Adds a documentation page for the Accelerator Integration series explaining how out-of-tree backend developers can reuse PyTorch&#x27;s built-in test cases. Covers: bypass_device_restrictions for @OnlyOn decorator bypass (#177248) op_skips / op_decorators for operator-level skipping (#177256) skipped_testcases for test c...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188632' target='_blank' rel='noopener noreferrer'>Pull Request #188632: Fix Dynamo opaque object staticmethod guards</a></td><td>ready for maintainer decision</td><td>112</td><td><span class='chip-row'><span class='chip'>#188544</span></span></td><td>topic: not user facing, module: dynamo, ciflow/inductor, ciflow/torchtitan, agentic, needs-review</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #188632 Value opaque objects are represented as TorchScriptObjectVariable, whose constructor accepted a source but did not pass it to UserDefinedObjectVariable. That left the base class without the instance source it needs to derive cls_source for descriptor lookup. When Dyn...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189325' target='_blank' rel='noopener noreferrer'>Pull Request #189325: [Dynamo] Fix self-referential bw_compiler on backend re-entry</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Why When one aot_autograd backend compiles a second, distinct graph, AotAutograd.__call__ re-enters with bw_compiler already wrapped. The _is_wrapped_bw_compiler branch then ran bw_compiler.compiler_fn = bw_compiler, grafting a self-referential attribute (and needing a type: ignore) instead of leaving the wrapper un...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187404' target='_blank' rel='noopener noreferrer'>Pull Request #187404: [inductor][cutlass] Normalize reshaped external reads in EVT epilogue fusion</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #187404 Motivation Running the MobileBertForMaskedLM HuggingFace benchmark on XPU with CUTLASS epilogue fusion crashed during codegen: RuntimeError: Dimension mismatch between accum(1, 16384, 128), buf19(128, 128, 128) CUTLASS EVT treats the 2D GEMM output (M, N) = (16384, 1...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/179286' target='_blank' rel='noopener noreferrer'>Pull Request #179286: Use C++20 concepts where it improves readability</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, Merged, NNC, Reverted, ciflow/trunk, release notes: jit, topic: not user facing, ciflow/inductor, ci-no-td, no-runner-experiments, ciflow/vllm</td><td><div class='wide'>C++20 introduces concepts which can simplify some template code. In this PR, I have changed some instances of enable_if with concepts where it&#x27;s not hard to verify correctness. #176662 cc @EikanWang @jgong5</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/178393' target='_blank' rel='noopener noreferrer'>Pull Request #178393: [DO NOT MERGE] Dynamo 3.15 support</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: releng, module: dynamo, ciflow/inductor, ciflow/dynamo, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #178393 #179094 #188029 #187631 #189306</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189249' target='_blank' rel='noopener noreferrer'>Pull Request #189249: [Dynamo] Remove dead code in tvm and common backends</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/trunk, topic: not user facing, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Why Two branches in torch/_dynamo/backends can never execute. tvm() assigns options a default when it is None, then immediately re-checks it for None. AotAutograd.__call__ assigns use_fallback = False and then branches on it, so the fallback and its not_ok counter increment are dead. How Drop the redundant if option...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188742' target='_blank' rel='noopener noreferrer'>Pull Request #188742: [ROCm][inductor] Enable scaled grouped GEMM Triton lowering</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, ciflow/trunk, release notes: rocm, release notes: linalg_frontend, module: inductor, ciflow/inductor, release notes: inductor, ciflow/rocm-mi300, ciflow/h100, ciflow/rocm-mi355, ciflow/b200, ciflow/torchtitan, ciflow/rocm, ciflow/rocm-mi350</td><td><div class='wide'>Summary Build on the ROCm grouped GEMM Triton lowering change so legacy aten._scaled_grouped_mm can use the shared scaled grouped Triton template on ROCm. Gate ROCm scaled grouped GEMM Triton selection to FP8-capable hardware and the expected FP8 encoding (fnuz on gfx94, OCP FP8 on newer FP8-capable arches). Enable...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189299' target='_blank' rel='noopener noreferrer'>Pull Request #189299: [MemoryViz] Decimate over-long stacked-area polygons so the summarize…</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td></td><td><div class='wide'>…d band renders The &quot;Active Memory Timeline&quot; / &quot;Allocated Memory (incl. Private Pools)&quot; views build one stacked-area per allocation series and advance a point onto each live series at every alloc/free action. A series that stays live across the whole trace therefore gains one point per timestep. The global summarize...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189311' target='_blank' rel='noopener noreferrer'>Pull Request #189311: [wip] Reduce hackery for Dynamo appeasement</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): (to be filled) cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @kadeng @chauhang @amjames @jataylo @azahed98</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/186055' target='_blank' rel='noopener noreferrer'>Pull Request #186055: Add CUDA graph support for torch.while_loop</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, ciflow/trunk, release notes: cuda</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #186056 -&gt; #186055 Motivation is to allow us to handle some forms of dynamic shapes inside of a cuda graph. This does not necessarily improve performance, but it can make your entire workload cuda graph compatible, which is good for developer experience For example, if you want...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189088' target='_blank' rel='noopener noreferrer'>Pull Request #189088: [SymmMem] Place the signal pad at the front of symmetric memory allocations</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: distributed (c10d), release notes: distributed (symm_mem), ciflow/h100-symm-mem, ciflow/b200-symm-mem</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #187465 -&gt; #189088 We place the signal pad at the front of symmetric memory allocations in this PR. The purpose is to fix the potential signal pad pollution when we reuse the same VA for one block. For example, within one block if we first use that VA for a large tensor and the...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187631' target='_blank' rel='noopener noreferrer'>Pull Request #187631: [dynamo] Fix segfault in list comprehension graph break</a></td><td>ready for maintainer decision</td><td>70</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #178393 #179094 #188029 -&gt; #187631 #189306 Reusing the name of the iterator variable in a list comprehension that graph breaks to store the result causes a segfault (the stack underflows in the generated comprehension function). The current approach using bytecode templates is...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189305' target='_blank' rel='noopener noreferrer'>Pull Request #189305: Reapply &quot;Remove CUDA sync in torch.combinations to improve `torch.compile` support (#186595)&quot;</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: cuda, module: inductor, ciflow/inductor, ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Reapplies #186595 after Meta internal revert. Let me know if there are any failures that require fixing from my end. /cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @chauhang @aakhundov @coconutruben @jataylo...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188029' target='_blank' rel='noopener noreferrer'>Pull Request #188029: [dynamo] Add namespace for cell variables that collide with locals</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #178393 #179094 -&gt; #188029 #187631 #189306 Cell variables that share a name with a local variable are stored separately in localsplus in cpython. This distinction is lost in dynamo, where all variables are stored in symbolic_locals. This doesn&#x27;t matter for most purposes, but be...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188521' target='_blank' rel='noopener noreferrer'>Pull Request #188521: Fix OrderingBarrier additional_buffer_deps key mismatch in control_deps lowering</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#188513</span></span></td><td>triaged, open source, topic: not user facing, module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Summary Fix a key mismatch in control_deps_op_lowering that caused OrderingBarrier&#x27;s additional_buffer_deps to be silently dropped by the scheduler, breaking stream synchronization ordering. OrderingBarrier inherits from OperationBuffer, which has distinct buffer and operation names (assigned by register_buffer() an...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/183328' target='_blank' rel='noopener noreferrer'>Pull Request #183328: [special] Add arbitrary-order modified Bessel functions</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: cpu, triaged, open source, release notes: cpp, module: inductor, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Issue Partially addresses #76324. Summary Adds arbitrary-order modified Bessel functions: torch.special.modified_bessel_i(x, nu) torch.special.modified_bessel_k(x, nu) This follows the existing torch.special pointwise operator pattern with: ATen operator registration TensorIterator CPU/CUDA kernels CUDA Jiterator su...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/186927' target='_blank' rel='noopener noreferrer'>Pull Request #186927: [MPS] Gemv kernels</a></td><td>waiting on CI/check fix</td><td>108</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, topic: improvements, release notes: mps, ciflow/mps</td><td><div class='wide'>Gemv kernels. Draft till I put perf gains below on various machines and add tests. TODOs: Add tests Heuristics M2 base Heuristics M3 Ultra Heuristics M4 base Heuristics M5 Pro More heuristics (need help) Add perf benchmarks on M5 Pro Add perf benchmarks on M4 Add perf benchmarks on M3 Ultra Add perf benchmarks on M2...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/179094' target='_blank' rel='noopener noreferrer'>Pull Request #179094: [DO NOT MERGE] Add docker image for python 3.15</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, no-runner-experiments, ciflow/docker</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #178393 -&gt; #179094 #188029 #187631 #189306 Authored with Claude.</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/186252' target='_blank' rel='noopener noreferrer'>Pull Request #186252: [inductor] Fix truncdiv off-by-one on CUDA with _div_rn</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#184408</span></span></td><td>triaged, open source, ciflow/trunk, topic: not user facing, module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Fixes #184408 Triton&#x27;s approximate fp32 division can produce results slightly below the true quotient, causing trunc(a / b) to be off by one when the quotient is near an integer. Use _div_rn (IEEE round-to-nearest) instead of plain div, matching the existing fix for the floor path. Change: trunc(div(a, b)) -&gt; trunc(...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189313' target='_blank' rel='noopener noreferrer'>Pull Request #189313: Support aten::cumprod ONNX export via CumProd (opset 26)</a></td><td>draft/noise</td><td>61</td><td><span class='chip-row'><span class='chip'>#102948</span></span></td><td>open source, release notes: onnx</td><td><div class='wide'>Fixing an Issue Before submitting, please review: The Ultimate Guide to PyTorch Contributions AI-Assisted Development policy Summary torch.cumprod could not be exported to ONNX (UnsupportedOperatorError: aten::cumprod). ONNX added the CumProd operator in opset 26, so this registers an implementation in the dynamo ex...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189286' target='_blank' rel='noopener noreferrer'>Pull Request #189286: Fix DeviceContext mode leaks from checkpoint recompute and set_default_device restore</a></td><td>ready for maintainer decision</td><td>80</td><td><span class='chip-row'><span class='chip'>#189133</span></span></td><td>release notes: autograd, topic: not user facing, module: inductor, ciflow/inductor, ciflow/torchtitan, mergedog, make tests great again</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189286 #188573 #188299 #188100 Fixes #189133 This PR addresses flaky tests by fixing some DeviceContext mode leaks that may randomly affect other tests (e.g. the vmap test disabled by #189133). There are 3 issues addressed by this PR: TestAutograd and TestCompiledAutogradOp...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189306' target='_blank' rel='noopener noreferrer'>Pull Request #189306: [dynamo, 3.15] Fix test_bytecode_utils</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, topic: not user facing, module: dynamo, ciflow/inductor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #178393 #179094 #188029 #187631 -&gt; #189306 Two changes to update this for 3.15 co_lnotab has been deprecated since 3.10, and was removed in 3.15. It was replaced by co_lines, which we can use instead LOAD_COMMON_CONSTANT can load None in 3.15, so is now used for functions that...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189297' target='_blank' rel='noopener noreferrer'>Pull Request #189297: [CI] Pin quack to torch&#x27;s vendored SHA to fix B200 smoke cutlass import crash</a></td><td>draft/noise</td><td>13</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, topic: not user facing, ciflow/b200</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189297 The B200 smoke job&#x27;s test_flex_flash::test_hierarchical_indexing_4d crashes at runtime with ModuleNotFoundError: No module named &#x27;cutlass._mlir_helpers&#x27;. The compiled flex-attention CuTeDSL kernel imports flash_attn.cute, which pulls in quack, whose recent releases d...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189319' target='_blank' rel='noopener noreferrer'>Pull Request #189319: Enable flake8-bugbear B007 (unused loop control variable)</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, release notes: quantization, release notes: releng, ciflow/mps, module: inductor, module: dynamo, ciflow/inductor, release notes: distributed (dtensor), module: compiled autograd, ciflow/h100-symm-mem, ciflow/inductor-pallas, ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Summary Enables flake8-bugbear B007 (unused loop control variable), one of the remaining bugbear codes still suppressed in the ignore list of pyproject.toml. Part of #106571. This removes B007 from the ignore list and fixes all 169 violations across 110 files so the lint is enforced going forward. Approach Most fixe...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188600' target='_blank' rel='noopener noreferrer'>Pull Request #188600: [ROCm][inductor] Support grouped GEMM Triton lowering</a></td><td>waiting on contributor</td><td>43</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, triaged, open source, release notes: rocm, release notes: linalg_frontend, module: inductor, ciflow/inductor, release notes: inductor, ciflow/rocm-mi300, ciflow/h100, ciflow/b200, ciflow/torchtitan</td><td><div class='wide'>Summary Allow Inductor&#x27;s grouped GEMM Triton lowering on ROCm instead of gating it to NVIDIA SM90+ only. Match ROCm ATen extern output layout by using contiguous grouped GEMM output strides on HIP while preserving CUDA&#x27;s TMA-aligned padded strides. Enable existing grouped GEMM compile tests on ROCm. Test plan python...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/181781' target='_blank' rel='noopener noreferrer'>Pull Request #181781: [dynamo] turn canonicalize_output_graph_node_order on by default</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #181781 #188176 #188175 #181780 cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @kadeng @chauhang @amjames @Lucaskabela @jataylo @azahed98</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188137' target='_blank' rel='noopener noreferrer'>Pull Request #188137: [inductor] Decompose shard_dim_alltoall via regular decomposition</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>triaged, open source, ciflow/trunk, module: inductor, ciflow/inductor, release notes: distributed (dtensor), release notes: inductor, ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Summary: add an opt-in regular Inductor decomposition for _dtensor.shard_dim_alltoall into layout ops plus _c10d_functional.all_to_all_single/wait_tensor decompose only when the dims are valid, the dtype is supported, the process group size is resolvable, and the local shard dim is evenly divisible by the process gr...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189312' target='_blank' rel='noopener noreferrer'>Pull Request #189312: [CUDA][cuBLAS] Change cuBLAS default workspace size for SM 11.0 to 32 MiB</a></td><td>waiting on CI/check fix</td><td>108</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: cuda, module: cublas, open source, topic: not user facing</td><td><div class='wide'>Thor is closest to datacenter blackwell, and current defaults cause CUBLAS_STATUS_NOT_SUPPORTED in e.g., python test/test_linalg.py TestLinalgCUDA.test_matmul_mv_cuda_float32 I assume there are basically internal users of SM 11.0 that would complain? CC @ngimel authored with codex cc @ptrblck @msaroufim @tinglvv @nW...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189301' target='_blank' rel='noopener noreferrer'>Pull Request #189301: [ROCm] Bump AOTriton to 0.13b</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: rocm, open source, topic: not user facing, ciflow/rocm-mi300</td><td><div class='wide'>Notable new features compared with 0.12.1b: Debug printing can be enabled with env var AOTRITON_DEBUG_LEVEL, without re-compiling We use the same logging level as of AMD_LOG_LEVEL CAVEAT: AOTriton itself does not read AMD_LOG_LEVEL Set AOTRITON_DEBUG_LEVEL=5 to print everything BREAKING .aks2 files are packed into u...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189022' target='_blank' rel='noopener noreferrer'>Pull Request #189022: [dynamo] Support itertools.count keyword args and repr</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>open source, module: dynamo, ciflow/inductor, release notes: dynamo, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #185424 #189053 #189052 -&gt; #189022 #189051 #189021 Two itertools.count object-protocol gaps, both mirroring CPython Modules/itertoolsmodule.c: Construction: the count branch had a not kwargs guard, so the keyword forms count(start=..)/count(step=..) fell through to a graph brea...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188006' target='_blank' rel='noopener noreferrer'>Pull Request #188006: [ROCm] Fix torch.pdist correctness on ROCm; re-enable test_pdist_norm_large</a></td><td>waiting on contributor</td><td>53</td><td><span class='chip-row'><span class='chip'>#168868</span></span></td><td>module: rocm, triaged, open source, release notes: rocm</td><td><div class='wide'>Fixes #168868 Investigation summary Test environment PyTorch version: 2.13.0a0+git75d18bb Hip version: 7.2.53211 GPU 0 name: AMD Instinct MI355X Command to reproduce $ PYTORCH_TEST_WITH_ROCM=1 pytest test/test_torch.py -k &quot;test_pdist_norm_large&quot; -v Default behaviour test/test_torch.py::TestTorchDeviceTypeCPU::test_p...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189092' target='_blank' rel='noopener noreferrer'>Pull Request #189092: [dynamo] reduce call_obj_hasattr overrides</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189092 #189091 #187707 #187532 #187531 #187469 #187468 Fix object_generic_getattr step 7 to raise ObservedAttributeError instead of _UnhandledDescriptorError when an attribute genuinely doesn&#x27;t exist after exhaustive MRO search and getattr fallback. This is semantically cor...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187707' target='_blank' rel='noopener noreferrer'>Pull Request #187707: [dynamo] remove GetAttrVariable</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 #189091 -&gt; #187707 #187532 #187531 #187469 #187468 GetAttrVariable was a catch-all fallback that deferred attribute access by wrapping it in a proxy. It made it impossible to distinguish &quot;attribute not found&quot; from &quot;attribute found but unhandled,&quot; masking real errors (e....</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189091' target='_blank' rel='noopener noreferrer'>Pull Request #189091: [dynamo] guard getattr() builtin constant-fold fallback</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 -&gt; #189091 #187707 #187532 #187531 #187469 #187468 GetAttrBuiltinVariable.call_function has a constant-fold fallback that fires when getattro_impl raises Unsupported and all args are python constants. It was calling VariableTracker.build(tx, result) without a source, so...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188978' target='_blank' rel='noopener noreferrer'>Pull Request #188978: swap isinstance(t, FakeTensor) to is_fake</a></td><td>waiting on CI/check fix</td><td>73</td><td><span class='chip-row'><span class='chip'>#188694</span></span></td><td>ciflow/trunk, module: inductor, module: dynamo, ciflow/inductor, release notes: export, release notes: inductor (aoti), ciflow/torchtitan, ciflow/docker</td><td><div class='wide'>closed #188694 bc need to stack smth on top copying pr summary over... in preparation for C++ FakeTensor migration, i am landing this change first to change isinstance(t, FakeTensor) to is_fake_tensor and adding a check for C++ FakeTensor to the is_fake_tensor function. but since C++ faketensor is not being used yet...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187531' target='_blank' rel='noopener noreferrer'>Pull Request #187531: [dynamo] enable generic attribute mutation on non-UDOV VTs</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 #189091 #187707 #187532 -&gt; #187531 #187469 #187468 Adds a get_value_for_setattr() opt-in hook on the base VariableTracker that enables attribute mutation (setattr/getattr/hasattr) for VTs beyond UserDefinedObjectVariable. The mechanism: VTs override get_value_for_setatt...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187532' target='_blank' rel='noopener noreferrer'>Pull Request #187532: [dynamo] fix __getattr__ and __getattribute__ dunder semantics</a></td><td>draft/noise</td><td>51</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 #189091 #187707 -&gt; #187532 #187531 #187469 #187468 Previously, both obj.__getattr__(&quot;x&quot;) and obj.__getattribute__(&quot;x&quot;) in call_method dispatched through getattro_impl, which does full GenericGetAttr including the __getattr__ fallback. This was semantically wrong for bot...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187468' target='_blank' rel='noopener noreferrer'>Pull Request #187468: [dynamo] add break_graph_if_unsupported to LOAD_ATTR</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, module: dynamo, ciflow/inductor, keep-going, ciflow/dynamo, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 #189091 #187707 #187532 #187531 #187469 -&gt; #187468 LOAD_ATTR previously relied on the step() fallback for graph breaks, which restarts from the most recent empty-stack checkpoint. This is less precise than other opcodes like STORE_ATTR and CALL that use break_graph_if_u...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/187469' target='_blank' rel='noopener noreferrer'>Pull Request #187469: [dynamo] extract UDOV hooks: lookup_instance_dict and call_getattr_fallback</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, module: dynamo, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189092 #189091 #187707 #187532 #187531 -&gt; #187469 #187468 Extract two chunks of UDOV&#x27;s generic_getattr into hook overrides, matching the hook interface on base VariableTracker: lookup_instance_dict (step 3): instance dict lookup including side-effects awareness (INSTANCE_DICT...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/181780' target='_blank' rel='noopener noreferrer'>Pull Request #181780: [dynamo] set canonicalize_output_graph_node_order=True for export tests</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, module: dynamo, ciflow/inductor, keep-going, ciflow/torchtitan, ciflow/dtensor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #181781 #188176 #188175 -&gt; #181780 cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @kadeng @chauhang @amjames @jataylo @azahed98</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188175' target='_blank' rel='noopener noreferrer'>Pull Request #188175: [dynamo] fix autograd cache and split_module tests under canonicalization</a></td><td>ready for maintainer decision</td><td>70</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, module: dynamo, ciflow/inductor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #181781 #188176 -&gt; #188175 #181780 Two tests opted out of canonicalize_output_graph_node_order because they were sensitive to placeholder ordering. This PR fixes both so the opt-outs can be removed. test_multi_graph_specialization failed because canonicalization reorders placeh...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189292' target='_blank' rel='noopener noreferrer'>Pull Request #189292: Fix dead ExecuTorch XNNPACK doc link in mobile_optimizer</a></td><td>ready for maintainer decision</td><td>70</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>ciflow/trunk, topic: not user facing</td><td><div class='wide'>Stack from ghstack (oldest at bottom): -&gt; #189292 The nightly Link checks / lint-urls / lint job fails on a genuine 404: the XNNPACK backend doc referenced from mobile_optimizer.md was renamed by ExecuTorch from native-delegates-executorch-xnnpack-delegate.html (now 404) to backends-xnnpack.html (200). Point the lin...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188176' target='_blank' rel='noopener noreferrer'>Pull Request #188176: [dynamo] fix test_perf.py tests under canonicalization</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, module: inductor, ciflow/inductor</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #181781 -&gt; #188176 #188175 #181780 Two tests in test_perf.py opted out of canonicalize_output_graph_node_order unnecessarily. This removes both opt-outs. test_cat_pointwise passes deterministically with canonicalization -- the numel counts are unchanged because canonicalization...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189190' target='_blank' rel='noopener noreferrer'>Pull Request #189190: flex_gemm: extend feed-main to trailing pointwise and axis-1 fragments</a></td><td>waiting on CI/check fix</td><td>63</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 #189314 -&gt; #189190 #189188 #188739 #188112 #188470 #188469 #188468 The feed-main matcher now recurses through trailing shape-preserving pointwise nodes after the un-grouping view, so quant casts like .to(float8_e4m3fn) compose with physical axis-0 feeds. Axis-1...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/189188' target='_blank' rel='noopener noreferrer'>Pull Request #189188: flex_gemm: support scalar captured epilogue args</a></td><td>ready for maintainer decision</td><td>45</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 #189314 #189190 -&gt; #189188 #188739 #188112 #188470 #188469 #188468 Add a fourth captured-epilogue-arg kind &quot;scalar&quot; beside tile/row/col for [1, 1] read-only tensors. This unlocks native float8 tensorwise quant epilogues, e.g. (acc * s).to(torch.float8_e4m3fn) wi...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188739' target='_blank' rel='noopener noreferrer'>Pull Request #188739: flex_gemm: add quant lowerings</a></td><td>draft/noise</td><td>13</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 #189314 #189190 #189188 -&gt; #188739 #188112 #188470 #188469 #188468</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188112' target='_blank' rel='noopener noreferrer'>Pull Request #188112: flex_gemm: feed local reductions into epilogues</a></td><td>draft/noise</td><td>13</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>topic: not user facing, skip-pr-sanity-checks, module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 #189314 #189190 #189188 #188739 -&gt; #188112 #188470 #188469 #188468 Let dense aten.mm FlexGEMM epilogues feed a grouped local reduction back into the main output expression (and optionally store it), e.g. acc / acc.view(-1, group, N).sum(1) or centered-mean/varia...</div></td></tr><tr><td><a href='https://github.com/pytorch/pytorch/pull/188470' target='_blank' rel='noopener noreferrer'>Pull Request #188470: flex_gemm: extend local reduce aux groups</a></td><td>draft/noise</td><td>13</td><td><span class='chip-row'><span class='muted'>none</span></span></td><td>module: inductor, ciflow/inductor, ciflow/torchtitan</td><td><div class='wide'>Stack from ghstack (oldest at bottom): #189316 #189315 #189314 #189190 #189188 #188739 #188112 -&gt; #188470 #188469 #188468 Extend compressed local-reduce aux outputs beyond one 32-lane TensorSSA fragment: axis-1 groups above the fragment width (CTA-subtile groups such as 64/128) and axis-0 M-groups now lower through...</div></td></tr></tbody></table></div></section></div>