aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/target
diff options
context:
space:
mode:
authorDmitrii Agibov <dmitrii.agibov@arm.com>2023-01-27 09:12:50 +0000
committerBenjamin Klimczak <benjamin.klimczak@arm.com>2023-02-08 15:25:11 +0000
commit3e3dcb9bd5abb88adcd85b4f89e8a81e7f6fa293 (patch)
tree020eee6abef093113de5b49c135c915c37173843 /src/mlia/target
parent836efd40317a397761ec8b66e3f4398faac43ad0 (diff)
downloadmlia-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__.py4
-rw-r--r--src/mlia/target/ethos_u/__init__.py6
-rw-r--r--src/mlia/target/ethos_u/performance.py26
-rw-r--r--src/mlia/target/registry.py18
-rw-r--r--src/mlia/target/tosa/__init__.py4
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"]))