diff options
author | Dmitrii Agibov <dmitrii.agibov@arm.com> | 2023-01-27 09:12:50 +0000 |
---|---|---|
committer | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2023-02-08 15:25:11 +0000 |
commit | 3e3dcb9bd5abb88adcd85b4f89e8a81e7f6fa293 (patch) | |
tree | 020eee6abef093113de5b49c135c915c37173843 /src/mlia/target | |
parent | 836efd40317a397761ec8b66e3f4398faac43ad0 (diff) | |
download | mlia-3e3dcb9bd5abb88adcd85b4f89e8a81e7f6fa293.tar.gz |
MLIA-595 Remove old backend configuration mechanism
- Remove old backend configuration code
- Install backends into directory ~/.mlia
- Rename targets/backends in registry to make it consistent
across codebase.
Change-Id: I9c8b012fe863280f1c692940c0dcad3ef638aaae
Diffstat (limited to 'src/mlia/target')
-rw-r--r-- | src/mlia/target/cortex_a/__init__.py | 4 | ||||
-rw-r--r-- | src/mlia/target/ethos_u/__init__.py | 6 | ||||
-rw-r--r-- | src/mlia/target/ethos_u/performance.py | 26 | ||||
-rw-r--r-- | src/mlia/target/registry.py | 18 | ||||
-rw-r--r-- | src/mlia/target/tosa/__init__.py | 4 |
5 files changed, 29 insertions, 29 deletions
diff --git a/src/mlia/target/cortex_a/__init__.py b/src/mlia/target/cortex_a/__init__.py index 9b0e611..f686bfc 100644 --- a/src/mlia/target/cortex_a/__init__.py +++ b/src/mlia/target/cortex_a/__init__.py @@ -1,7 +1,7 @@ -# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates. +# SPDX-FileCopyrightText: Copyright 2022-2023, Arm Limited and/or its affiliates. # SPDX-License-Identifier: Apache-2.0 """Cortex-A target module.""" from mlia.target.registry import registry from mlia.target.registry import TargetInfo -registry.register("Cortex-A", TargetInfo(["ArmNNTFLiteDelegate"])) +registry.register("cortex-a", TargetInfo(["ArmNNTFLiteDelegate"])) diff --git a/src/mlia/target/ethos_u/__init__.py b/src/mlia/target/ethos_u/__init__.py index 3c92ae5..d53be53 100644 --- a/src/mlia/target/ethos_u/__init__.py +++ b/src/mlia/target/ethos_u/__init__.py @@ -1,8 +1,8 @@ -# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates. +# SPDX-FileCopyrightText: Copyright 2022-2023, Arm Limited and/or its affiliates. # SPDX-License-Identifier: Apache-2.0 """Ethos-U target module.""" from mlia.target.registry import registry from mlia.target.registry import TargetInfo -registry.register("Ethos-U55", TargetInfo(["Vela", "Corstone-300", "Corstone-310"])) -registry.register("Ethos-U65", TargetInfo(["Vela", "Corstone-300", "Corstone-310"])) +registry.register("ethos-u55", TargetInfo(["Vela", "Corstone-300", "Corstone-310"])) +registry.register("ethos-u65", TargetInfo(["Vela", "Corstone-300", "Corstone-310"])) diff --git a/src/mlia/target/ethos_u/performance.py b/src/mlia/target/ethos_u/performance.py index 0d791a1..be1a287 100644 --- a/src/mlia/target/ethos_u/performance.py +++ b/src/mlia/target/ethos_u/performance.py @@ -11,20 +11,17 @@ from typing import Union import mlia.backend.vela.compiler as vela_comp import mlia.backend.vela.performance as vela_perf -from mlia.backend.corstone.performance import DeviceInfo +from mlia.backend.corstone import is_corstone_backend from mlia.backend.corstone.performance import estimate_performance -from mlia.backend.corstone.performance import ModelInfo -from mlia.backend.registry import get_supported_backends from mlia.core.context import Context from mlia.core.performance import PerformanceEstimator from mlia.nn.tensorflow.config import get_tflite_model from mlia.nn.tensorflow.config import ModelConfiguration from mlia.nn.tensorflow.optimizations.select import OptimizationSettings from mlia.target.ethos_u.config import EthosUConfiguration -from mlia.target.registry import is_supported +from mlia.target.registry import supported_backends from mlia.utils.logging import log_action - logger = logging.getLogger(__name__) @@ -186,14 +183,11 @@ class CorstonePerformanceEstimator( model_path, self.device.compiler_options, optimized_model_path ) - model_info = ModelInfo(model_path=optimized_model_path) - device_info = DeviceInfo( - device_type=self.device.target, # type: ignore - mac=self.device.mac, - ) - corstone_perf_metrics = estimate_performance( - model_info, device_info, self.backend + self.device.target, + self.device.mac, + optimized_model_path, + self.backend, ) return NPUCycles( @@ -222,11 +216,12 @@ class EthosUPerformanceEstimator( self.device = device if backends is None: backends = ["Vela"] # Only Vela is always available as default + ethos_u_backends = supported_backends(device.target) for backend in backends: - if backend != "Vela" and not is_supported(backend): + if backend != "Vela" and backend not in ethos_u_backends: raise ValueError( f"Unsupported backend '{backend}'. " - f"Only 'Vela' and {get_supported_backends()} " + f"Only 'Vela' and {ethos_u_backends} " "are supported." ) self.backends = set(backends) @@ -241,12 +236,11 @@ class EthosUPerformanceEstimator( memory_usage = None npu_cycles = None - for backend in self.backends: if backend == "Vela": vela_estimator = VelaPerformanceEstimator(self.context, self.device) memory_usage = vela_estimator.estimate(tflite_model) - elif backend in get_supported_backends(): + elif is_corstone_backend(backend): corstone_estimator = CorstonePerformanceEstimator( self.context, self.device, backend ) diff --git a/src/mlia/target/registry.py b/src/mlia/target/registry.py index 325dd04..4870fc8 100644 --- a/src/mlia/target/registry.py +++ b/src/mlia/target/registry.py @@ -3,12 +3,9 @@ """Target module.""" from __future__ import annotations -from typing import cast - from mlia.backend.config import BackendType -from mlia.backend.manager import DefaultInstallationManager +from mlia.backend.manager import get_installation_manager from mlia.backend.registry import registry as backend_registry -from mlia.cli.config import get_installation_manager from mlia.core.common import AdviceCategory from mlia.core.reporting import Column from mlia.core.reporting import Table @@ -65,14 +62,23 @@ def supported_targets(advice: AdviceCategory) -> list[str]: ] +def all_supported_backends() -> set[str]: + """Return set of all supported backends by all targets.""" + return { + backend + for item in registry.items.values() + for backend in item.supported_backends + } + + def table() -> Table: """Get a table representation of registered targets with backends.""" def get_status(backend: str) -> str: if backend_registry.items[backend].type == BackendType.BUILTIN: return BackendType.BUILTIN.name - mgr = cast(DefaultInstallationManager, get_installation_manager()) - return "INSTALLED" if mgr.already_installed(backend) else "NOT INSTALLED" + mgr = get_installation_manager() + return "INSTALLED" if mgr.backend_installed(backend) else "NOT INSTALLED" def get_advice(target: str) -> tuple[str, str, str]: supported = supported_advice(target) diff --git a/src/mlia/target/tosa/__init__.py b/src/mlia/target/tosa/__init__.py index 33c9cf2..06bf1a9 100644 --- a/src/mlia/target/tosa/__init__.py +++ b/src/mlia/target/tosa/__init__.py @@ -1,7 +1,7 @@ -# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates. +# SPDX-FileCopyrightText: Copyright 2022-2023, Arm Limited and/or its affiliates. # SPDX-License-Identifier: Apache-2.0 """TOSA target module.""" from mlia.target.registry import registry from mlia.target.registry import TargetInfo -registry.register("TOSA", TargetInfo(["TOSA-Checker"])) +registry.register("tosa", TargetInfo(["tosa-checker"])) |