aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/backend
diff options
context:
space:
mode:
authorBenjamin Klimczak <benjamin.klimczak@arm.com>2023-02-02 14:02:05 +0000
committerBenjamin Klimczak <benjamin.klimczak@arm.com>2023-02-10 13:45:18 +0000
commit7a661257b6adad0c8f53e32b42ced56a1e7d952f (patch)
tree938ad8578c5b9edc0573e810ce64ce0a5bda3d8c /src/mlia/backend
parent50271dee0a84bfc481ce798184f07b5b0b4bc64d (diff)
downloadmlia-7a661257b6adad0c8f53e32b42ced56a1e7d952f.tar.gz
MLIA-769 Expand use of target/backend registries
- Use the target/backend registries to avoid hard-coded names. - Cache target profiles to avoid re-loading them Change-Id: I474b7c9ef23894e1d8a3ea06d13a37652054c62e
Diffstat (limited to 'src/mlia/backend')
-rw-r--r--src/mlia/backend/corstone/__init__.py30
-rw-r--r--src/mlia/backend/manager.py13
2 files changed, 26 insertions, 17 deletions
diff --git a/src/mlia/backend/corstone/__init__.py b/src/mlia/backend/corstone/__init__.py
index 36f74ee..b59ab65 100644
--- a/src/mlia/backend/corstone/__init__.py
+++ b/src/mlia/backend/corstone/__init__.py
@@ -7,24 +7,20 @@ from mlia.backend.config import System
from mlia.backend.registry import registry
from mlia.core.common import AdviceCategory
-registry.register(
- "Corstone-300",
- BackendConfiguration(
- supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
- supported_systems=[System.LINUX_AMD64],
- backend_type=BackendType.CUSTOM,
- ),
-)
-registry.register(
- "Corstone-310",
- BackendConfiguration(
- supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
- supported_systems=[System.LINUX_AMD64],
- backend_type=BackendType.CUSTOM,
- ),
-)
+# List of mutually exclusive Corstone backends ordered by priority
+CORSTONE_PRIORITY = ("Corstone-310", "Corstone-300")
+
+for corstone_name in CORSTONE_PRIORITY:
+ registry.register(
+ corstone_name,
+ BackendConfiguration(
+ supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
+ supported_systems=[System.LINUX_AMD64],
+ backend_type=BackendType.CUSTOM,
+ ),
+ )
def is_corstone_backend(backend_name: str) -> bool:
"""Check if backend belongs to Corstone."""
- return backend_name in ["Corstone-300", "Corstone-310"]
+ return backend_name in CORSTONE_PRIORITY
diff --git a/src/mlia/backend/manager.py b/src/mlia/backend/manager.py
index b0fa919..d953b2d 100644
--- a/src/mlia/backend/manager.py
+++ b/src/mlia/backend/manager.py
@@ -9,11 +9,13 @@ from abc import abstractmethod
from pathlib import Path
from typing import Callable
+from mlia.backend.config import BackendType
from mlia.backend.corstone.install import get_corstone_installations
from mlia.backend.install import DownloadAndInstall
from mlia.backend.install import Installation
from mlia.backend.install import InstallationType
from mlia.backend.install import InstallFromPath
+from mlia.backend.registry import registry as backend_registry
from mlia.backend.tosa_checker.install import get_tosa_backend_installation
from mlia.core.errors import ConfigurationError
from mlia.core.errors import InternalError
@@ -279,3 +281,14 @@ def get_installation_manager(noninteractive: bool = False) -> InstallationManage
backends.append(get_tosa_backend_installation())
return DefaultInstallationManager(backends, noninteractive=noninteractive)
+
+
+def get_available_backends() -> list[str]:
+ """Return list of the available backends."""
+ manager = get_installation_manager()
+ available_backends = [
+ backend
+ for backend, cfg in backend_registry.items.items()
+ if cfg.type == BackendType.BUILTIN or manager.backend_installed(backend)
+ ]
+ return available_backends