Skip to content

Commit e265ea6

Browse files
NXP backend: Update docs with recent ops, rename SliceTensorConverter… (#21742)
… to SliceCopyTensorConverter ### Summary Update docs with recent ops, rename SliceTensorConverter to SliceCopyTensorConverter ### Test plan Docs, rename updates only. cc @robert-kalmar @JakeStevens @digantdesai @rascani
1 parent a56af1c commit e265ea6

7 files changed

Lines changed: 24 additions & 21 deletions

File tree

backends/nxp/backend/edge_program_converter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
exir_ops.edge.aten.relu.default: ReLUConverter, # noqa F405
6161
exir_ops.edge.aten.rsqrt.default: RsqrtConverter, # noqa F405
6262
exir_ops.edge.aten.sigmoid.default: SigmoidConverter, # noqa F405
63-
exir_ops.edge.aten.slice_copy.Tensor: SliceTensorConverter, # noqa F405
63+
exir_ops.edge.aten.slice_copy.Tensor: SliceCopyTensorConverter, # noqa F405
6464
exir_ops.edge.aten._softmax.default: SoftmaxConverter, # noqa F405
6565
exir_ops.edge.aten.sub.Tensor: SubTensorConverter, # noqa F405
6666
exir_ops.edge.aten.sum.dim_IntList: SumDimIntListConverter, # noqa F405

backends/nxp/backend/ir/converter/node_converters/ops_converters/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@
101101
from executorch.backends.nxp.backend.ir.converter.node_converters.ops_converters.sigmoid_converter import (
102102
SigmoidConverter,
103103
)
104-
from executorch.backends.nxp.backend.ir.converter.node_converters.ops_converters.slice_tensor_converter import (
105-
SliceTensorConverter,
104+
from executorch.backends.nxp.backend.ir.converter.node_converters.ops_converters.slice_copy_tensor_converter import (
105+
SliceCopyTensorConverter,
106106
)
107107
from executorch.backends.nxp.backend.ir.converter.node_converters.ops_converters.softmax_converter import (
108108
SoftmaxConverter,
@@ -163,7 +163,7 @@
163163
"ReLUConverter",
164164
"RsqrtConverter",
165165
"SigmoidConverter",
166-
"SliceTensorConverter",
166+
"SliceCopyTensorConverter",
167167
"SoftmaxConverter",
168168
"SubTensorConverter",
169169
"SumDimIntListConverter",

backends/nxp/backend/ir/converter/node_converters/ops_converters/slice_tensor_converter.py renamed to backends/nxp/backend/ir/converter/node_converters/ops_converters/slice_copy_tensor_converter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from torch.nn import Parameter
2121

2222

23-
class SliceTensorConverter(NodeConverter):
23+
class SliceCopyTensorConverter(NodeConverter):
2424
@staticmethod
2525
def _is_supported_on_target(
2626
node: Node,
@@ -46,7 +46,7 @@ def _is_supported_in_IR(
4646
if len(args) != 4:
4747
return False
4848

49-
dim, start, end = SliceTensorConverter._get_clipped_slice_args(node)
49+
dim, start, end = SliceCopyTensorConverter._get_clipped_slice_args(node)
5050
input_rank = len(input_tensor(node, 0).shape)
5151

5252
# Check "dim" out of bounds

backends/nxp/neutron_partitioner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def tag_qdq_clusters(self, nodes: list[torch.fx.Node]):
234234
exir_ops.edge.aten.relu.default: ReLUConverter, # noqa F405
235235
exir_ops.edge.aten.rsqrt.default: RsqrtConverter, # noqa F405
236236
exir_ops.edge.aten.sigmoid.default: SigmoidConverter, # noqa F405
237-
exir_ops.edge.aten.slice_copy.Tensor: SliceTensorConverter, # noqa F405
237+
exir_ops.edge.aten.slice_copy.Tensor: SliceCopyTensorConverter, # noqa F405
238238
exir_ops.edge.aten._softmax.default: SoftmaxConverter, # noqa F405
239239
exir_ops.edge.aten.sub.Tensor: SubTensorConverter, # noqa F405
240240
exir_ops.edge.aten.sum.dim_IntList: SumDimIntListConverter, # noqa F405

backends/nxp/tests/ir/converter/node_converter/test_slice_tensor_converter.py renamed to backends/nxp/tests/ir/converter/node_converter/test_slice_copy_tensor_converter.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from executorch.backends.nxp.tests.ops_aliases import (
2525
Convolution,
2626
ExecutorchDelegateCall,
27-
Slice,
2827
SliceCopy,
2928
)
3029

@@ -35,7 +34,7 @@ def reseed_model_per_test_run():
3534
np.random.seed(23)
3635

3736

38-
class TestSliceTensorConverter:
37+
class TestSliceCopyTensorConverter:
3938
@staticmethod
4039
def _slice_id(prefix, input_shape, dims, starts, ends):
4140
return f"{prefix}rank={len(input_shape)}_dims={str(dims)}_starts={str(starts)}_ends={str(ends)}"
@@ -70,7 +69,7 @@ def assert_model_without_slices(model, input_shape):
7069
assert not graph_contains_any_of_ops(
7170
delegated_ep.graph, [ExecutorchDelegateCall]
7271
)
73-
assert not graph_contains_any_of_ops(delegated_ep.graph, [Slice, SliceCopy])
72+
assert not graph_contains_any_of_ops(delegated_ep.graph, [SliceCopy])
7473

7574
@staticmethod
7675
def assert_not_delegated(model, input_shape):
@@ -80,7 +79,7 @@ def assert_not_delegated(model, input_shape):
8079
assert not graph_contains_any_of_ops(
8180
delegated_ep.graph, [ExecutorchDelegateCall]
8281
)
83-
assert graph_contains_any_of_ops(delegated_ep.graph, [Slice, SliceCopy])
82+
assert graph_contains_any_of_ops(delegated_ep.graph, [SliceCopy])
8483

8584
@pytest.mark.parametrize(
8685
"input_shape, dims, starts, ends",

docs/source/backends/nxp/nxp-quantization.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ The Neutron delegate supports the following quantization schemes:
2727
- `aten.dropout.default`
2828
- `aten.exp.default`
2929
- `aten.flatten.using_ints`
30-
- `aten.hardtanh.default`
31-
- `aten.hardtanh_.default`
30+
- `aten.hardswish.default` and `aten.hardswish_.default`
31+
- `aten.hardtanh.default` and `aten.hardtanh_.default`
3232
- `aten.leaky_relu.default` and `aten.leaky_relu_.default`
3333
- `aten.linear.default`
3434
- `aten.log.default`
@@ -45,6 +45,7 @@ The Neutron delegate supports the following quantization schemes:
4545
- `aten.prelu.default`
4646
- `aten.relu.default` and `aten.relu_.default`
4747
- `aten.reshape.default`
48+
- `aten.rsqrt.default`
4849
- `aten.sigmoid.default`
4950
- `aten.slice.Tensor`
5051
- `aten.softmax.int`

docs/source/backends/nxp/op-support.csv

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ aten.clamp.default,int8,static int8,"Bounds = (-1, 1) or (0, 1) or (0, 6) or (0,
1313
aten.clone.default,int8,static int8,"node has memory format specified"
1414
aten.constant_pad_nd.default,int8,static int8,"H or W padding only"
1515
aten.convolution.default,int8,static int8,"1D or 2D convolution, constant weights, groups=1 or groups=channels_count (depthwise)"
16-
aten.dim_order_ops._clone_dim_order.default,,, "See aten.clone.default"
16+
aten.convolution.out,int8,static int8,"1D or 2D convolution, constant weights, groups=1 or groups=channels_count (depthwise)"
17+
aten.dim_order_ops._clone_dim_order.default,,,"See aten.clone.default"
1718
aten.div.Tensor,int8,static int8,"divisor - static tensor or scalar value, one dimension must satisfy %8 = 0 or scalar division (all dims = 1)"
1819
aten.exp.default,int8,static int8,
1920
aten.hardswish.default,int8,static int8,
@@ -29,15 +30,17 @@ aten.minimum.default,int8,static int8,
2930
aten.mm.default,int8,static int8,"2D tensor only"
3031
aten.mul.Tensor,int8,static int8,
3132
aten.neg.default,int8,static int8,
32-
aten.permute_copy.default,int8, static int8, "Only specific transpositions supported, see backends/nxp/backend/ir/converter/node_converters/ops_converters/permute_copy_converter.py"
33-
aten.prelu.default,int8, static int8,
33+
aten.pad.default,int8,static int8,"Only reflect mode supported for torch.nn.functional.pad. Constant mode converted by aten.constant_pad_nd.default"
34+
aten.permute_copy.default,int8,static int8,"Only specific transpositions supported, see backends/nxp/backend/ir/converter/node_converters/ops_converters/permute_copy_converter.py"
35+
aten.prelu.default,int8,static int8,
3436
aten.relu.default,int8,static int8,
37+
aten.rsqrt.default,int8,static int8,
3538
aten.sigmoid.default,int8,static int8,
36-
aten.slice.Tensor,int8, static int8
37-
aten._softmax.default,int8, static int8, "rank > 1, channels % 8 = 0, channels < 2048, flat input size / channels <= 4096, flat input size <= 524288"
38-
aten.split.default,N/A, N/A, "transforming split -> getitem to slice, see aten.slice_copy.Tensor"
39-
aten.split.Tensor,N/A, N/A, "transforming split -> getitem to slice, see aten.slice_copy.Tensor"
40-
aten.split_with_sizes.default,N/A, N/A, "transforming split -> getitem to slice, see aten.slice_copy.Tensor"
39+
aten.slice_copy.Tensor,int8,static int8,
40+
aten._softmax.default,int8,static int8,"channels <= 2040, flat input size / channels <= 4096, flat input size <= 524288"
41+
aten.split.default,N/A,N/A,"transforming split -> getitem to slice, see aten.slice_copy.Tensor"
42+
aten.split.Tensor,N/A,N/A,"transforming split -> getitem to slice, see aten.slice_copy.Tensor"
43+
aten.split_with_sizes.default,N/A,N/A,"transforming split -> getitem to slice, see aten.slice_copy.Tensor"
4144
aten.squeeze.default,int8,static int8,
4245
aten.squeeze.dim,int8,static int8,
4346
aten.squeeze.dims,int8,static int8,

0 commit comments

Comments
 (0)