diff options
author | Rickard Bolin <rickard.bolin@arm.com> | 2024-01-31 12:05:11 +0000 |
---|---|---|
committer | Rickard Bolin <rickard.bolin@arm.com> | 2024-05-16 14:08:21 +0000 |
commit | be78a053a57da7bdae240690c933824c0861f55b (patch) | |
tree | e6eabce902b42fcbdc7ef4cf7cfbc8136e11246d /ethosu/vela/operation.py | |
parent | 891468561ecfc61d27adcdc92b41ec216eaa1b08 (diff) | |
download | ethos-u-vela-be78a053a57da7bdae240690c933824c0861f55b.tar.gz |
MLBEDSW-8561: Striding support in H/W for StridedSlice3.12.0.rc1
Change-Id: Ie6f39d9c4125f7c16d27621de47cd76143c2e636
Signed-off-by: Rickard Bolin <rickard.bolin@arm.com>
Diffstat (limited to 'ethosu/vela/operation.py')
-rw-r--r-- | ethosu/vela/operation.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ethosu/vela/operation.py b/ethosu/vela/operation.py index a831537b..9a917f22 100644 --- a/ethosu/vela/operation.py +++ b/ethosu/vela/operation.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright 2020-2023 Arm Limited and/or its affiliates <open-source-office@arm.com> +# SPDX-FileCopyrightText: Copyright 2020-2024 Arm Limited and/or its affiliates <open-source-office@arm.com> # # SPDX-License-Identifier: Apache-2.0 # @@ -511,6 +511,7 @@ class Operation: "tile_base_offsets_ifm", "tile_base_offsets_ofm", "ofm_stride_multiplier", + "ifm_stride_multiplier", ) def __init__(self, op_type: Op, name: str): @@ -554,8 +555,9 @@ class Operation: self.tile_base_offsets_ifm: List[List[int]] = [[0, 0, 0, 0], [0, 0, 0, 0]] # ofm (nhwc) self.tile_base_offsets_ofm: List[int] = [0, 0, 0, 0] - # For interleaved/sparse outputs - stride is multiplied with the stride factor of the corresponding axis - # Order is [C, H, W] - default is no multiplication + # Stride is multiplied with the ifm/ofm stride factor of the corresponding axis + # Order is [C, H, W] + self.ifm_stride_multiplier: List[List[int]] = [[1, 1, 1], [1, 1, 1]] self.ofm_stride_multiplier: List[int] = [1, 1, 1] def clone(self, suffix="_clone"): @@ -585,6 +587,7 @@ class Operation: res.ifm_resampling_mode = self.ifm_resampling_mode res.tile_base_offsets_ifm = [_ifm.copy() for _ifm in self.tile_base_offsets_ifm] res.tile_base_offsets_ofm = self.tile_base_offsets_ofm.copy() + res.ifm_stride_multiplier = [_ifm.copy() for _ifm in self.ifm_stride_multiplier] res.ofm_stride_multiplier = self.ofm_stride_multiplier.copy() return res @@ -763,6 +766,7 @@ class Operation: offset_start = None offset_end = None axis = None + strides_tens = None if self.type == Op.Split: num_splits = self.attrs.get("num_splits") axis_tens = self.inputs[0] @@ -831,7 +835,7 @@ class Operation: else: assert False - return input_tens, outputs, axis, offset_start, offset_end + return input_tens, outputs, axis, offset_start, offset_end, strides_tens def set_activation_lut(self, lut_tensor): self.activation = ActivationFunction(Op.LUT) |