From 90033f33c9f8ba39d0575eea880e8f7dbf76a9fb Mon Sep 17 00:00:00 2001 From: Jacob Bohlin Date: Fri, 28 Aug 2020 15:45:44 +0200 Subject: MLBEDSW-2906: Only add padding fields to Npu ops Signed-off-by: Jacob Bohlin Change-Id: I75aad9bf59ad76ee6a0c0feb4d7299b50d787fe8 --- ethosu/vela/graph_optimiser.py | 53 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/ethosu/vela/graph_optimiser.py b/ethosu/vela/graph_optimiser.py index 7ab009f0..a89f8e63 100644 --- a/ethosu/vela/graph_optimiser.py +++ b/ethosu/vela/graph_optimiser.py @@ -392,33 +392,34 @@ def fixup_unpack_output(tens, arch): def add_padding_fields(op, arch): - if "padding" in op.attrs: - if "Conv" in op.type: - kernel_size = op.inputs[1].shape[:2] - input_shape = op.inputs[0].shape - elif "Pool" in op.type or op.type in ("ResizeBilinear", "ReduceSum"): - kernel_size = op.attrs["ksize"][1:3] - input_shape = op.inputs[0].shape - elif op.type == "ExtractImagePatches": - kernel_size = op.attrs["ksizes"][1:3] - input_shape = op.inputs[0].shape - else: - raise UnsupportedFeatureError("Unknown operation that uses padding: {}".format(op.type)) - - if op.type == "Conv2DBackpropInputSwitchedBias": - upscaling_factor = op.outputs[0].shape[1] // input_shape[1] - padding, skirt = calc_upscaled_padding_and_skirt( - op.attrs["padding"], kernel_size, op.attrs["strides"], input_shape, upscaling_factor - ) - else: - dilation_h, dilation_w = op.get_dilation_h_w() - dilated_kernel_size = [dilation_h * (kernel_size[0] - 1) + 1, dilation_w * (kernel_size[1] - 1) + 1] - padding, skirt = calc_padding_and_skirt( - op.attrs["padding"], dilated_kernel_size, op.attrs["strides"], input_shape - ) + if op.run_on_npu: + if "padding" in op.attrs: + if "Conv" in op.type: + kernel_size = op.inputs[1].shape[:2] + input_shape = op.inputs[0].shape + elif "Pool" in op.type or op.type in ("ResizeBilinear", "ReduceSum"): + kernel_size = op.attrs["ksize"][1:3] + input_shape = op.inputs[0].shape + elif op.type == "ExtractImagePatches": + kernel_size = op.attrs["ksizes"][1:3] + input_shape = op.inputs[0].shape + else: + raise UnsupportedFeatureError("Unknown operation that uses padding: {}".format(op.type)) + + if op.type == "Conv2DBackpropInputSwitchedBias": + upscaling_factor = op.outputs[0].shape[1] // input_shape[1] + padding, skirt = calc_upscaled_padding_and_skirt( + op.attrs["padding"], kernel_size, op.attrs["strides"], input_shape, upscaling_factor + ) + else: + dilation_h, dilation_w = op.get_dilation_h_w() + dilated_kernel_size = [dilation_h * (kernel_size[0] - 1) + 1, dilation_w * (kernel_size[1] - 1) + 1] + padding, skirt = calc_padding_and_skirt( + op.attrs["padding"], dilated_kernel_size, op.attrs["strides"], input_shape + ) - op.attrs["explicit_padding"] = padding - op.attrs["skirt"] = skirt + op.attrs["explicit_padding"] = padding + op.attrs["skirt"] = skirt return op -- cgit v1.2.1