$ the-wire · showcase
Dynamo stops deleting globals it never created, FP8 blockwise scale fixes land
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
Today's PyTorch changes are mostly about bookkeeping that had drifted from what it claimed to record: which globals a compile package owns, which device a graph actually targets, and which log-probabilities vLLM really produced.
[dynamo] Uninstall only the globals a package itself bound (#196895) pytorch/pytorch
`CompilePackage._install_global` appended every name it wrote to `_installed_globals`, so `uninstall()` popped names the package had only overwritten rather than created, deleting bindings that belonged to someone else. The bookkeeping now distinguishes names the package created from names it merely touched.
[BugFix] Do not invent vLLM prompt log-probabilities pytorch/rl
`vLLMWrapper` zero-filled prompt log-probs when the vLLM V1 generate path returned nothing usable, and since a zero log-prob means probability 1, GRPO and KL callers reading `log_probs.prompt` or a `full` tensor got silently wrong values instead of an error. The wrapper now handles the missing prompt-score case rather than inventing scores.
[dynamo] Report every device type a graph names, not the first meta leaf (#196814) pytorch/pytorch
`_graph_device_type` returned the first `val`/`example_value` leaf it encountered, falling back to `_device_type` of a flattened arg ("cpu" for anything that is not a `torch.device` or `Tensor`), so one node decided the device type for the whole graph and a dynamic-shape GPU compile could report as SymInt-driven CPU. It now reports every device type the graph names.
[inductor] Fix FP8 blockwise scale layout, indexing, and dot precision (#195751) pytorch/pytorch
The lowering now understands the cuBLAS blockwise scale layouts and converts them to the single layout the Triton template reads, and the 1x128 column offset is fixed. The offset previously used `cdiv`, which advanced the scale column every tile instead of every TILE_SIZE/BLOCK_K tiles.
Let the flat bounds_check run when offsets adjustment is off (#6305) pytorch/FBGEMM
The flat path was gated on `!disable_offsets_adjustment` because the flag changes the offsets contract, but the flag is on in production, so flat kernels could never be selected there, confirmed on a GB300 host. With the flat bounds_check unblocked, FBGEMM also binary-searches row lookup in the flat sparse kernels and switches permute/bounds_check to flat thread mapping, where production poolin...