MLBEDSW-4413: MobileNet V3 regression
This commit resolves a recent regression
in multiple networks (including MobileNet V3).
The regression was caused by a recent change to
IFM block size calculation where a term mistakenly
left out (due to it missing from the spec).
The IFM microblock size has been amended for the
Ethos U-55 128 config and the block size calculations
now use these sizes instead (although equivalent with
OFM microblock sizes).
Signed-off-by: Dwight Lidman <dwight.lidman@arm.com>
Change-Id: Ic504b4becd6c3a26334a7275189d78ff0fe2cf69
diff --git a/ethosu/vela/architecture_features.py b/ethosu/vela/architecture_features.py
index 43e8265..0521985 100644
--- a/ethosu/vela/architecture_features.py
+++ b/ethosu/vela/architecture_features.py
@@ -180,7 +180,7 @@
256, 1, Block(2, 2, 8), Block(2, 2, 8), 48, [8, 8, 8, 8, 16, 8, 16, 20], 8
),
Accelerator.Ethos_U55_128: ArchitectureConfig(
- 128, 1, Block(2, 1, 8), Block(2, 2, 8), 24, [4, 4, 4, 4, 8, 4, 8, 12], 4
+ 128, 1, Block(2, 1, 8), Block(2, 1, 8), 24, [4, 4, 4, 4, 8, 4, 8, 12], 4
),
Accelerator.Ethos_U55_64: ArchitectureConfig(
64, 1, Block(1, 1, 8), Block(1, 1, 8), 16, [2, 2, 2, 2, 4, 4, 4, 8], 2
@@ -434,12 +434,16 @@
((ofm_block.height - 1) * kernel.stride.y + min(subkernel.height, dilated_kernel_height)) / upscaling
)
+ ifm_block_height = round_up(ifm_block_height, self.ifm_ublock.height)
+
# Width
dilated_kernel_width = ((kernel.width - 1) * kernel.dilation.x) + 1
ifm_block_width = round_up_to_int(
((ofm_block.width - 1) * kernel.stride.x + min(subkernel.width, dilated_kernel_width)) / upscaling
)
+ ifm_block_width = round_up(ifm_block_width, self.ifm_ublock.width)
+
return Block(ifm_block_width, ifm_block_height, ifm_block_depth)
def is_spilling_enabled(self):