diff options
author | Patrik Gustavsson <patrik.gustavsson@arm.com> | 2021-09-01 12:43:02 +0200 |
---|---|---|
committer | Patrik Gustavsson <patrik.gustavsson@arm.com> | 2021-09-07 15:35:49 +0200 |
commit | f1580f0167d7e9539a17ac8e33b0b595300f8090 (patch) | |
tree | 2fe1d9d4715ac38be9cfdc5fbe049c07ab5b9563 /ethosu/vela/tflite_graph_optimiser.py | |
parent | 94292fe32c34357a8935a42c77b759a499eb0db9 (diff) | |
download | ethos-u-vela-f1580f0167d7e9539a17ac8e33b0b595300f8090.tar.gz |
TOSA: Added RESHAPE, SLICE and CONCAT
Added support for Data layout ops
RESHAPE, SLICE and CONCAT.
-No support for bool_t
-Support limited to Rank <= 4 and N = 1
Signed-off-by: Patrik Gustavsson <patrik.gustavsson@arm.com>
Change-Id: I487ac494b6506a2a6ba947ee758aa193194dd796
Diffstat (limited to 'ethosu/vela/tflite_graph_optimiser.py')
-rw-r--r-- | ethosu/vela/tflite_graph_optimiser.py | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/ethosu/vela/tflite_graph_optimiser.py b/ethosu/vela/tflite_graph_optimiser.py index ef39aea3..7526f46a 100644 --- a/ethosu/vela/tflite_graph_optimiser.py +++ b/ethosu/vela/tflite_graph_optimiser.py @@ -34,6 +34,7 @@ from .graph_optimiser_util import bypass_reshape_and_squeeze_ops from .graph_optimiser_util import calc_explicit_padding from .graph_optimiser_util import convert_depthwise_to_conv from .graph_optimiser_util import fix_sg_input_output +from .graph_optimiser_util import move_splitsliceread_to_consumer from .graph_optimiser_util import needed_total_padding from .graph_optimiser_util import set_ifm_ofm_op_shapes from .graph_optimiser_util import set_tensor_equivalence @@ -193,24 +194,7 @@ def remove_SplitSliceRead(op, arch): ): # SplitSliceRead can be performed by tensor consumer cons_op = op.ofm.consumer_list[0] - if cons_op.ifm == op.ofm: - cons_op.read_offsets[0] = op.read_offsets[0] - cons_op.read_shapes[0] = op.read_shapes[0] - cons_op.set_input_tensor(op.ifm, cons_op.type.info.indices.ifms[0]) - cons_op.ifm_shapes[0] = op.ifm_shapes[0] - elif cons_op.type.is_binary_elementwise_op() and cons_op.ifm2 == op.ofm: - cons_op.read_offsets[1] = op.read_offsets[0] - cons_op.read_shapes[1] = op.read_shapes[0] - cons_op.set_input_tensor(op.ifm, cons_op.type.info.indices.ifms[1]) - cons_op.ifm_shapes[1] = op.ifm_shapes[0] - - if "skirt" in cons_op.attrs: - assert cons_op.attrs["explicit_padding"] == cons_op.attrs["skirt"] - cons_op.attrs["skirt"] = None - cons_op.attrs["force_padding"] = True - op.ofm.consumer_list.remove(cons_op) - op.ofm.ops = [] - op.ifm.consumer_list.remove(op) + move_splitsliceread_to_consumer(op, cons_op) else: avgpool_op = create_avgpool_nop(op.name + "_avgpool") avgpool_op.add_input_tensor(op.ifm) |