From 2f44150757d4f23e8a8e026755c1a2bc3b95582f Mon Sep 17 00:00:00 2001 From: Kanya-Mo Date: Mon, 24 Aug 2026 11:16:29 -0700 Subject: [PATCH] Add x86 inductor int8 lowering registration to quant api --- torchao/quantization/quant_api.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/torchao/quantization/quant_api.py b/torchao/quantization/quant_api.py index a036241d9e..e1d3f1dfa9 100644 --- a/torchao/quantization/quant_api.py +++ b/torchao/quantization/quant_api.py @@ -907,6 +907,16 @@ def _int8_dynamic_activation_int8_weight_quantize_tensor(weight, config): return quantized_weight +def _register_qlinear_cpu_lowering_passes(device): + # register inductor fusion partterns that lower int8 activation linears to onednn::qlinear on CPU + if device.type != "cpu": + return + + from torchao.quantization.pt2e.inductor_passes.x86 import ( + _register_quantization_weight_pack_pass, + ) + + _register_quantization_weight_pack_pass() @register_quantize_module_handler(Int8DynamicActivationInt8WeightConfig) def _int8_dynamic_activation_int8_weight_transform( @@ -922,6 +932,7 @@ def _int8_dynamic_activation_int8_weight_transform( f"applying int8 dynamic activation int8 weight quant requires module to have {parameter_name} attribute" + f" but {module} does not have one" ) + _register_qlinear_cpu_lowering_passes(getattr(module, parameter_name).device) new_weight = _int8_dynamic_activation_int8_weight_quantize_tensor( getattr(module, parameter_name), config ) @@ -1024,6 +1035,8 @@ def _int8_static_activation_int8_weight_transform( act_quant_zero_point = None if config.act_quant_zero_point is not None: act_quant_zero_point = config.act_quant_zero_point.detach() + + _register_qlinear_cpu_lowering_passes(getattr(module, parameter_name).device) quantized_tensor = Int8Tensor.from_hp( getattr(module, parameter_name),