aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/high_level_command_stream_generator.py
diff options
context:
space:
mode:
authorRickard Bolin <rickard.bolin@arm.com>2022-01-07 14:22:52 +0000
committerRickard Bolin <rickard.bolin@arm.com>2022-01-12 10:00:56 +0000
commit1c08afa0ed049edd486498e62bab94a4dc7924bc (patch)
tree451e53d3a8275d2ac774e6267ca96835d9189e9e /ethosu/vela/high_level_command_stream_generator.py
parentbdb1d6e0fce5e52979f3a5742aaddd3a68b9a0f2 (diff)
downloadethos-u-vela-1c08afa0ed049edd486498e62bab94a4dc7924bc.tar.gz
MLBEDSW-5534: Enet_640_640_int8 output diff
The output diff is caused by not including the kernel dilation when calculating the bottom padding to be used on the last h_stripe. This only shows up when using dedicated_sram since shared_sram does not split into multiple h_stripes and thus uses the padding specified by the skirt instead. Signed-off-by: Rickard Bolin <rickard.bolin@arm.com> Change-Id: I7f643748b153004d65be2124c0ac6c9d21cd803f
Diffstat (limited to 'ethosu/vela/high_level_command_stream_generator.py')
-rw-r--r--ethosu/vela/high_level_command_stream_generator.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/ethosu/vela/high_level_command_stream_generator.py b/ethosu/vela/high_level_command_stream_generator.py
index 3d0a1e58..f0d74098 100644
--- a/ethosu/vela/high_level_command_stream_generator.py
+++ b/ethosu/vela/high_level_command_stream_generator.py
@@ -82,7 +82,7 @@ def generate_high_level_commands_for_sched_op(sched_op, schedule):
elif sched_op.op_type == Op.ResizeBilinear:
upscaling = round_up_divide(ofm_shape.height, ifm.shape.height)
- # Get Kernel height
+ # Get kernel height and height dilation
k_height = 1
if npu_block_type in (NpuBlockType.Pooling, NpuBlockType.ReduceSum):
if parent_op is not None:
@@ -91,6 +91,11 @@ def generate_high_level_commands_for_sched_op(sched_op, schedule):
if uncomp_weight_tensor is not None:
k_height = uncomp_weight_tensor.shape[0]
+ k_height_dilation = parent_op.attrs.get("dilation", (_, 1, _, _))[-3]
+
+ # Calculate dilated kernel height
+ k_dilated_height = k_height_dilation * (k_height - 1) + 1
+
# Define Start and End coordinates for the OFM
ofm_start = Shape4D(0, 0, 0, op_info.ofm_depth_slices[0])
ofm_end = ofm_shape
@@ -150,9 +155,9 @@ def generate_high_level_commands_for_sched_op(sched_op, schedule):
ifm.shape,
npu_block_type,
write_offset.as_list(),
+ k_dilated_height,
read_offsets[0],
read_shapes[0],
- k_height,
upscaling,
)
@@ -164,9 +169,9 @@ def generate_high_level_commands_for_sched_op(sched_op, schedule):
ifm2.shape,
npu_block_type,
write_offset.as_list(),
+ k_dilated_height,
read_offsets[1],
read_shapes[1],
- k_height,
upscaling,
)