MCPcopy Create free account
hub / github.com/pytorch/executorch / CortexMQuantizer

Class CortexMQuantizer

backends/cortex_m/quantizer/quantizer.py:46–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46class CortexMQuantizer(ComposableQuantizer):
47
48 def __init__(self) -> None:
49 conv_targets: set[OpOverload] = set()
50 for key in CONV_OP_PATTERNS.keys() | CONV_TRANSPOSE_OP_PATTERNS.keys():
51 conv_targets.update(key)
52
53 support_dict_name = (
54 cortex_m_quantizer_support_module + ".CORTEX_M_QUANTIZER_SUPPORT_DICT"
55 )
56 pattern_matcher = PatternMatcher(
57 cast(
58 dict[tuple[OpOverload, ...], Optional[type[PatternCheck]]],
59 CORTEX_M_QUANTIZER_SUPPORT_DICT,
60 ),
61 support_dict_name=support_dict_name,
62 )
63 quantizers: List[Quantizer] = [
64 PatternQuantizer(
65 INT8_PER_CHANNEL_CONFIG,
66 node_finder=NodeTargetNodeFinder(list(conv_targets)),
67 pattern_matcher=pattern_matcher,
68 ),
69 PatternQuantizer(
70 INT8_PER_TENSOR_CONFIG,
71 node_finder=GlobalNodeFinder(),
72 pattern_matcher=pattern_matcher,
73 ),
74 SharedQspecQuantizer(),
75 ]
76 super().__init__(quantizers)
77
78 def annotate(self, model):
79 reporter = QuantizerReporter(self.quantizers)
80 model = super().annotate(model)
81 reporter.log_quantizer_report(model)
82 return model
83
84 def validate(self, model: GraphModule) -> None:
85 return None
86
87 def transform_for_annotation(self, model: GraphModule) -> GraphModule:
88 pass_manager = CortexMPassManager(None)
89 return pass_manager.transform_for_annotation(model)

Callers 4

__init__Method · 0.90
_quantize_and_exportFunction · 0.90
_to_edge_cortex_mFunction · 0.90
quantize_modelFunction · 0.90

Calls

no outgoing calls

Tested by 2

__init__Method · 0.72
_quantize_and_exportFunction · 0.72