aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenjamin Klimczak <benjamin.klimczak@arm.com>2023-04-05 17:06:56 +0100
committerBenjamin Klimczak <benjamin.klimczak@arm.com>2023-04-11 13:27:31 +0100
commit8d00200d5aa2011bc91ccc688ee93caf5b6980f6 (patch)
treecfd80a2cc6d6772888c8aabf93d53329e0f92b01 /src
parentc7c894ee0721b1076fcea25506d7b84772cc5704 (diff)
downloadmlia-8d00200d5aa2011bc91ccc688ee93caf5b6980f6.tar.gz
MLIA-825 Make backend installation more generic
Use the backend registry to manage installation routines for different backends as well. This makes the process more generic and allows us to move towards plug & play for backends (i.e. there should be no code changes needed in the general MLIA code to add/support new backends). Change-Id: Ib7c772ec52b2f4d857c2c9871e44dfff97e9d970
Diffstat (limited to 'src')
-rw-r--r--src/mlia/backend/armnn_tflite_delegate/__init__.py1
-rw-r--r--src/mlia/backend/config.py5
-rw-r--r--src/mlia/backend/corstone/__init__.py11
-rw-r--r--src/mlia/backend/manager.py8
-rw-r--r--src/mlia/backend/tosa_checker/__init__.py2
-rw-r--r--src/mlia/backend/vela/__init__.py1
6 files changed, 20 insertions, 8 deletions
diff --git a/src/mlia/backend/armnn_tflite_delegate/__init__.py b/src/mlia/backend/armnn_tflite_delegate/__init__.py
index 66e5a2a..c190088 100644
--- a/src/mlia/backend/armnn_tflite_delegate/__init__.py
+++ b/src/mlia/backend/armnn_tflite_delegate/__init__.py
@@ -15,6 +15,7 @@ registry.register(
supported_advice=[AdviceCategory.COMPATIBILITY],
supported_systems=None,
backend_type=BackendType.BUILTIN,
+ installation=None,
),
pretty_name=cast(str, ARMNN_TFLITE_DELEGATE["backend"]),
)
diff --git a/src/mlia/backend/config.py b/src/mlia/backend/config.py
index 8d14b28..2e34ffb 100644
--- a/src/mlia/backend/config.py
+++ b/src/mlia/backend/config.py
@@ -1,4 +1,4 @@
-# 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
"""Backend config module."""
from __future__ import annotations
@@ -8,6 +8,7 @@ from enum import auto
from enum import Enum
from typing import cast
+from mlia.backend.install import Installation
from mlia.core.common import AdviceCategory
@@ -59,11 +60,13 @@ class BackendConfiguration:
supported_advice: list[AdviceCategory],
supported_systems: list[System] | None,
backend_type: BackendType,
+ installation: Installation | None,
) -> None:
"""Set up basic information about the backend."""
self.supported_advice = supported_advice
self.supported_systems = supported_systems
self.type = backend_type
+ self.installation = installation
def __str__(self) -> str:
"""List supported advice."""
diff --git a/src/mlia/backend/corstone/__init__.py b/src/mlia/backend/corstone/__init__.py
index 5aa688b..7575ceb 100644
--- a/src/mlia/backend/corstone/__init__.py
+++ b/src/mlia/backend/corstone/__init__.py
@@ -4,19 +4,26 @@
from mlia.backend.config import BackendConfiguration
from mlia.backend.config import BackendType
from mlia.backend.config import System
+from mlia.backend.corstone.install import get_corstone_300_installation
+from mlia.backend.corstone.install import get_corstone_310_installation
from mlia.backend.registry import registry
from mlia.core.common import AdviceCategory
# List of mutually exclusive Corstone backends ordered by priority
-CORSTONE_PRIORITY = ("Corstone-310", "Corstone-300")
+CORSTONE_PRIORITY = {
+ "Corstone-310": get_corstone_310_installation(),
+ "Corstone-300": get_corstone_300_installation(),
+}
-for corstone_name in CORSTONE_PRIORITY:
+
+for corstone_name, installation in CORSTONE_PRIORITY.items():
registry.register(
corstone_name.lower(),
BackendConfiguration(
supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
supported_systems=[System.LINUX_AMD64],
backend_type=BackendType.CUSTOM,
+ installation=installation,
),
pretty_name=corstone_name,
)
diff --git a/src/mlia/backend/manager.py b/src/mlia/backend/manager.py
index d953b2d..5a60f95 100644
--- a/src/mlia/backend/manager.py
+++ b/src/mlia/backend/manager.py
@@ -10,13 +10,11 @@ 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
from mlia.utils.misc import yes
@@ -277,9 +275,9 @@ class DefaultInstallationManager(InstallationManager, InstallationFiltersMixin):
def get_installation_manager(noninteractive: bool = False) -> InstallationManager:
"""Return installation manager."""
- backends = get_corstone_installations()
- backends.append(get_tosa_backend_installation())
-
+ backends = [
+ cfg.installation for cfg in backend_registry.items.values() if cfg.installation
+ ]
return DefaultInstallationManager(backends, noninteractive=noninteractive)
diff --git a/src/mlia/backend/tosa_checker/__init__.py b/src/mlia/backend/tosa_checker/__init__.py
index d2364cb..08e44d4 100644
--- a/src/mlia/backend/tosa_checker/__init__.py
+++ b/src/mlia/backend/tosa_checker/__init__.py
@@ -5,6 +5,7 @@ from mlia.backend.config import BackendConfiguration
from mlia.backend.config import BackendType
from mlia.backend.config import System
from mlia.backend.registry import registry
+from mlia.backend.tosa_checker.install import get_tosa_backend_installation
from mlia.core.common import AdviceCategory
registry.register(
@@ -13,6 +14,7 @@ registry.register(
supported_advice=[AdviceCategory.COMPATIBILITY],
supported_systems=[System.LINUX_AMD64],
backend_type=BackendType.WHEEL,
+ installation=get_tosa_backend_installation(),
),
pretty_name="TOSA Checker",
)
diff --git a/src/mlia/backend/vela/__init__.py b/src/mlia/backend/vela/__init__.py
index 7325630..b0788b0 100644
--- a/src/mlia/backend/vela/__init__.py
+++ b/src/mlia/backend/vela/__init__.py
@@ -22,6 +22,7 @@ registry.register(
System.WINDOWS_AARCH64,
],
backend_type=BackendType.BUILTIN,
+ installation=None,
),
pretty_name="Vela",
)