Change
397d8ac
397d8acb9cf8cb9426c442cccf1e644549f43dce · commit on GitHub
pytorch-blog-feed: changed (281550 bytes, HTTP 200)
raw/pytorch-blog-feed/response.xml modified
- Source
- pytorch-blog-feed
- Lines added
- +542
- Lines removed
- -137
- Stored bytes at this commit
- 281,550
- Timestamp
- origin
- Raw artifact at this commit
- raw/pytorch-blog-feed/response.xml
Recorded headers
| observed_at | 2026-09-03T04:33:46.482Z |
|---|---|
| origin_date | 2026-09-03T03:17:19.000Z |
| status | 200 |
| final URL | https://pytorch.org/blog/feed/ |
| etag | "cd07ded1ceccb44cdb0d905d5ee75cc4" |
| last-modified | Wed, 02 Sep 2026 19:13:19 GMT |
| date | Thu, 03 Sep 2026 04:33:46 GMT |
| age | 4587 |
| cache-control | public, max-age=60, s-maxage=43200, stale-while-revalidate=86400, stale-if-error=604800 |
| cf-cache-status | null |
| content-encoding | null |
| content-length | 281550 |
@
@@ -12,13 +12,13 @@ <atom:link href="https://pytorch.org/blog/feed/" rel="self" type="application/rss+xml" /> <link>https://pytorch.org</link> <description></description>-
<lastBuildDate>Fri, 28 Aug 2026 21:30:18 +0000</lastBuildDate>+
<lastBuildDate>Wed, 02 Sep 2026 18:41:48 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod> hourly </sy:updatePeriod> <sy:updateFrequency> 1 </sy:updateFrequency>-
<generator>https://wordpress.org/?v=7.0.3</generator>+
<generator>https://wordpress.org/?v=7.1</generator><image> <url>https://pytorch.org/wp-content/uploads/2024/10/cropped-favicon-32x32.webp</url>@
@@ -28,6 +28,545 @@ <height>32</height></image> <item>+
<title>PyTorch 2.14 Release Blog</title>+
<link>https://pytorch.org/blog/pytorch-2-14-release-blog/</link>+
+
<dc:creator><![CDATA[PyTorch Foundation]]></dc:creator>+
<pubDate>Wed, 02 Sep 2026 18:41:48 +0000</pubDate>+
<category><![CDATA[Announcements]]></category>+
<category><![CDATA[Blog]]></category>+
<guid isPermaLink="false">https://pytorch.org/?p=161911</guid>+
+
<description><![CDATA[We are excited to announce the release of PyTorch® 2.14 (release notes)! The PyTorch 2.14 release features the following changes: NVGEMM brings CuTeDSL-generated CUTLASS kernels to Inductor, with epilogue fusion,...]]></description>+
<content:encoded><![CDATA[<p><span style="font-weight: 400;">We are excited to announce the release of PyTorch® 2.14 (</span><a href="https://github.com/pytorch/pytorch/releases/tag/v2.14.0"><span style="font-weight: 400;">release notes</span></a><span style="font-weight: 400;">)!</span><s…+
</span></p>+
<p><span style="font-weight: 400;">The PyTorch 2.14 release features the following changes:</span></p>+
<ul>+
<li style="font-weight: 400;" aria-level="1"><b>NVGEMM brings CuTeDSL-generated CUTLASS kernels to Inductor,</b><span style="font-weight: 400;"> with epilogue fusion, scaled and NVFP4 GEMM, and grouped-reduction epilogues autotuned alongside Triton and ATen</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>A new nccl2 backend for PyTorch Distributed,</b><span style="font-weight: 400;"> ported from torchcomms, implementing the full collective contract with nonblocking communicators and eager communicator splitting</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>Fault tolerance becomes a first-class c10d concept,</b><span style="font-weight: 400;"> with in-place process-group reconfiguration, one-sided RMA windows, and a Flight Recorder that works for any backend rather than only NCCL</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>Apple Silicon gains native linear algebra,</b><span style="font-weight: 400;"> including Jacobi-kernel SVD, eigh, QR and Cholesky, alongside a five-part reduction rewrite and a further MPSGraph to Metal kernel migration</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>torch.switch generalizes torch.cond to multi-way branching,</b><span style="font-weight: 400;"> and torch.while_loop can now be captured in a CUDA graph</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>Declarative dynamic shapes via @dynamic_spec,</b><span style="font-weight: 400;"> shared across torch.compile, torch.export and make_fx</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>Broader platform support</b><span style="font-weight: 400;">: ROCm 7.14 wheels are produced from the TheRock pip SDK, Intel XPU adds native graph capture, and Inductor targets Rubin (sm_107)</span></li>+
<li style="font-weight: 400;" aria-level="1"><b>Experimental torch.compile support for complex-valued tensors:</b><span style="font-weight: 400;"> Opt-in support decomposes supported complex operations into real and imaginary computations, enabling compiler backends to optimize more complex-number w…+
</ul>+
<p><span style="font-weight: 400;">This release is composed of 2,995 commits from 487 contributors since PyTorch 2.13. We want to sincerely thank our dedicated community for your contributions. As always, we encourage you to try these out and report any issues as we improve 2.14. More information ab…+
</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">Bring any questions you may have about this release to our Q&A Webinar. It will be on Thursday, September 17, 2026 and will feature Andrey Talman (Meta), Natalia Gimelshein (Meta), Joe Spisak (Reflection AI), and Chris Gottbrath (Gottbrath Tech, moderator) …+
<p><span style="font-weight: 400;">Connect with the global PyTorch community at the upcoming </span><a href="https://hubs.la/Q04vXWRN0"><span style="font-weight: 400;">PyTorch Conference North America</span></a><span style="font-weight: 400;"> October 20-21, 2026, in San Jose, CA. Explore what’s new…+
<p><span style="font-weight: 400;">Throughout the 2.x series, PyTorch has been evolving from a research-first framework into a unified, hardware-agnostic platform for production training and inference at scale. </span><a href="https://pytorch.org/blog/pytorch-2-12-release-blog/"><span style="font-we…+
<p><span style="font-weight: 400;">PyTorch 2.14 builds directly on those threads. The CuTeDSL path matures into NVGEMM, a full GEMM backend with epilogue fusion and low-precision support. torchcomms lands in-tree as the nccl2 backend, with fault-tolerant reconfiguration and one-sided RMA windows rai…+
<p><span style="font-weight: 400;">PyTorch 2.14 delivers meaningful improvements across performance, reliability, and hardware support. The release introduces NVGEMM, a new GPU math backend that automatically selects the fastest kernel for matrix operations — including support for lower-precision fo…+
<p><span style="font-weight: 400;">Apple Silicon users benefit from native linear-algebra routines (SVD, QR, Cholesky, and more) and a broad migration to hand-tuned Metal kernels that cut overhead on Mac GPUs. On the compiler side, new control-flow primitives (torch.switch, torch.while_loop) give mo…+
<p><span style="font-weight: 400;">Platform support expands to AMD ROCm 7.14, Intel XPU native graph capture, and NVIDIA’s next-generation Rubin architecture. Under the hood, the compiler now overlaps communication with computation by default, batches small GPU kernels more intelligently, and …+
<h2><span style="font-weight: 400;">Performance Improvements</span></h2>+
<h3><span style="font-weight: 400;">Large MPS Op Migration to Native Metal</span></h3>+
<p><span style="font-weight: 400;">Continuing the migration begun in 2.13, a further set of MPS operators moved off Apple’s MPSGraph framework onto hand-written Metal compute kernels, including </span><span style="font-weight: 400;"><code>index_add</code>, <code>index_select</code>, <code>argm…+
<p>Reductions received a dedicated five-part rewrite covering full reductions, inner-dimension reductions, strided and batched outer reductions, small-dimension and narrow kernels, and the <code>argmax</code> and <code>argmin</code> split-K paths. The final part migrates <code>min</code> and <code>m…+
<p><span style="font-weight: 400;">The native Metal path eliminates MPSGraph’s per-op compilation cost and gives PyTorch direct control over thread dispatch and memory access patterns, reducing kernel launch latency across common training and inference workloads on Apple Silicon.</span></p>+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/191101"><span style="font-weight: 400;">#191101</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/191097"><span style="font-weight: 400;">#191097</span></a…+
<h3><span style="font-weight: 400;">MPS Memory and Copy Paths</span></h3>+
<p><span style="font-weight: 400;">Long-running decode workloads grew the MPS caching allocator’s reserved footprint faster than necessary. The allocator now buckets large allocations to bound reserved memory and uses placement heaps to reduce fragmentation.</span></p>+
<p><span style="font-weight: 400;">Host and device transfers also got shorter paths. CPU to MPS copies blit directly from pinned buffers with event-deferred reclaim, contiguous same-dtype copies use a compute kernel instead of a graph, elementwise ops are vectorized on inner-contiguous sliced views,…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/187441"><span style="font-weight: 400;">#187441</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/190438"><span style="font-weight: 400;">#190438</span>…+
<h3><span style="font-weight: 400;">F.linear Decode Path on MPS</span></h3>+
<p><span style="font-weight: 400;">Single-token decode passes a </span><span style="font-weight: 400;"><code>[B, 1, K]</code></span><span style="font-weight: 400;"> activation to </span><span style="font-weight: 400;"><code>F.linear</code></span><span style="font-weight: 400;">, a shape that was fal…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/189855"><span style="font-weight: 400;">#189855</span></a><span style="font-weight: 400;"> by Giovanni Versiglioni, Apple, </span><a href="https://github.com/pytorch/pytorch/pull/186927"><span style="font-…+
<h3><span style="font-weight: 400;">Compute and Communication Overlap On By Default in Inductor</span></h3>+
<p><span style="font-weight: 400;">Inductor’s </span><span style="font-weight: 400;"><code>simple_overlap</code></span><span style="font-weight: 400;"> reordering, which interleaves collectives with independent compute so communication is not left on the critical path, is now enabled by defaul…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/184240"><span style="font-weight: 400;">#184240</span></a><span style="font-weight: 400;">, #</span><a href="https://github.com/pytorch/pytorch/pull/184235"><span style="font-weight: 400;">184235</span></a…+
<h3><span style="font-weight: 400;">reorder_for_locality Opt-In for Training Graphs</span></h3>+
<p><span style="font-weight: 400;"><code>reorder_for_locality</code>,</span><span style="font-weight: 400;"> Inductor’s post-grad locality reordering pass, can now be opted into on training graphs via the new reorder_for_locality_in_training config (default off), where before it only ran on in…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/186643"><span style="font-weight: 400;">#186643</span></a><span style="font-weight: 400;"> by @reger-men)</span></p>+
<h3><span style="font-weight: 400;">Combo Kernels and Reductions in Inductor</span></h3>+
<p><span style="font-weight: 400;">Combo kernels batch many small kernels into one launch, but a single very large reduction in the batch would previously shape the whole kernel. Large reductions are now split out of combo partitioning, combo reductions get dynamic </span><span style="font-weight: 4…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/186668"><span style="font-weight: 400;">#186668</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/186957"><span style="font-weight: 400;">#186957</span></a…+
<h3><span style="font-weight: 400;">Dynamo Per-Call Overhead</span></h3>+
<p> </p>+
<p>For models with many small compiled regions, fixed per-call cost matters more than graph quality. This release trims that cost in several places. <code>compile_wrapper</code> avoids <code>DispatchKeySet</code> pybind churn on every call, <code>torch._dynamo.disable</code> gets a cheaper path, and…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/190390"><span style="font-weight: 400;">#190390</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/190392"><span style="font-weight: 400;">#190392</span></a…+
<h3><span style="font-weight: 400;">Eager Dispatch and CPU Kernels</span></h3>+
<p>Several eager-mode hot paths got cheaper. PyObject dispatch is optimized, AOTAutograd avoids an expensive <code>Tensor.detach()</code> when saving graph-input views for backward, autograd stops copying <code>at::Tensor</code> when the profiler is off, <code>addmm</code> avoids a device-to-device …+
<p>These targeted fixes reduce the per-operation tax in eager mode, tightening the performance floor so that common operations like linear layers, autograd bookkeeping, and statistical aggregations don’t carry unnecessary overhead. They keep PyTorch’s default development experience fast …+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/187949"><span style="font-weight: 400;">#187949</span></a> <a href="https://github.com/pytorch/pytorch/pull/189759"><span style="font-weight: 400;">#189759</span></a><span style="font-weight: 400;"> and </…+
<h2><span style="font-weight: 400;">Core Features</span></h2>+
<h3><span style="font-weight: 400;">torch.linalg.polar and torch.linalg.matrix_sqrth</span></h3>+
<p><span style="font-weight: 400;">Two additions to </span><span style="font-weight: 400;"><code>torch.linalg</code>. <code>torch.linalg.polar</code></span><span style="font-weight: 400;"> computes the polar decomposition using cuSOLVER’s QDWH algorithm, with a backward formula on CPU, CUDA an…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/185837"><span style="font-weight: 400;">#185837</span></a><span style="font-weight: 400;"> by Simon Layton, Meta, </span><a href="https://github.com/pytorch/pytorch/pull/189732"><span style="font-weight: 4…+
<h3><span style="font-weight: 400;">Autograd Extension Points</span></h3>+
<p>Three additions give more control over how the autograd graph is built and inspected. <code style="color: #097536; background: none; padding: 0;">torch.autograd.graph.node_creation_hook</code> fires as each autograd node is created, letting tools attach metadata or register hooks at graph-constru…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/189284"> <span style="font-weight: 400;">#189284</span></a><span style="font-weight: 400;"> by Edward Yang, Meta,</span><a href="https://github.com/pytorch/pytorch/pull/189634"> <span style="font-weight…+
<h3><span style="font-weight: 400;">torch.switch Higher-Order Op</span></h3>+
<p><span style="font-weight: 400;"><code>torch.cond</code></span><span style="font-weight: 400;"> expresses a two-way branch, so an n-way dispatch had to be written as nested conditionals, which grows the traced graph and obscures intent. </span><span style="font-weight: 400;"><code>torch.switch</co…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/182902"><span style="font-weight: 400;">#182902</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/188374"><span style="font-weight: 400;">#188374</span>…+
<h3><span style="font-weight: 400;">SDPA Fused Backends for Rank-3 Inputs</span></h3>+
<p><span style="font-weight: 400;">Scaled dot-product attention now dispatches to the fused CUDA backends for rank-3 inputs instead of falling back to the math path, so callers who pass unbatched or already-flattened tensors get the fused kernels without reshaping. The fix closes a common performanc…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/192271"><span style="font-weight: 400;">#192271</span></a><span style="font-weight: 400;"> by Driss Guessous, Meta)</span></p>+
<h3><span style="font-weight: 400;">Experimental torch.compile support for complex-valued tensors</span></h3>+
<p><span style="font-weight: 400;">torch.compile support for programs using complex-valued tensors. Supported complex operations are decomposed into real-valued computations that compiler backends can optimize. This enables more complex-number workloads including signal processing, scientific comput…+
<p><span style="font-weight: 400;">(PRs </span><a href="https://github.com/pytorch/pytorch/pull/167621"><span style="font-weight: 400;">#167621</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/169832"><span style="font-weight: 400;">#169832</span…+
<h3><span style="font-weight: 400;">Smaller API Additions</span></h3>+
<p><span style="font-weight: 400;">A number of smaller public additions landed this release.</span></p>+
<ul>+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>torch.utils.checkpoint.checkpoint</code></span><span style="font-weight: 400;"> accepts a decorator and curried calling convention in eager (</span><a href="https://github.com/pytorch/pytorch/pull/189411"><span style=…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Read-only DLPack export and </span><span style="font-weight: 400;"><code>ReadOnlyTensorWrapper</code></span><span style="font-weight: 400;">, so consumers can be handed a tensor they must not mutate (</span><a href="https:/…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>Generator.philox_state</code></span><span style="font-weight: 400;"> exposes Philox RNG state reservation to Python (</span><a href="https://github.com/pytorch/pytorch/pull/191019"><span style="font-weight: 400;">#191…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>torch.accelerator</code></span><span style="font-weight: 400;"> gains </span><span style="font-weight: 400;"><code>initial_seed</code>, <code>get_rng_state</code></span><span style="font-weight: 400;"> and </span><spa…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>LBFGS</code></span><span style="font-weight: 400;"> gains </span><span style="font-weight: 400;"><code>maximize</code></span><span style="font-weight: 400;"> and is a no-op on an empty parameter group (</span><a href=…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>linear_cross_entropy</code></span><span style="font-weight: 400;">, introduced in 2.13, supports probability targets on the chunked path (</span><a href="https://github.com/pytorch/pytorch/pull/187053"><span style="fo…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><code>c10::utils::get_env</code></span><span style="font-weight: 400;"> and </span><span style="font-weight: 400;"><code>set_env</code></span><span style="font-weight: 400;"> are exposed to Python (</span><a href="https://g…+
</ul>+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<h3><span style="font-weight: 400;">Python 3.15 Support and Torchvision ABI Stability – Release Engineering</span></h3>+
<p><span style="font-weight: 400;">PyTorch 2.14 adds binary support for Python 3.15, including the free-threaded (no-GIL) build, 3.15t across all platforms. Wheels are published for Linux on x86_64 and aarch64, Windows, and macOS on Apple silicon, spanning the CPU, CUDA, ROCm, and XPU builds. Also t…+
<p><span style="font-weight: 400;">TorchVision is now ABI stable w.r.t. torch 2.14! This means that torchvision 0.29 will be compatible with future versions of torch: 2.15, 2.16, etc. You won’t need to install a new version of TorchVision when you upgrade torch. As a result, we might stop releasing …+
<h3><span style="font-weight: 400;">Installation</span></h3>+
<p><span style="font-weight: 400;">Python 3.15 and 3.15t wheels are not published to PyPI — they are available to download only via download.pytorch.org, using any of the following commands:</span></p>+
<p><span style="font-weight: 400;"> # CPU</span></p>+
<p><span style="font-weight: 400;"> pip3 install torch –index-url https://download.pytorch.org/whl/cpu</span></p>+
<p><span style="font-weight: 400;"> # CUDA (substitute the CUDA version, e.g. cu126 / cu130)</span></p>+
<p><span style="font-weight: 400;"> pip3 install torch –index-url https://download.pytorch.org/whl/cu130</span></p>+
<p><span style="font-weight: 400;"> # ROCm (substitute the ROCm version)</span></p>+
<p><span style="font-weight: 400;"> pip3 install torch –index-url https://download.pytorch.org/whl/rocm7.14</span></p>+
<p><span style="font-weight: 400;"> # XPU</span></p>+
<p><span style="font-weight: 400;"> pip3 install torch –index-url https://download.pytorch.org/whl/xpu</span></p>+
<p><span style="font-weight: 400;"> The same commands install the free-threaded 3.15t build when run under a free-threaded interpreter.</span></p>+
<p><span style="font-weight: 400;">The same applies to the free-threaded build. Install into a 3.15t interpreter and pip will resolve the cp315t wheels automatically.</span></p>+
<h3><span style="font-weight: 400;">torch.compile is not yet supported on Python 3.15</span></h3>+
<p><span style="font-weight: 400;">Python 3.15 support in 2.14 is eager-only. Calling torch.compile under Python 3.15 raises a RuntimeError rather than falling back silently, so the limitation surfaces immediately rather than as a silent performance loss. If your workload depends on torch.compile, s…+
<p><span style="font-weight: 400;">Dynamo support for 3.15 is in active development, with bytecode and symbolic-conversion handling already landed for the new interpreter. Progress is tracked in </span><a href="https://github.com/pytorch/pytorch/issues/184352"><span style="font-weight: 400;">pytorch…+
<h2><span style="font-weight: 400;">Distributed Training</span></h2>+
<h3><span style="font-weight: 400;">nccl2 Backend</span></h3>+
<p>torchcomms arrived in 2.13 as a communications backend integrated into PyTorch Distributed’s CI and device-mesh paths. In 2.14 the APIs landed in-tree with a new <code>nccl2</code> c10d backend, gated behind <code>USE_C10D_NCCL</code>, implementing the full <code>Work</code> contract on top…+
<p>API Unstable</p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/188582"><span style="font-weight: 400;">#188582</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/189359"><span style="font-weight: 400;">#189359</span></a…+
<h3><span style="font-weight: 400;">Fault-Tolerant Collectives in c10d</span></h3>+
<p><span style="font-weight: 400;">When a rank fails in a large job, the usual recovery is to tear down the process group and restart, which discards warm state across the whole cluster. </span><span style="font-weight: 400;"><code>Backend</code></span><span style="font-weight: 400;"> and </span><sp…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/186298"><span style="font-weight: 400;">#186298</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/186300"><span style="font-weight: 400;">#186300</span></a…+
<h3><span style="font-weight: 400;">One-Sided (RMA) Window APIs</span></h3>+
<p><span style="font-weight: 400;"><code>Backend</code> and <code>ProcessGroup</code></span><span style="font-weight: 400;"> gain one-sided window interfaces, giving remote-memory-access semantics alongside the existing two-sided collectives. One-sided operations let a rank read or write peer memory…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/186299"><span style="font-weight: 400;">#186299</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/189360"><span style="font-weight: 400;">#189360</span>…+
<h3><span style="font-weight: 400;">Backend-Agnostic Flight Recorder</span></h3>+
<p><span style="font-weight: 400;">Flight Recorder, the collective trace buffer used to diagnose hangs and mismatched collectives, was tied to NCCL. </span><span style="font-weight: 400;"><code>FlightRecorderHook</code></span><span style="font-weight: 400;"> records through <code>ProcessGroup</code>…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/189363"><span style="font-weight: 400;">#189363</span></a><span style="font-weight: 400;"> by Tristan Rice, Meta, </span><a href="https://github.com/pytorch/pytorch/pull/185010"><span style="font-weight: 4…+
<h3><span style="font-weight: 400;">Pluggable Distributed Backends</span></h3>+
<p><span style="font-weight: 400;">Adding a communications backend previously meant patching c10d. Backends can now register through Python entry points, backend strings are auto-qualified, and implementation accessors are exposed. We’ve brought the </span><span style="font-weight: 400;"><code…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/187388"><span style="font-weight: 400;">#187388</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/186853"><span style="font-weight: 400;">#186853</span></a…+
<h3><span style="font-weight: 400;">torch.distributed API improvements: set_timeout, per-op timeouts, get_backend_impl, hooks, weights_only=True, *_single</span></h3>+
<p>We’ve made a whole host of improvements to the torch.distributed API which allow for more control as well as cleaning up some inconsistencies. You can change a process group’s collective timeout after initialization — extending it around a slow checkpoint load, or shortening it so a w…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/187387"><span style="font-weight: 400;">#187387</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/187693"><span style="font-weight: 400;">#187693</span>…+
<h3><span style="font-weight: 400;">DTensor Single-Dim Sharding Strategies</span></h3>+
<p>DTensor’s sharding rules were historically written per operator against the whole device mesh, so each rule had to enumerate every combination of placements across all mesh dimensions — long to write and easy to get subtly wrong once the mesh had more than one dimension. This release contin…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/186667"> <span style="font-weight: 400;">#186667</span></a><span style="font-weight: 400;">,</span><a href="https://github.com/pytorch/pytorch/pull/179203"> <span style="font-weight: 400;">#179203</span></a…+
<h3><span style="font-weight: 400;">Symmetric Memory: NCCL backend fixes and allocation layout</span></h3>+
<p> </p>+
<p>Symmetric memory’s NCCL backend had gaps that only surfaced at runtime: <code style="color: #097536; background: none; padding: 0;">barrier()</code> raised a not-implemented error, and the signal pad was never zeroed after allocation, so the signaling protocol had nothing reliable to build …+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PRs </span><a href="https://github.com/pytorch/pytorch/pull/188051"><span style="font-weight: 400;">#188051</span></a><span style="font-weight: 400;"> by Kapil Sharma, Meta, </span><a href="https://github.com/pytorch/pytorch/pull/189088"><span style="font-weig…+
<h3><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">Symmetric Memory: reaching NCCL symmetric kernels from ordinary collectives</span></h3>+
<p>Symmetric memory based kernels became available on the NVLink domain in NCCL 2.27. These have been implemented in PyTorch’s symmetric memory in nightly builds since Jan 2026 but weren’t documented in a way that made it easy for users. Responding to feedback we improved the documentation in this r…+
<p><span style="font-weight: 400;">API Unstable</span><i><span style="font-weight: 400;"><br />+
</span></i><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/192515"><span style="font-weight: 400;">#192515</span></a><span style="font-weight: 400;"> by Kapil Sharma, Meta)</span></p>+
<h4><b><strong>Symmetric Memory: one-sided</strong> <strong><code style="color: #097536; background: none; padding: 0;">get</code></strong></b></h4>+
<p><span style="font-weight: 400;">Reading data that lives on another rank has generally meant a collective: every rank participates and synchronizes, even when only one rank actually needs the data. Symmetric memory now exposes </span><code style="color: #097536; background: none; padding: 0;">get<…+
<p><span style="font-weight: 400;">API Unstable</span><i><span style="font-weight: 400;"><br />+
</span></i><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/182378"><span style="font-weight: 400;">#182378</span></a><span style="font-weight: 400;"> by Benjamin Brock, Intel)</span></p>+
<h3><span style="font-weight: 400;">TokenSwitch</span></h3>+
<p>Mixture-of-experts training spends much of its step time sending each token to the ranks holding its chosen experts and bringing the expert outputs back, and teams generally wire that up themselves against a vendor kernel library, backward pass included. <code style="color: #097536; background: n…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/178712"><span style="font-weight: 400;">#178712</span></a><span style="font-weight: 400;"> and </span><a href="https://github.com/pytorch/pytorch/pull/181314"><span style="font-weight: 400;">#181314</span>…+
<h3><span style="font-weight: 400;">Compile-on-One-Rank</span></h3>+
<p> </p>+
<p>Every rank in a distributed job compiles the same model independently, so a single multi-minute compile is paid N times over before training starts. Compile-on-one-rank makes one compiled artifact reusable everywhere: <code style="color: #097536; background: none; padding: 0;">make_fx</code> no l…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/187869"> <span style="font-weight: 400;">#187869</span></a><span style="font-weight: 400;">,</span><a href="https://github.com/pytorch/pytorch/pull/186892"> <span style="font-weight: 400;">#186892</span></a…+
<h2><span style="font-weight: 400;">Compilation and Export</span></h2>+
<h3><span style="font-weight: 400;">Declarative Dynamic Shapes with @dynamic_spec</span></h3>+
<p> </p>+
<p>Telling PyTorch which input dimensions vary has meant a different mechanism per entry point — a <code style="color: #097536; background: none; padding: 0;">dynamic_shapes</code> dict for <code style="color: #097536; background: none; padding: 0;">torch.export</code>, a coarse <code style="color: …+
<p><span style="font-weight: 400;">API Unstable</span><b><br />+
</b><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/187639"> <span style="font-weight: 400;">#187639</span></a><span style="font-weight: 400;">,</span><a href="https://github.com/pytorch/pytorch/pull/185982"> <span style="font-weight: 400;">#185982</span><…+
<h3><span style="font-weight: 400;">AOTInductor External Constants and Zero-Copy Weight Sharing</span></h3>+
<p><span style="font-weight: 400;">Serving several AOTInductor models that share the same weights used to mean every model container allocating and loading its own copy on the GPU. A new C API, </span><span style="font-weight: 400;"><code style="color: #097536; background: none; padding: 0;">AOTIndu…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/188643"> <span style="font-weight: 400;">#188643</span></a><span style="font-weight: 400;"> by @iuliur-meta)</span></p>+
<h3><span style="font-weight: 400;">AOTInductor Compilation</span></h3>+
<p> </p>+
<p>Packaging a model with <code style="color: #097536; background: none; padding: 0;">triton.autotune_at_compile_time=False</code> used to run the whole codegen twice: compile, run to collect kernel metadata, reset state, then recompile for packaging. That path now emits the JIT and AOTI wrapper bod…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/184735"> <span style="font-weight: 400;">#184735</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/184736"> <span style="font-weight: 400;">#184736</…+
<h3><span style="font-weight: 400;">AOTInductor Constant Loading</span></h3>+
<p> </p>+
<p>Loading a model’s weights copies them from host memory to the GPU, and a synchronous copy out of pageable memory forces a device-wide synchronization that stalls inference already running on other streams. <code style="color: #097536; background: none; padding: 0;">AOTInductorSetUsePinnedAs…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/186258"> <span style="font-weight: 400;">#186258</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/186309"> <span style="font-weight: 400;">#186309</…+
<h3><span style="font-weight: 400;">Helion Backend Integration</span></h3>+
<p>Writing a fast GPU kernel by hand means choosing tile sizes, loop order, and memory access patterns, then re-tuning all of it for every new shape and every new GPU. Helion raises that a level: you write the algorithm in Python, and Helion searches the schedule space and emits Triton for you. PyTo…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/190636"><span style="font-weight: 400;">#190636</span></a><span style="font-weight: 400;"> by Karthick Panner Selvam, Meta)</span></p>+
<h2><span style="font-weight: 400;">Platform Features and Updates</span></h2>+
<h3><span style="font-weight: 400;">CUDA</span></h3>+
<h4><span style="font-weight: 400;">NVGEMM, a CuTeDSL GEMM Backend for Inductor</span></h4>+
<p>PyTorch 2.13 introduced the NVGEMM CuTeDSL backend for TorchInductor and in this release we are excited to expand support to epilogue fusion — the previous version could emit a standalone kernel, and whatever followed it (a bias add, an activation, a rescale) stayed in a separate kernel that re-r…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PRs</span><a href="https://github.com/pytorch/pytorch/pull/186183"> <span style="font-weight: 400;">#186183</span></a><span style="font-weight: 400;">,</span><a href="https://github.com/pytorch/pytorch/pull/187013"> <span style="font-weight: 400;">#187013</spa…+
<h4><span style="font-weight: 400;">CUDA Graph Lifecycle Hooks</span></h4>+
<p>Tools that want to watch CUDA graphs from the outside, like a profiler or a memory tracker, could only register per-graph hooks, which is no help when the graph was constructed by Inductor or NCCL rather than by the tool. This release adds module-level hooks that fire for every graph in the proce…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/190582"> <span style="font-weight: 400;">#190582</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/190602"> <span style="font-weight: 400;">#190602</s…+
<h4><span style="font-weight: 400;">Multiple Memory Pools in a Single CUDA Graph</span></h4>+
<p>A <code style="color: #097536; background: none; padding: 0;">CUDAGraph</code> capture previously bound to exactly one memory pool, which meant allocations that need to come from a separate pool — symmetric memory being the case that forced the issue — couldn’t participate in a captured reg…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/187929"> <span style="font-weight: 400;">#187929</span></a><span style="font-weight: 400;"> by @Aidyn-A)</span></p>+
<h4><span style="font-weight: 400;">CUDA Graph Capture for torch.while_loop</span></h4>+
<p>Data-dependent loop counts have been one of the standard reasons a workload can’t be fully CUDA-graph captured, forcing a device-to-host copy to decide how many iterations to run and breaking the capture at exactly the point you’d rather keep it intact. <code style="color: #097536; ba…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/186055"> <span style="font-weight: 400;">#186055</span></a><span style="font-weight: 400;"> by Daniel Galvez, NVIDIA)</span></p>+
<h4><span style="font-weight: 400;">Kernel Annotations for CUDA Graphs</span></h4>+
<p><code style="color: #097536; background: none; padding: 0;">torch.cuda.graph_annotations</code> makes the kernel-annotation API used with CUDA graph capture public: <code style="color: #097536; background: none; padding: 0;">mark_kernels</code> lets you tag GPU work with a name so it shows up lab…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/189417"> <span style="font-weight: 400;">#189417</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/191563"> <span style="font-weight: 400;">#191563</s…+
<h4><span style="font-weight: 400;">Post-Facto Memory Snapshot Annotations</span></h4>+
<p> </p>+
<p>Memory snapshots already let you attach metadata to an allocation, but only at the moment it’s created — some information, like whether a tensor ended up retained by the autograd graph, is only known later, after it’s been packed into the backward tape. <code style="color: #097536; ba…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/190575"> <span style="font-weight: 400;">#190575</span></a><span style="font-weight: 400;"> by Edward Yang, Meta)</span></p>+
<h4><span style="font-weight: 400;">TunableOp on CUDA</span></h4>+
<p>TunableOp profiles the available GEMM implementations for each input shape at runtime and caches the fastest, but on CUDA builds it previously had only one candidate to pick from — the cuBLAS default. It now registers cuBLASLt heuristic candidates too, with the candidate count set by <code style=…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/186270"> <span style="font-weight: 400;">#186270</span></a><span style="font-weight: 400;"> by Grayson Derossi, NVIDIA and</span><a href="https://github.com/pytorch/pytorch/pull/189355"> <span style="…+
<h4><span style="font-weight: 400;">cuBLASLt as a grouped GEMM backend</span></h4>+
<p>Grouped GEMM drives MoE layers, where many differently-shaped matmuls are issued together. cuBLASLt joins CUTLASS and the fallback as a backend: default for fp16 on Blackwell with CUDA 13.2+ and Hopper with CUDA 13.3+, opt-in for bf16 on the same combinations via <code style="color: #097536; back…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"> (PR</span><a href="https://github.com/pytorch/pytorch/pull/177037"> <span style="font-weight: 400;">#177037</span></a><span style="font-weight: 400;"> by Grayson Derossi, NVIDIA)</span></p>+
<h3><span style="font-weight: 400;">ROCm</span></h3>+
<h4><span style="font-weight: 400;">Grouped GEMM, CK Templates and Origami (ROCm GEMM)</span></h4>+
<p><span style="font-weight: 400;">Mixture-of-experts models on AMD GPUs used to miss out on Inductor’s Triton-compiled grouped GEMM, which was previously limited to NVIDIA SM90+ hardware — ROCm fell back to a slower for-loop over hipBLASLt/rocBLAS calls instead. This release brings that Trito…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/188600"> <span style="font-weight: 400;">#188600</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/188742"> <span style="font-weight: 400;">#188742</s…+
<h4><span style="font-weight: 400;">FlexAttention Tile Configs for RDNA3</span></h4>+
<p><span style="font-weight: 400;">FlexAttention on AMD’s RDNA3 GPUs (Radeon workstation and consumer cards, not the MI-series datacenter line) was using tile sizes that weren’t tuned for the architecture, leaving performance on the table for short-to-medium sequence lengths. This releas…+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/177840"> <span style="font-weight: 400;">#177840</span></a><span style="font-weight: 400;"> by Robert Esclapez, AMD)</span></p>+
<h3><span style="font-weight: 400;">MPS (Apple Silicon)</span></h3>+
<h4><span style="font-weight: 400;">Native Linear Algebra</span></h4>+
<p>MPS linear algebra has historically leaned on Apple’s MPSGraph primitives or fallen back to CPU entirely for anything beyond the basics, which made mixed CPU/MPS round-trips a common source of slowdown in numerical code. This release replaces several of those gaps with native Metal kernels.…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/185954"> <span style="font-weight: 400;">#185954</span></a><span style="font-weight: 400;"> by Darko </span><span style="font-weight: 400;">SImonovski</span><span style="font-weight: 400;">,</span><a href="…+
<h4><span style="font-weight: 400;">FlexAttention Improvements</span></h4>+
<p>Building on FlexAttention’s arrival on MPS in 2.13, this release rounds out several gaps that showed up once people started using it for real models. KV batch broadcasting lets key/value tensors be shared across the query batch instead of requiring an exact match — a prerequisite for paged …+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/187722"> <span style="font-weight: 400;">#187722</span></a><span style="font-weight: 400;">,</span><a href="https://github.com/pytorch/pytorch/pull/187768"> <span style="font-weight: 400;">#187768</span></a…+
</span></p>+
<h4><span style="font-weight: 400;">MPS Prefill Attention Acceleration</span></h4>+
<p><span style="font-weight: 400;">Apple’s Metal Performance Primitives (MPP), new in macOS 26.2, expose lower-level building blocks for attention-style workloads that weren’t previously available to Metal kernels. This release takes advantage of them with a second prefill attention kern…+
</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/182256"><span style="font-weight: 400;"> #182256</span></a><span style="font-weight: 400;"> by Irakli Salia, Hugging Face)</span></p>+
<h4><span style="font-weight: 400;">MPS acceleration for CTC Loss </span></h4>+
<p><code style="color: #097536; background: none; padding: 0;">ctc_loss</code> — the loss behind alignment-free sequence models like speech recognition and OCR — gets both forward and backward passes on MPS for the first time, closing a gap that previously forced Mac users to fall back to CPU for th…+
</span><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/187716"> <span style="font-weight: 400;">#187716</span></a><span style="font-weight: 400;"> and</span><a href="https://github.com/pytorch/pytorch/pull/188187"> <span style="font-weight: 400;">#188187</s…+
<h3><span style="font-weight: 400;">XPU (Intel GPUs)</span></h3>+
<h4><span style="font-weight: 400;">Enhanced XPU Graph Performance</span></h4>+
<p><span style="font-weight: 400;">Reduced graph capture and replay overhead in XPU Graph, improving execution efficiency and delivering better performance for graph-based training and inference workloads on Intel® Arc<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="…+
<p><span style="font-weight: 400;">API Unstable</span></p>+
<p><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/188874"><span style="font-weight: 400;">#188874</span></a><span style="font-weight: 400;"> by Jing Ma, Intel)</span></p>+
<h4><span style="font-weight: 400;">MXFP8 and MXFP4 Support for scaled_mm</span></h4>+
<p><span style="font-weight: 400;">Added MXFP8 and MXFP4 support for scaled_mm, enabling early software readiness for next-generation Intel GPUs and helping developers prepare AI workloads for emerging low-precision computation formats. </span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/181726"><span style="font-weight: 400;">#181726</span></a><span style="font-weight: 400;">, </span><a href="https://github.com/pytorch/pytorch/pull/181727"><span style="font-weight: 400;">#181727</span…+
</span></p>+
<h4><span style="font-weight: 400;">Symmetric Memory for Distributed AI Workloads</span></h4>+
<p><span style="font-weight: 400;">Enabled the XPU Symmetric Memory backend for scale-up deployments, unlocking Async Tensor Parallelism (Async TP) on Intel GPUs and providing the foundation for more scalable distributed AI workloads. </span></p>+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/185102"><span style="font-weight: 400;">#185102</span></a><span style="font-weight: 400;"> by Cherry Zhang, Intel)</span><span style="font-weight: 400;"><br />+
</span></p>+
<h4><span style="font-weight: 400;">Fine-grained Per-Process Intel GPU Memory Tracking</span><span style="font-weight: 400;"><br />+
</span></h4>+
<p><span style="font-weight: 400;">Added torch.xpu.list_gpu_processes(), enabling detailed tracking and reporting of Intel GPU memory usage on a per-process basis. </span></p>+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR </span><a href="https://github.com/pytorch/pytorch/pull/185192"><span style="font-weight: 400;">#185192</span></a><span style="font-weight: 400;"> by Guangye Yu, Intel)</span></p>+
<h4><span style="font-weight: 400;">Expanded WSL2 Support</span></h4>+
<p><span style="font-weight: 400;">Added support for Ubuntu 24.04 and Ubuntu 26.04 running under Windows Subsystem for Linux 2 (WSL2), making it easier for developers to build and run AI workloads on Intel GPUs from Windows environments.</span><span style="font-weight: 400;"><br />+
</span></p>+
<h3><span style="font-weight: 400;">C++ ABI</span></h3>+
<h4><span style="font-weight: 400;">Expanded torch::stable Surface</span></h4>+
<p>C++ applications that use the subset of APIs defined in <code style="color: #097536; background: none; padding: 0;">torch::stable</code> can rely on ABI compatibility across releases, and this release expands that surface. (C++ applications can also use the full API surface of <code style="color:…+
<p><span style="font-weight: 400;">C++ interface API Unstable while C interface is API Stable and ABI Stable</span><span style="font-weight: 400;">.</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/183323"> <span style="font-weight: 400;">#183323</span></a><span style="font-weight: 400;"> by Paweł Gadziński, NVIDIA,</span><a href="https://github.com/pytorch/pytorch/pull/189877"> <span style="font-…+
<h2><span style="font-weight: 400;">Profiling and Debugging</span></h2>+
<h4><span style="font-weight: 400;">Memory Snapshots for Pinned CPU Memory</span></h4>+
<p> </p>+
<p>Memory snapshots have covered device allocations for a while, but not the pinned (page-locked) host memory used to stage host-to-device transfers — so if that memory grew unexpectedly, there was no way to see it in the same tool you’d already reach for. Pinned buffers are also easy to lose …+
<p><span style="font-weight: 400;">API Unstable</span><span style="font-weight: 400;"><br />+
</span><span style="font-weight: 400;">(PR</span><a href="https://github.com/pytorch/pytorch/pull/182407"> <span style="font-weight: 400;">#182407</span></a><span style="font-weight: 400;"> by Edward Yang, Meta)</span></p>+
<h2><span style="font-weight: 400;">Deprecations and Backwards-Incompatible Changes</span></h2>+
<ul>+
<li style="font-weight: 400;" aria-level="1"><b>TorchScript deprecation warnings are now visible</b><span style="font-weight: 400;"> and TorchScript is kept out of import paths. Deprecated </span><span style="font-weight: 400;"><code>isIntegral</code></span><span style="font-weight: 400;"> overloads…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Python function events are excluded from profiler </span><span style="font-weight: 400;"><code>key_averages()</code></span><span style="font-weight: 400;"> by default, a visible change in profiler output. See </span><a href…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">In the profiler, the deprecated </span><span style="font-weight: 400;"><code>use_cuda</code></span><span style="font-weight: 400;"> option is removed and </span><span style="font-weight: 400;"><code>with_modules</code></spa…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The Dynamo TVM backend’s Relay path is removed after a </span><span style="font-weight: 400;"><code>FutureWarning</code></span><span style="font-weight: 400;"> deprecation; use the relax frontend. See </span><a href="…+
<li>In distributed, <code>_set_pg_timeout</code> gives way to <code>torch.distributed.set_timeout</code>, <code>setSequenceNumberForGroup</code> becomes a deprecated no-op, the control collectives implementation is removed, and the compile-on-one-rank <code>torch.distributed</code> alias gives way t…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">CUDA green context </span><span style="font-weight: 400;"><code>set</code></span><span style="font-weight: 400;"> and </span><span style="font-weight: 400;"><code>pop</code></span><span style="font-weight: 400;"> are deprec…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Sparse tensors are validated for consistency when loaded with </span><span style="font-weight: 400;"><code>weights_only</code></span><span style="font-weight: 400;">. See </span><a href="https://github.com/pytorch/pytorch/p…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The </span><span style="font-weight: 400;"><code>balanced</code></span><span style="font-weight: 400;"> accuracy policy is removed from </span><span style="font-weight: 400;"><code>linear_cross_entropy</code></span><span st…+
</ul>+
<h2><span style="font-weight: 400;">Non-Feature Updates</span></h2>+
<table>+
<thead>+
<tr>+
<th><b>Component</b></th>+
<th><b>2.13</b></th>+
<th><b>2.14</b></th>+
</tr>+
</thead>+
<tbody>+
<tr>+
<td><span style="font-weight: 400;">CUDA</span></td>+
<td><span style="font-weight: 400;">12.6, 13.0, 13.2</span></td>+
<td><span style="font-weight: 400;">12.6, 13.0, 13.2</span></td>+
</tr>+
<tr>+
<td><span style="font-weight: 400;">Default wheel</span></td>+
<td><span style="font-weight: 400;">CUDA 13.0</span></td>+
<td><span style="font-weight: 400;">CUDA 13.0, unchanged</span></td>+
</tr>+
<tr>+
<td><span style="font-weight: 400;">ROCm</span></td>+
<td><span style="font-weight: 400;">7.1, 7.2</span></td>+
<td><span style="font-weight: 400;">7.2, 7.14. 7.1 dropped; 7.14 via TheRock</span></td>+
</tr>+
<tr>+
<td><span style="font-weight: 400;">Python</span></td>+
<td><span style="font-weight: 400;">3.10 to 3.15, incl. 3.14t, 3.15t</span></td>+
<td><span style="font-weight: 400;">unchanged</span></td>+
</tr>+
<tr>+
<td><span style="font-weight: 400;">C++ standard</span></td>+
<td><span style="font-weight: 400;">C++20</span></td>+
<td><span style="font-weight: 400;">unchanged</span></td>+
</tr>+
</tbody>+
</table>+
<ul>+
<li><span style="font-weight: 400;">The build system migrated from setuptools to scikit-build-core, and Windows and macOS wheel builds are refactored into Python pipelines. See </span><a href="https://github.com/pytorch/pytorch/pull/180247"><span style="font-weight: 400;">#180247</span></a><span sty…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">ROCm 7.14 wheels are built from the TheRock pip SDK with RPATH-based library resolution, manywheels are repackaged with auditwheel to fix invalid ZIP64 on wheels over 4 GB, and tooling migrates from </span><span style="font…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">cuDNN advances to 9.24 with conv engine 5 re-enabled, oneDNN to 3.12.3, and the XPU support package to 2026.1. See </span><a href="https://github.com/pytorch/pytorch/pull/189483"><span style="font-weight: 400;">#189483</spa…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">C++20 remains the minimum standard, and header-guard enforcement completes. See </span><a href="https://github.com/pytorch/pytorch/pull/178150"><span style="font-weight: 400;">#178150</span></a><span style="font-weight: 400…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">New CI and platform coverage includes a native linux-riscv64 build image, a B200 benchmark workflow, a dedicated H100 fabric runner for P2P IPC tests, and Intel BMG client smoke tests. See </span><a href="https://github.com…+
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Inductor targets Rubin (sm_107) with tuned vectorized elementwise kernels. See </span><a href="https://github.com/pytorch/pytorch/pull/190654"><span style="font-weight: 400;">#190654</span></a><span style="font-weight: 400;…+
</ul>+
]]></content:encoded>+
+
+
+
</item>+
<item>+
<title>Agentic AI and Next-Gen Intelligence Sessions at PyTorch Conference North America 2026</title>+
<link>https://pytorch.org/blog/agentic-ai-and-next-gen-intelligence-sessions-at-pytorch-conference-north-america-2026/</link>+
+
<dc:creator><![CDATA[PyTorch Foundation]]></dc:creator>+
<pubDate>Wed, 02 Sep 2026 16:50:44 +0000</pubDate>+
<category><![CDATA[Announcements]]></category>+
<category><![CDATA[Blog]]></category>+
<category><![CDATA[Agentic AI]]></category>+
<category><![CDATA[Next-gen Intelligence]]></category>+
<category><![CDATA[PyTorch Conference]]></category>+
<category><![CDATA[PyTorch Conference North America]]></category>+
<guid isPermaLink="false">https://pytorch.org/?p=161495</guid>+
+
<description><![CDATA[TL;DR PyTorch Conference North America 2026 features Agentic AI and Next-Gen Intelligence across sessions on training agents, serving agents in production, agents that build PyTorch, and PyTorch in the physical...]]></description>+
<content:encoded><![CDATA[<h3><b>TL;DR</b></h3>+
<p><span style="font-weight: 400;">PyTorch Conference North America 2026 features Agentic AI and Next-Gen Intelligence across sessions on training agents, serving agents in production, agents that build PyTorch, and PyTorch in the physical world.</span></p>+
<h2><b>Agentic AI and Next-gen Intelligence at PyTorch Con NA</b></h2>+
<p><span style="font-weight: 400;">When you look at the schedule for PyTorch Conference North America 2026, one thing jumps out: agents are featured everywhere. They write kernels, triage CI, migrate workloads between chips, drive robots, and answer the phone. The interesting questions have shifted …+
<p><span style="font-weight: 400;">Here is a guided tour of the agentic AI and next-generation intelligence content across the two days of PyTorch Conference North America, along with why it is worth being in the room.</span></p>+
<p><a href="https://hubs.ly/Q04tDx8f0"><span style="font-weight: 400;">View the full conference schedule</span></a><a href="https://www.google.com/search?q=https://hubs.ly/Q04tDx8f0"><span style="font-weight: 400;"><br />+
</span></a><a href="https://hubs.ly/Q04tDw_W0"><span style="font-weight: 400;">Register for PyTorch Conference North America 2026</span></a></p>+
<h2><b>It starts on the keynote stage</b></h2>+
<p><span style="font-weight: 400;">Three keynotes frame the whole conversation.</span></p>+
<h3><b>Beyond Brute Force: The Era of Adaptive Intelligence</b></h3>Diff display stops at 400 lines. The line counts above are from the whole diff. 119 lines shown here cut at 300 characters. The raw artifact at this commit is linked above.