Skip to content

Commit 993b9cb

Browse files
committed
Qualcomm AI Engine Direct - fix suite op
- fix annotation logic for non arithmetic op - partition out unsupported embedding_bag op - use calibration input in suite test when verifying quantized op
1 parent 312267e commit 993b9cb

File tree

3 files changed

+12
-20
lines changed

3 files changed

+12
-20
lines changed

backends/qualcomm/partition/common_defs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from executorch.exir.dialects._ops import ops as exir_ops
1111

1212
not_supported_operator = [
13+
exir_ops.edge.aten._embedding_bag.default,
1314
exir_ops.edge.dim_order_ops._clone_dim_order.default,
1415
exir_ops.edge.quantized_decomposed.embedding_4bit.dtype,
1516
]

backends/qualcomm/quantizer/annotators.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ def annotate_sign(node: Node, quantization_config: QuantizationConfig) -> None:
691691

692692
@register_annotator([torch.ops.aten.slice.Tensor])
693693
def annotate_slice(node: Node, quantization_config: QuantizationConfig) -> None:
694-
annotate_single_in_single_out(node, quantization_config)
694+
annotate_single_in_share_out(node, quantization_config)
695695

696696

697697
@register_annotator([torch.ops.aten.slice_scatter.default])
@@ -1281,27 +1281,15 @@ def annotate_cat(node: Node, quantization_config: QuantizationConfig) -> None:
12811281
if _is_annotated([node]) or not _is_float_tensor(node):
12821282
return
12831283

1284-
assert isinstance(input_nodes, Sequence)
1285-
1286-
first_input_node = input_nodes[0]
12871284
input_qspec_map = {}
1288-
assert isinstance(first_input_node, Node)
1289-
assert isinstance(node, Node)
1290-
if _is_float_tensor(first_input_node):
1291-
input_qspec_map[first_input_node] = quantization_config.input_activation
1292-
share_qparams_with_input_act0_qspec = SharedQuantizationSpec(
1293-
(first_input_node, node)
1294-
)
1295-
1296-
for input_node in input_nodes[1:]:
1297-
if input_node not in input_qspec_map:
1298-
assert isinstance(input_node, Node)
1299-
if _is_float_tensor(input_node):
1300-
input_qspec_map[input_node] = share_qparams_with_input_act0_qspec
1285+
for input_node in input_nodes:
1286+
assert isinstance(input_node, Node)
1287+
if _is_float_tensor(input_node):
1288+
input_qspec_map[input_node] = quantization_config.input_activation
13011289

13021290
node.meta[Q_ANNOTATION_KEY] = QuantizationAnnotation(
13031291
input_qspec_map=input_qspec_map,
1304-
output_qspec=share_qparams_with_input_act0_qspec,
1292+
output_qspec=quantization_config.output_activation,
13051293
_annotated=True,
13061294
)
13071295

@@ -1346,14 +1334,17 @@ def annotate_chunk(node: Node, quantization_config: QuantizationConfig) -> None:
13461334
assert isinstance(input_act, Node)
13471335
input_qspec_map[input_act] = quantization_config.input_activation
13481336

1337+
share_qparams_with_input_node_qspec = SharedQuantizationSpec((input_act, node))
1338+
input_qspec_map[input_act] = quantization_config.input_activation
1339+
13491340
node.meta[Q_ANNOTATION_KEY] = QuantizationAnnotation(
13501341
input_qspec_map=input_qspec_map,
13511342
_annotated=True,
13521343
)
13531344

13541345
for user in node.users:
13551346
user.meta[Q_ANNOTATION_KEY] = QuantizationAnnotation(
1356-
output_qspec=quantization_config.output_activation,
1347+
output_qspec=share_qparams_with_input_node_qspec,
13571348
_annotated=True,
13581349
)
13591350

backends/test/suite/operators/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class TestCaseShim:
6969
def __init__(self, test_runner):
7070
self._test_runner = test_runner
7171

72-
def _test_op(self, model, args, flow, generate_random_test_inputs=True):
72+
def _test_op(self, model, args, flow, generate_random_test_inputs=False):
7373
self._test_runner.lower_and_run_model(
7474
model, args, generate_random_test_inputs=generate_random_test_inputs
7575
)

0 commit comments

Comments
 (0)