$ cat pytorch/week/2026-09-28.log
the week in review · Sep 28 – Oct 4, 2026
Inductor correctness sweep lands with nextafter and index_put fixes
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
TorchTitan also drops graph-based EP chunking and ties Qwen3.5 embeddings, while ExecuTorch fixes transposed-conv BatchNorm fusion.
Fix #187340: [torch.compile][Inductor][CUDA] torch.nextafter is incorrectly compiled as no-op (#196578) pytorch/pytorch
Inductor compiled torch.nextafter on CUDA as a no-op, so compiled results silently diverged from eager; the fix adds a numerically accurate lowering. If you use nextafter in a compiled region, prior compiled artifacts need a rebuild to pick it up.
[inductor] Don't reinplace index_put when indices or values share storage with the input (#198637) pytorch/pytorch
The reinplace pass turns index_put into in-place index_put_ when the input is dead afterwards, but never checked whether indices or values were views of the same storage. Models relying on index_put semantics under torch.compile should be rechecked against eager on current nightlies.
[inductor] Fix merge_select_cat_aten matching cats that aren't selects of one tensor (#198638) pytorch/pytorch
merge_select_cat_aten, which only runs with select_cat_aten_pass enabled, was matching cat operations that were not selects of a single tensor and replacing them with a view. The fix tightens the match, closing a shape and values mismatch for anyone who turned that pass on.
Fix AVX512 grid sampler mask gather (#197635) pytorch/pytorch
The AVX512 mask_gather path converted an all-ones mask to a bitmask using floating-point equality, and the all-ones pattern is NaN as float or double. CPU grid_sample results were zeros; the mask handling now uses integer semantics.
Fix cuDNN/MIOpen RNN backward reading the saved output with assumed strides (#198773) pytorch/pytorch
_cudnn_rnn_backward_input and _cudnn_rnn_backward_weight, plus their MIOpen twins, handed the saved forward output to the library assuming strides after the batch_first transpose. Backward gradients for cuDNN and MIOpen RNNs on affected layouts were being computed from the wrong data.
[CUDA] Fix borrowed reference handling in memory snapshot (#199044) pytorch/pytorch
THCPModule_memorySnapshot wrapped the result of a borrow with PyTuple_GetItem, so refcount handling was wrong. Memory snapshots taken during CUDA profiling under torch.cuda.memory can now be trusted not to corrupt refcounts.
[graph_trainer] Remove graph-based EP chunking (#4952) pytorch/torchtitan
TorchTitan kept two EP overlap chunking strategies and dropped the graph one; the eager path wrapping module forwards before tracing is what remains. Configs or code paths tied to the graph chunking pass need to move to eager.
[qwen3.5] Tie embeddings for the 0.8B, 2B, and 4B flavors (#4916) pytorch/torchtitan
The Hugging Face Qwen3.5 0.8B, 2B, and 4B checkpoints set tie_word_embeddings=true and store no lm_head.weight, but the torchtitan configs kept a separate lm_head. Those three flavors now load the checkpoint as published.
$ ls pytorch/week/ # the briefings behind this review
Keep up with PyTorch in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.
Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.