Skip to content

trunk/cc968d6716284ec313ae382c4371c38e42f663a3

@drisspg drisspg tagged this 12 Aug 00:50
QuACK consumes boolean tensors through uint8 physical storage, but FlexGEMM
passed the main output directly and allocated ordinary result registers with
the accumulator dtype. Tuple and local-reduction epilogues also route the main
value through the Float32 D channel, so storing a boolean value there without
an explicit conversion fails type checking.

Use the existing epilogue storage adapter for the main output, convert values
entering D to the accumulator dtype, and retain the generated result dtype for
direct output stores. Generic integer main outputs remain unsupported because
Float32 D staging can lose integer precision and unsigned conversion semantics
do not match eager conversion; grouped packed outputs keep their existing
specialized path.

Test Plan:

```bash
python test/inductor/test_flex_gemm.py -k bool_main_output
python test/inductor/test_flex_gemm.py -k generic_integer_main_output_rejected
python test/inductor/test_flex_gemm.py
tools/vendoring/quack/vendor.sh --check
spin lint
```

This change was prepared with assistance from an AI coding tool.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/191271
Approved by: https://github.com/eellison
ghstack dependencies: #190793, #191026
Assets 2
Loading