$ the-wire · showcase
CuTe grouped GEMM physical lowering lands, torch repros emit Python
By RepoJournal · Filed · About PyTorch
pytorch/helion gains physical lowering for grouped GEMM worklists, and PyTorch repros now emit evaluable Python instead of sympy for symbolic shapes.
pytorch/helion added CuTe tcgen05 physical lowering for packed-A, rank-3-B grouped GEMM worklists, supporting one-CTA and two-CTA profiles and runtime N-tail instruction descriptors while failing closed on unsupported DSL [1]. The accompanying change rejects co-executing tile/reduction strategies that claim the same hardware thread axis before emitting code, while keeping mutually exclusive strategies eligible [2]. Benchmarks now time CuTe kernels with CUDA events and equalize GPU thermal state before harness measurements, replacing a wall-clock path that misread launches (~5ms reported for 250ms kernels) [3]. In torchtitan, the HF trainer was removed because its assertion against headtail with flex attention "is actually not true" [4]. A tokenizer bugfix passes add_special_tokens=False to encode to prevent a post-processing template from adding a BOS token regardless of add_bos=False [5]. In pytorch/pytorch, InputWriter now emits evaluable Python (math.ceil) for symbolic tensor shape/stride in repros instead of raw sympy, fixing a mismatch with storage nbytes [6]. A dedicated CUDA backward kernel for avg_pool2d handles the non-overlapping case where stride equals kernel_size, avoiding per-element window scans [7]. An MPS fix prevents SIGABRT in linear backward with a 1-D weight by mirroring the forward unsqueeze [8]. A ROCm guard declines the native outer-product BMM specialization when the launch would exceed HIP's work-item limit, letting ATen handle it [9]. Dropout alignment tests are re-enabled after stale skips were removed [10].
Action items
- → Upgrade to the latest helion commit to get grouped GEMM lowering and thread-axis conflict rejection pytorch/helion [plan]
- → Verify repros generated with symbolic shapes now contain Python expressions, not sympy pytorch/pytorch [monitor]
- → Check tokenizer.encode calls in torchtitan to ensure add_special_tokens=False is used pytorch/torchtitan [plan]
References
- [1] [cutedsl] Add grouped GEMM worklist physical lowering ↗ pytorch/helion
- [2] [cutedsl] Reject conflicting thread-axis layouts ↗ pytorch/helion
- [3] [cutedsl] Time CuTe benchmarks with CUDA events and equalize GPU thermal state before harness measurements ↗ pytorch/helion
- [4] Removed HF trainer (#4354) ↗ pytorch/torchtitan
- [5] bugfix: add_special_tokens=False to tokenizer.encode ↗ pytorch/torchtitan
- [6] Emit Python, not sympy, for symbolic tensor shape/stride in repros (#194827) (#194827) ↗ pytorch/pytorch
- [7] [CUDA] Add non-overlapping fast path for avg_pool2d backward (#191086) ↗ pytorch/pytorch
- [8] [MPS] Fix linear backward SIGABRT with a 1-D weight (#187989) ↗ pytorch/pytorch
- [9] [ROCm] Guard native BMM outer-product launches against the HIP work-item limit (#194131) ↗ pytorch/pytorch
- [10] Re-enable TestDropoutAlignRandomEager tests (#195296) ↗ pytorch/pytorch