From e98f42c93b6b55e8070522ac6d980916aa2a317f Mon Sep 17 00:00:00 2001 From: Anirudh Sundar Date: Wed, 26 Jul 2023 19:53:46 +0530 Subject: [PATCH 1/2] [Hexagon] Add default vtcm capacity for targets This patch adds VTCM default capacity values for different target architectures so that it can be queried at compile time from targets --- python/tvm/target/target.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/python/tvm/target/target.py b/python/tvm/target/target.py index fb7c2827efca..b027b99b17eb 100644 --- a/python/tvm/target/target.py +++ b/python/tvm/target/target.py @@ -699,6 +699,17 @@ def get_arch_version(cpu_ver): msg = "{} is not a valid Hexagon version\nvalid versions include {}" raise ValueError(msg.format(cpu_ver, valid_hex)) from None + def get_vtcm_capacity(cpu_ver): + one_mb = 2**20 + default_vtcm_sizes = { + "v65": one_mb // 4, + "v66": one_mb // 4, + "v68": 4 * one_mb, + "v69": 8 * one_mb, + "v73": 8 * one_mb, + } + return default_vtcm_sizes.get(cpu_ver, 0) + # Target configuration: arch_version = get_arch_version(cpu_ver) config = { @@ -706,7 +717,7 @@ def get_arch_version(cpu_ver): "llvm_options": None, "use_qfloat": arch_version >= 68, "use_ieee_fp": False, - "vtcm_capacity": 0, + "vtcm_capacity": get_vtcm_capacity(cpu_ver), } config.update(kwargs) From 9324a7c3ef17e70234f7fcd75a291e67bade037c Mon Sep 17 00:00:00 2001 From: Anirudh Sundar Date: Thu, 27 Jul 2023 11:01:20 +0530 Subject: [PATCH 2/2] Update test case --- tests/python/contrib/test_hexagon/test_vtcm.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/python/contrib/test_hexagon/test_vtcm.py b/tests/python/contrib/test_hexagon/test_vtcm.py index a549588e5768..524bcb859990 100644 --- a/tests/python/contrib/test_hexagon/test_vtcm.py +++ b/tests/python/contrib/test_hexagon/test_vtcm.py @@ -79,7 +79,9 @@ def _raises_exception(f): with tvm.transform.PassContext(config={"tir.vtcm_capacity": vtcm_capacity}): assert ( - _raises_exception(lambda: tvm.build(sch.mod, target=get_hexagon_target("v68"))) + _raises_exception( + lambda: tvm.build(sch.mod, target=get_hexagon_target("v68", vtcm_capacity=0)) + ) == limited ), "Case 3 - context. VTCM memory allocation limiter does not work correctly "