aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/cli/config.py
diff options
context:
space:
mode:
authorDiego Russo <diego.russo@arm.com>2022-05-30 13:34:14 +0100
committerDiego Russo <diego.russo@arm.com>2022-05-30 13:34:14 +0100
commit0efca3cadbad5517a59884576ddb90cfe7ac30f8 (patch)
treeabed6cb6fbf3c439fc8d947f505b6a53d5daeb1e /src/mlia/cli/config.py
parent0777092695c143c3a54680b5748287d40c914c35 (diff)
downloadmlia-0efca3cadbad5517a59884576ddb90cfe7ac30f8.tar.gz
Add MLIA codebase0.3.0-rc.1
Add MLIA codebase including sources and tests. Change-Id: Id41707559bd721edd114793618d12ccd188d8dbd
Diffstat (limited to 'src/mlia/cli/config.py')
-rw-r--r--src/mlia/cli/config.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/mlia/cli/config.py b/src/mlia/cli/config.py
new file mode 100644
index 0000000..838b051
--- /dev/null
+++ b/src/mlia/cli/config.py
@@ -0,0 +1,64 @@
+# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
+# SPDX-License-Identifier: Apache-2.0
+"""Environment configuration functions."""
+import logging
+from functools import lru_cache
+from typing import List
+
+import mlia.tools.aiet_wrapper as aiet
+from mlia.tools.metadata.common import DefaultInstallationManager
+from mlia.tools.metadata.common import InstallationManager
+from mlia.tools.metadata.corstone import get_corstone_installations
+
+logger = logging.getLogger(__name__)
+
+
+def get_installation_manager(noninteractive: bool = False) -> InstallationManager:
+ """Return installation manager."""
+ backends = get_corstone_installations()
+
+ return DefaultInstallationManager(backends, noninteractive=noninteractive)
+
+
+@lru_cache
+def get_available_backends() -> List[str]:
+ """Return list of the available backends."""
+ available_backends = ["Vela"]
+
+ # Add backends using AIET
+ manager = get_installation_manager()
+ available_backends.extend(
+ (
+ backend
+ for backend in aiet.supported_backends()
+ if manager.backend_installed(backend)
+ )
+ )
+
+ return available_backends
+
+
+# List of mutually exclusive Corstone backends ordered by priority
+_CORSTONE_EXCLUSIVE_PRIORITY = ("Corstone-310", "Corstone-300")
+
+
+def get_default_backends() -> List[str]:
+ """Get default backends for evaluation."""
+ backends = get_available_backends()
+
+ # Filter backends to only include one Corstone backend
+ for corstone in _CORSTONE_EXCLUSIVE_PRIORITY:
+ if corstone in backends:
+ backends = [
+ backend
+ for backend in backends
+ if backend == corstone or backend not in _CORSTONE_EXCLUSIVE_PRIORITY
+ ]
+ break
+
+ return backends
+
+
+def is_corstone_backend(backend: str) -> bool:
+ """Check if the given backend is a Corstone backend."""
+ return backend in _CORSTONE_EXCLUSIVE_PRIORITY