From 557544445dce448930d5d95f51b46d383124f152 Mon Sep 17 00:00:00 2001 From: Aleksei-grovety <113356454+Aleksei-grovety@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:32:04 +0400 Subject: [PATCH 1/4] [microNPU][ETHOSU] Add option to disable copying constants for case without cascader Added the option to disable copying constants for the case when the user determines in the linker script for section ".rodata.tvm" that the constants are located in SRAM. --- .../tvm/relay/backend/contrib/ethosu/codegen.py | 3 ++- python/tvm/relay/backend/contrib/ethosu/util.py | 6 ++++++ .../backend/contrib/ethosu/compiler_attrs.cc | 4 ++++ .../python/contrib/test_ethosu/test_scheduler.py | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/python/tvm/relay/backend/contrib/ethosu/codegen.py b/python/tvm/relay/backend/contrib/ethosu/codegen.py index 5a5f1478e16e..e40053d49ac9 100644 --- a/python/tvm/relay/backend/contrib/ethosu/codegen.py +++ b/python/tvm/relay/backend/contrib/ethosu/codegen.py @@ -526,7 +526,8 @@ def relay_to_tir(mod: tvm.ir.IRModule) -> tvm.ir.IRModule: sram = extract_memory_info(workspace_memory_pools.pools[0], memory_pressure) tir_mod = LowerToTIR(_ethos_u55_cascader(sram, util.is_striping_enabled()))(mod) else: - tir_mod = LowerToTIR(copy_constants())(mod) + scheduler = None if util.is_copying_constants_disabled() else copy_constants() + tir_mod = LowerToTIR(scheduler)(mod) return tir_mod diff --git a/python/tvm/relay/backend/contrib/ethosu/util.py b/python/tvm/relay/backend/contrib/ethosu/util.py index f0c753814f63..7224f97d6056 100644 --- a/python/tvm/relay/backend/contrib/ethosu/util.py +++ b/python/tvm/relay/backend/contrib/ethosu/util.py @@ -258,6 +258,12 @@ def is_cascader_enabled(): return compiler_attrs.enable_cascader +def is_copying_constants_disabled(): + """Determine whether copying constants is disabled for case without cascader""" + compiler_attrs = tvm.get_global_func("relay.ext.ethos-u.get_compiler_attrs")() + return compiler_attrs.disable_copying_constants + + def is_striping_enabled(): """Determine whether the cascader is enabled""" compiler_attrs = tvm.get_global_func("relay.ext.ethos-u.get_compiler_attrs")() diff --git a/src/relay/backend/contrib/ethosu/compiler_attrs.cc b/src/relay/backend/contrib/ethosu/compiler_attrs.cc index 6c825a18901a..057f5b2440dc 100644 --- a/src/relay/backend/contrib/ethosu/compiler_attrs.cc +++ b/src/relay/backend/contrib/ethosu/compiler_attrs.cc @@ -41,6 +41,7 @@ struct EthosUCompilerConfigNode : public tvm::AttrsNode Date: Mon, 26 Jun 2023 15:33:29 +0400 Subject: [PATCH 2/4] Fix compiler attribute type to pass this parameter to tvmc via command line --- src/relay/backend/contrib/ethosu/compiler_attrs.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/relay/backend/contrib/ethosu/compiler_attrs.cc b/src/relay/backend/contrib/ethosu/compiler_attrs.cc index 057f5b2440dc..8f10605e0419 100644 --- a/src/relay/backend/contrib/ethosu/compiler_attrs.cc +++ b/src/relay/backend/contrib/ethosu/compiler_attrs.cc @@ -41,7 +41,7 @@ struct EthosUCompilerConfigNode : public tvm::AttrsNode Date: Mon, 26 Jun 2023 17:44:35 +0400 Subject: [PATCH 3/4] Update return type for is_copying_constants_disabled --- python/tvm/relay/backend/contrib/ethosu/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/tvm/relay/backend/contrib/ethosu/util.py b/python/tvm/relay/backend/contrib/ethosu/util.py index 7224f97d6056..6533bab7d272 100644 --- a/python/tvm/relay/backend/contrib/ethosu/util.py +++ b/python/tvm/relay/backend/contrib/ethosu/util.py @@ -258,10 +258,10 @@ def is_cascader_enabled(): return compiler_attrs.enable_cascader -def is_copying_constants_disabled(): +def is_copying_constants_disabled() -> bool: """Determine whether copying constants is disabled for case without cascader""" compiler_attrs = tvm.get_global_func("relay.ext.ethos-u.get_compiler_attrs")() - return compiler_attrs.disable_copying_constants + return bool(compiler_attrs.disable_copying_constants) def is_striping_enabled(): From 0e4a25f24ca8bb7050d95e2fe40298c2b057e492 Mon Sep 17 00:00:00 2001 From: Aleksei-grovety <113356454+Aleksei-grovety@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:45:30 +0400 Subject: [PATCH 4/4] Update description --- src/relay/backend/contrib/ethosu/compiler_attrs.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/relay/backend/contrib/ethosu/compiler_attrs.cc b/src/relay/backend/contrib/ethosu/compiler_attrs.cc index 8f10605e0419..237ccecf54d3 100644 --- a/src/relay/backend/contrib/ethosu/compiler_attrs.cc +++ b/src/relay/backend/contrib/ethosu/compiler_attrs.cc @@ -61,7 +61,12 @@ struct EthosUCompilerConfigNode : public tvm::AttrsNode