diff options
Diffstat (limited to 'ethosu')
-rw-r--r-- | ethosu/vela/supported_operators.py | 10 | ||||
-rw-r--r-- | ethosu/vela/tflite_mapping.py | 8 |
2 files changed, 12 insertions, 6 deletions
diff --git a/ethosu/vela/supported_operators.py b/ethosu/vela/supported_operators.py index ddfb8ed9..04cda1da 100644 --- a/ethosu/vela/supported_operators.py +++ b/ethosu/vela/supported_operators.py @@ -25,6 +25,7 @@ from .numeric_util import is_integer from .operation import get_slice_offsets from .operation import Op from .tensor import check_quantized_tens_scaling_equal +from .tflite_mapping import optype_to_builtintype # Custom decorator function to allow formatting docstrings containing "{}" @@ -36,10 +37,6 @@ def docstring_format_args(args): return docstring -def warn_cpu(op, msg): - print("Warning: {} {}, placing on CPU".format(op.type, msg)) - - class SupportedOperators: # Categorised lists of supported operators npu_pre_ops = set((Op.SplitSliceRead,)) @@ -232,15 +229,16 @@ class SupportedOperators: self.specific_constraints[Op.LeakyRelu].append(SupportedOperators.constraint_alpha_valid) def is_operator_supported(self, op): + ext_type = optype_to_builtintype(op.type) if op.type not in SupportedOperators.supported_operators: if op.type not in (Op.Placeholder, Op.SubgraphInput, Op.Const): - print(f"Info: {op.type} '{op.name}' is not supported on the NPU. Placing on CPU instead") + print(f"Info: {ext_type} '{op.name}' is a CPU only op") return False for constraint in self.generic_constraints + self.specific_constraints[op.type]: valid, extra = constraint(op) if not valid: - print(f"Warning: {op.type} '{op.name}' is not supported on the NPU. Placing on CPU instead") + print(f"Warning: {ext_type} '{op.name}' is not supported on the NPU. Placing on CPU instead") print(f" - {constraint.__doc__}") if extra: print(f" {extra}") diff --git a/ethosu/vela/tflite_mapping.py b/ethosu/vela/tflite_mapping.py index 8a53039a..bbd44b0b 100644 --- a/ethosu/vela/tflite_mapping.py +++ b/ethosu/vela/tflite_mapping.py @@ -689,3 +689,11 @@ builtin_operator_map = { builtin_operator_inv_map = {v[0]: (k, v[1]) for k, v in builtin_operator_map.items()} builtin_operator_inv_map[Op.CustomNpuOp] = (BuiltinOperator.CUSTOM, CustomOptionsSerializer()) + + +def optype_to_builtintype(op_type): + if op_type in builtin_operator_inv_map: + builtin_type = builtin_operator_inv_map[op_type][0] + return next(k for k, v in vars(BuiltinOperator).items() if v == builtin_type) + else: + return "UNKNOWN" |