$ the-wire · showcase
torch.compiler.precompile becomes a module, callable API retired
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
PyTorch's precompile surface collapses into a module with no capture or load yet, and the fixes that make that transition landable are mostly paperwork; meanwhile two backend kernels were silently returning wrong numbers.
[precompile] Make torch.compiler.precompile a module and retire the callable API (#197993) pytorch/pytorch
torch.compiler.precompile now exports only types (Capture, MakeFxTracer, PrecompiledRunnable, PrecompileSummary, and a re-exported PrecompileError), so torch.compiler.precompile(fn, x) raises TypeError: 'module' object is not callable. The landing note is explicit that this commit is not usable on its own: there is no capture() and no load() yet.
Metal backend: honor channels-last strides in conv2d pytorch/executorch
aoti_torch_mps_convolution read its operands as contiguous NCHW/OIHW regardless of strides, so every conv2d Inductor handed it after layout optimization returned wrong values silently; the reported case is MobileNetV3 top-1 logit 3094 instead of 8.146. 1x1 convs escaped only because inductor lowers them to mm. The kernel now classifies strides for both input and weight.
[precompile] Validate backend and tracer in PrecompiledModule and drive the suite through it (#198283) pytorch/pytorch
The backend and tracer validation moves out of _PrecompileApi.__call__ and into PrecompiledModule, with the test suite re-pointed to drive the new path. Bob Ren frames it as preparation: the callable-retirement commit two PRs up would otherwise have to relocate these checks and rewire the suite at the same time.
Avoid hint guards in symbolic expand fast paths (#198258) pytorch/pytorch
SymIntArrayRef::equals could specialize backed symbolic dimensions from their hints in optional expand fast paths; both expand_outplace overloads now use TORCH_GUARD_OR_FALSE(c10::sym_equals(...)) so an unproven equality falls through to general broadcasting without installing a guard. New coverage asserts a hint-1 dimension stays symbolic across binary logical_and and tensor-list broadcast_ten...
Keep unsupported BF16 and dynamic reshapes out of XNNPACK pytorch/executorch
BF16 convolution and Conv1d/unsqueeze reshapes with multiple dynamic dimensions now stay on ExecuTorch's native kernels instead of XNNPACK. Regression tests export and execute Conv1d, Conv2d, and unsqueeze without a model dependency.
Refactor tensor-parallel projection backends pytorch/torchtitan
TorchTitan makes tensor-parallel roles explicit: input projections use ColumnParallelLinear, output projections RowParallelLinear, both still Linear subclasses preserving existing parameter FQNs and behaving as ordinary linear modules when no TP mesh exists. Elsewhere across the desks, the Arm backend drops safe int32-to-int64 index casts for delegated gather, rewrite_slice preserves symbolic b...
Action items