aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/pass_packing.py
diff options
context:
space:
mode:
authorFredrik Svedberg <fredrik.svedberg@arm.com>2020-06-03 15:43:31 +0200
committerLouis Verhaard <louis.verhaard@arm.com>2020-08-05 16:26:04 +0200
commita0c3624899edc601525a589643c802469003f89d (patch)
tree4fc52db04cd29901b3e5d4a7425a7a641e9647fb /ethosu/vela/pass_packing.py
parent9a03fdff316662be69a1adc4e391e43bc6519b08 (diff)
downloadethos-u-vela-a0c3624899edc601525a589643c802469003f89d.tar.gz
[MLBEDSW-2335] SoftMax int16
Added graph rewrite of Softmax for int16. Change-Id: Id7885af6056a23e8b8362fb61ae94283251eb398 Signed-off-by: Fredrik Svedberg <fredrik.svedberg@arm.com>
Diffstat (limited to 'ethosu/vela/pass_packing.py')
-rw-r--r--ethosu/vela/pass_packing.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/ethosu/vela/pass_packing.py b/ethosu/vela/pass_packing.py
index c14a70be..8fb95f03 100644
--- a/ethosu/vela/pass_packing.py
+++ b/ethosu/vela/pass_packing.py
@@ -66,6 +66,7 @@ mac_main_ops = set(
"MaxPool",
"AvgPoolAct",
"MaxPoolAct",
+ "ReduceSum",
# deconvolution
"ResizeBilinear",
)
@@ -85,10 +86,12 @@ binary_elem_wise_main_ops = set(
"Sub",
"Minimum",
"Maximum",
+ "SHL",
+ "SHR",
)
)
-unary_elem_wise_main_ops = set(("LeakyRelu", "Abs")) # Unary element-wise operations
+unary_elem_wise_main_ops = set(("LeakyRelu", "Abs", "CLZ",)) # Unary element-wise operations
elem_wise_main_ops = binary_elem_wise_main_ops | unary_elem_wise_main_ops
@@ -417,13 +420,12 @@ def pack_into_passes(nng, arch, verbose_packing=False):
# Swap broadcast input if applicable
broadcast_input_check(ps)
+ # If only 1 input, IFM and IFM2 will be the same tensor
ps.ifm_tensor = ps.inputs[0]
+ ps.ifm2_tensor = ps.inputs[-1]
- if len(ps.inputs) == 1:
- # Only 1 input, IFM and IFM2 are the same tensor
- ps.ifm2_tensor = ps.inputs[0]
- else:
- ps.ifm2_tensor = ps.inputs[1]
+ if len(ps.inputs) > 2:
+ ps.ifm_tensor = ps.inputs[-2]
else:
ps.ifm_tensor = ifm_tensor
ps.ifm2_tensor = None
@@ -432,6 +434,7 @@ def pack_into_passes(nng, arch, verbose_packing=False):
assert ps.placement != PassPlacement.Npu or ps.ofm_tensor is not None
ps.weight_tensor = ps.get_primary_op_ifm_weights()[1]
ps.scale_tensor = ps.get_primary_op_ifm_weights_biases_ofm()[2]
+ ps.lut_tensor = ps.get_primary_op_lut()
for op in ps.ops:
op.scheduled_pass = ps