aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/pass_packing.py
diff options
context:
space:
mode:
authorPatrik Gustavsson <patrik.gustavsson@arm.com>2020-12-01 16:02:29 +0100
committerPatrik Gustavsson <patrik.gustavsson@arm.com>2020-12-18 16:33:32 +0100
commit2349d429d926e258e9a61d34c7fd97660ab9fb98 (patch)
treeb5151d0f12428e47d64b1fb2ce4f2f8c19304a0d /ethosu/vela/pass_packing.py
parent528a56df829b65f7a2c61953650b123c461095f7 (diff)
downloadethos-u-vela-2349d429d926e258e9a61d34c7fd97660ab9fb98.tar.gz
MLBEDSW-3654 Add/use op ifm/ofm shapes
Add ifm/ofm shapes to op Changed to rely on these shapes Signed-off-by: Patrik Gustavsson <patrik.gustavsson@arm.com> Change-Id: I571535a1dcadc2bdb04a3c727a8e1c49703b174d
Diffstat (limited to 'ethosu/vela/pass_packing.py')
-rw-r--r--ethosu/vela/pass_packing.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/ethosu/vela/pass_packing.py b/ethosu/vela/pass_packing.py
index 9bc04f29..095a78d4 100644
--- a/ethosu/vela/pass_packing.py
+++ b/ethosu/vela/pass_packing.py
@@ -397,11 +397,28 @@ def pack_into_passes(nng, arch, verbose_packing=False):
if len(ps.inputs) > 2:
ps.ifm_tensor = ps.inputs[-2]
+
+ # Get the corresponding ifm_shapes
+ for op in input_ops_list + [primary_op]:
+ if ps.ifm_tensor == op.ifm:
+ ps.ifm_shapes.append(op.ifm_shapes[0])
+ elif ps.ifm_tensor == op.ifm2:
+ ps.ifm_shapes.append(op.ifm_shapes[1])
+ for op in input_ops_list + [primary_op]:
+ if ps.ifm2_tensor == op.ifm:
+ ps.ifm_shapes.append(op.ifm_shapes[0])
+ elif ps.ifm2_tensor == op.ifm2:
+ ps.ifm_shapes.append(op.ifm_shapes[1])
else:
ps.ifm_tensor = ifm_tensor
ps.ifm2_tensor = None
+ if ps.primary_op is not None:
+ ps.ifm_shapes.append(ps.primary_op.ifm_shapes[0])
ps.ofm_tensor = ofm_tensor
+ if ps.primary_op is not None:
+ ps.ofm_shapes.append(ps.primary_op.ofm_shapes[0])
+
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]
@@ -436,6 +453,8 @@ def pack_into_passes(nng, arch, verbose_packing=False):
avgpool_out = inp.clone("_avgpooled")
avgpool_out.consumer_list.append(op)
avgpool_op.set_output_tensor(avgpool_out)
+ avgpool_op.ifm_shapes = op.ifm_shapes
+ avgpool_op.ofm_shapes = op.ofm_shapes
op.inputs[0] = avgpool_out
op_list.insert(0, avgpool_op)