aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/graph_optimiser.py
diff options
context:
space:
mode:
authorLouis Verhaard <louis.verhaard@arm.com>2020-05-25 15:05:26 +0200
committerTim Hall <tim.hall@arm.com>2020-06-18 17:53:52 +0100
commit7db78969dc8ead72f3ded81b6d2a6a7ed798ea62 (patch)
tree011bcf579cc8e0f007f9564a98cc5c05df34322b /ethosu/vela/graph_optimiser.py
parent78792223369fa34dacd0e69e189af035283da2ae (diff)
downloadethos-u-vela-7db78969dc8ead72f3ded81b6d2a6a7ed798ea62.tar.gz
MLBEDSW-2067: added custom exceptions
Added custom exceptions to handle different types of input errors. Also performed minor formatting changes using flake8/black. Change-Id: Ie5b05361507d5e569aff045757aec0a4a755ae98 Signed-off-by: Louis Verhaard <louis.verhaard@arm.com>
Diffstat (limited to 'ethosu/vela/graph_optimiser.py')
-rw-r--r--ethosu/vela/graph_optimiser.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/ethosu/vela/graph_optimiser.py b/ethosu/vela/graph_optimiser.py
index 351716e0..72bb486c 100644
--- a/ethosu/vela/graph_optimiser.py
+++ b/ethosu/vela/graph_optimiser.py
@@ -22,6 +22,7 @@ import numpy as np
from . import rewrite_graph
from .data_type import DataType
+from .errors import UnsupportedFeatureError
from .operation import NpuBlockType
from .operation import Operation
from .tensor import Tensor
@@ -124,7 +125,7 @@ def calc_padding_and_skirt(padding_type, kernel_size, stride, input_dims):
top_pad = 0
bottom_pad = 0
else:
- assert 0, "Unknown padding"
+ raise UnsupportedFeatureError("Unknown padding {}".format(str(padding_type)))
padding = (top_pad, left_pad, bottom_pad, right_pad)
skirt = (top_pad, left_pad, ypad - top_pad, xpad - left_pad)
return padding, skirt
@@ -214,7 +215,7 @@ def fixup_unpack_output(tens, arch):
if op.type == "StridedSlice":
new_axis_mask = op.attrs["new_axis_mask"]
shrink_axis_mask = op.attrs["shrink_axis_mask"]
- ellipsis_mask = op.attrs["ellipsis_mask"]
+ ellipsis_mask = op.attrs["ellipsis_mask"]
if (new_axis_mask != 0 and shrink_axis_mask != 0) or ellipsis_mask != 0:
# Not supported, will be put on CPU
@@ -243,7 +244,7 @@ def fixup_unpack_output(tens, arch):
n += 1
new_axis_mask &= new_axis_mask - 1
axis = int(math.log2(prev_mask - new_axis_mask))
- reshape_input_shape = reshape_input_shape[:axis] + reshape_input_shape[(axis + 1):]
+ reshape_input_shape = reshape_input_shape[:axis] + reshape_input_shape[(axis + 1) :]
new_axis_mask >>= 1
assert len(tens.shape) == (len(op.inputs[0].shape) + n)
@@ -288,7 +289,7 @@ def add_padding_fields(op, arch):
kernel_size = op.attrs["ksizes"][1:3]
input_shape = op.inputs[0].shape
else:
- assert 0, "Unknown operation that uses padding"
+ raise UnsupportedFeatureError("Unknown operation that uses padding: {}".format(op.type))
padding, skirt = calc_padding_and_skirt(op.attrs["padding"], kernel_size, op.attrs["strides"], input_shape)
op.attrs["explicit_padding"] = padding
@@ -312,7 +313,9 @@ fc_op = set(
)
)
depthwise_op = set(("DepthwiseConv2dNative", "DepthwiseConv2dBiasAct",))
-pool_op = set(("AvgPool", "MaxPool", "QuantizedAvgPool", "QuantizedMaxPool", "AvgPoolAct", "MaxPoolAct", "ResizeBilinear",))
+pool_op = set(
+ ("AvgPool", "MaxPool", "QuantizedAvgPool", "QuantizedMaxPool", "AvgPoolAct", "MaxPoolAct", "ResizeBilinear",)
+)
elementwise_op = set(("AddAct", "MulAct", "SubAct", "Maximum", "Minimum", "LeakyRelu", "Abs"))
binary_elementwise_op = set(("AddAct", "MulAct", "SubAct", "Maximum", "Minimum"))
activation_ops = set(("Relu", "Relu6", "ReluN1To1", "Sigmoid", "Tanh"))
@@ -373,13 +376,11 @@ def convert_depthwise_to_conv(op, arch):
weight_tensor.quant_values.shape
)
else:
- print(
- "Error: Unsupported DepthwiseConv2d with depth_multiplier = {0}, "
- "ifm channels = {1}, ofm channels = {2}".format(
+ raise UnsupportedFeatureError(
+ "Unsupported DepthwiseConv2d with depth_multiplier = {}, ifm channels = {}, ofm channels = {}".format(
op.attrs["depth_multiplier"], ifm_tensor.shape[3], ofm_tensor.shape[3]
)
)
- assert False
return op