diff options
author | Dwight Lidman <dwight.lidman@arm.com> | 2021-04-21 12:00:37 +0200 |
---|---|---|
committer | Dwight Lidman <dwight.lidman@arm.com> | 2021-04-21 15:12:08 +0200 |
commit | 2f75457df27da610afdf01b1c86535030b022a45 (patch) | |
tree | fba6d3d7c5182aa627ec4311d0335b0163217e91 /ethosu | |
parent | a5dd60b858c09d8e101a81335073f13ed25eb466 (diff) | |
download | ethos-u-vela-2f75457df27da610afdf01b1c86535030b022a45.tar.gz |
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
Diffstat (limited to 'ethosu')
-rw-r--r-- | ethosu/vela/architecture_features.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ethosu/vela/architecture_features.py b/ethosu/vela/architecture_features.py index 43e82655..05219859 100644 --- a/ethosu/vela/architecture_features.py +++ b/ethosu/vela/architecture_features.py @@ -180,7 +180,7 @@ class ArchitectureFeatures: 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 @@ class ArchitectureFeatures: ((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): |