aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/devices/ethosu
diff options
context:
space:
mode:
authorDmitrii Agibov <dmitrii.agibov@arm.com>2022-11-18 16:34:03 +0000
committerDmitrii Agibov <dmitrii.agibov@arm.com>2022-11-29 14:44:13 +0000
commit37959522a805a5e23c930ed79aac84920c3cb208 (patch)
tree484af1240a93c955a72ce2e452432383b6704b56 /src/mlia/devices/ethosu
parent5568f9f000d673ac53e710dcc8991fec6e8a5488 (diff)
downloadmlia-37959522a805a5e23c930ed79aac84920c3cb208.tar.gz
Move backends functionality into separate modules
- Move backend management/executor code into module backend_core - Create separate module for each backend in "backend" module - Move each backend into corresponding module - Split Vela wrapper into several submodules Change-Id: If01b6774aab6501951212541cc5d7f5aa7c97e95
Diffstat (limited to 'src/mlia/devices/ethosu')
-rw-r--r--src/mlia/devices/ethosu/config.py4
-rw-r--r--src/mlia/devices/ethosu/data_analysis.py2
-rw-r--r--src/mlia/devices/ethosu/data_collection.py4
-rw-r--r--src/mlia/devices/ethosu/handlers.py2
-rw-r--r--src/mlia/devices/ethosu/operators.py4
-rw-r--r--src/mlia/devices/ethosu/performance.py25
-rw-r--r--src/mlia/devices/ethosu/reporters.py4
7 files changed, 25 insertions, 20 deletions
diff --git a/src/mlia/devices/ethosu/config.py b/src/mlia/devices/ethosu/config.py
index e44dcdc..f2e867e 100644
--- a/src/mlia/devices/ethosu/config.py
+++ b/src/mlia/devices/ethosu/config.py
@@ -6,9 +6,9 @@ from __future__ import annotations
import logging
from typing import Any
+from mlia.backend.vela.compiler import resolve_compiler_config
+from mlia.backend.vela.compiler import VelaCompilerOptions
from mlia.devices.config import IPConfiguration
-from mlia.tools.vela_wrapper import resolve_compiler_config
-from mlia.tools.vela_wrapper import VelaCompilerOptions
from mlia.utils.filesystem import get_profile
from mlia.utils.filesystem import get_vela_config
diff --git a/src/mlia/devices/ethosu/data_analysis.py b/src/mlia/devices/ethosu/data_analysis.py
index 70b6f65..db89a5f 100644
--- a/src/mlia/devices/ethosu/data_analysis.py
+++ b/src/mlia/devices/ethosu/data_analysis.py
@@ -6,12 +6,12 @@ from __future__ import annotations
from dataclasses import dataclass
from functools import singledispatchmethod
+from mlia.backend.vela.compat import Operators
from mlia.core.common import DataItem
from mlia.core.data_analysis import Fact
from mlia.core.data_analysis import FactExtractor
from mlia.devices.ethosu.performance import OptimizationPerformanceMetrics
from mlia.nn.tensorflow.optimizations.select import OptimizationSettings
-from mlia.tools.vela_wrapper import Operators
@dataclass
diff --git a/src/mlia/devices/ethosu/data_collection.py b/src/mlia/devices/ethosu/data_collection.py
index c8d5293..d68eadb 100644
--- a/src/mlia/devices/ethosu/data_collection.py
+++ b/src/mlia/devices/ethosu/data_collection.py
@@ -6,6 +6,8 @@ from __future__ import annotations
import logging
from pathlib import Path
+from mlia.backend.vela.compat import Operators
+from mlia.backend.vela.compat import supported_operators
from mlia.core.context import Context
from mlia.core.data_collection import ContextAwareDataCollector
from mlia.core.errors import FunctionalityNotSupportedError
@@ -20,8 +22,6 @@ from mlia.nn.tensorflow.config import KerasModel
from mlia.nn.tensorflow.optimizations.select import get_optimizer
from mlia.nn.tensorflow.optimizations.select import OptimizationSettings
from mlia.nn.tensorflow.utils import save_keras_model
-from mlia.tools.vela_wrapper import Operators
-from mlia.tools.vela_wrapper import supported_operators
from mlia.utils.logging import log_action
from mlia.utils.types import is_list_of
diff --git a/src/mlia/devices/ethosu/handlers.py b/src/mlia/devices/ethosu/handlers.py
index 48f9a2e..f010bdb 100644
--- a/src/mlia/devices/ethosu/handlers.py
+++ b/src/mlia/devices/ethosu/handlers.py
@@ -5,6 +5,7 @@ from __future__ import annotations
import logging
+from mlia.backend.vela.compat import Operators
from mlia.core.events import CollectedDataEvent
from mlia.core.handlers import WorkflowEventsHandler
from mlia.core.typing import PathOrFileLike
@@ -13,7 +14,6 @@ from mlia.devices.ethosu.events import EthosUAdvisorStartedEvent
from mlia.devices.ethosu.performance import OptimizationPerformanceMetrics
from mlia.devices.ethosu.performance import PerformanceMetrics
from mlia.devices.ethosu.reporters import ethos_u_formatters
-from mlia.tools.vela_wrapper import Operators
logger = logging.getLogger(__name__)
diff --git a/src/mlia/devices/ethosu/operators.py b/src/mlia/devices/ethosu/operators.py
index 1a4ce8d..97c2b17 100644
--- a/src/mlia/devices/ethosu/operators.py
+++ b/src/mlia/devices/ethosu/operators.py
@@ -3,7 +3,7 @@
"""Operators module."""
import logging
-from mlia.tools import vela_wrapper
+from mlia.backend.vela.compat import generate_supported_operators_report
logger = logging.getLogger(__name__)
@@ -11,4 +11,4 @@ logger = logging.getLogger(__name__)
def report() -> None:
"""Generate supported operators report."""
- vela_wrapper.generate_supported_operators_report()
+ generate_supported_operators_report()
diff --git a/src/mlia/devices/ethosu/performance.py b/src/mlia/devices/ethosu/performance.py
index 431dd89..8051d6e 100644
--- a/src/mlia/devices/ethosu/performance.py
+++ b/src/mlia/devices/ethosu/performance.py
@@ -9,8 +9,13 @@ from enum import Enum
from pathlib import Path
from typing import Union
-import mlia.backend.manager as backend_manager
-import mlia.tools.vela_wrapper as vela
+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.performance import estimate_performance
+from mlia.backend.corstone.performance import ModelInfo
+from mlia.backend.install import is_supported
+from mlia.backend.install import supported_backends
from mlia.core.context import Context
from mlia.core.performance import PerformanceEstimator
from mlia.devices.ethosu.config import EthosUConfiguration
@@ -133,7 +138,7 @@ class VelaPerformanceEstimator(
else model
)
- vela_perf_metrics = vela.estimate_performance(
+ vela_perf_metrics = vela_perf.estimate_performance(
model_path, self.device.compiler_options
)
@@ -177,17 +182,17 @@ class CorstonePerformanceEstimator(
f"{model_path.stem}_vela.tflite"
)
- vela.optimize_model(
+ vela_comp.optimize_model(
model_path, self.device.compiler_options, optimized_model_path
)
- model_info = backend_manager.ModelInfo(model_path=optimized_model_path)
- device_info = backend_manager.DeviceInfo(
+ 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 = backend_manager.estimate_performance(
+ corstone_perf_metrics = estimate_performance(
model_info, device_info, self.backend
)
@@ -218,10 +223,10 @@ class EthosUPerformanceEstimator(
if backends is None:
backends = ["Vela"] # Only Vela is always available as default
for backend in backends:
- if backend != "Vela" and not backend_manager.is_supported(backend):
+ if backend != "Vela" and not is_supported(backend):
raise ValueError(
f"Unsupported backend '{backend}'. "
- f"Only 'Vela' and {backend_manager.supported_backends()} "
+ f"Only 'Vela' and {supported_backends()} "
"are supported."
)
self.backends = set(backends)
@@ -241,7 +246,7 @@ class EthosUPerformanceEstimator(
if backend == "Vela":
vela_estimator = VelaPerformanceEstimator(self.context, self.device)
memory_usage = vela_estimator.estimate(tflite_model)
- elif backend in backend_manager.supported_backends():
+ elif backend in supported_backends():
corstone_estimator = CorstonePerformanceEstimator(
self.context, self.device, backend
)
diff --git a/src/mlia/devices/ethosu/reporters.py b/src/mlia/devices/ethosu/reporters.py
index f0fcb39..7ecaab1 100644
--- a/src/mlia/devices/ethosu/reporters.py
+++ b/src/mlia/devices/ethosu/reporters.py
@@ -7,6 +7,8 @@ from collections import defaultdict
from typing import Any
from typing import Callable
+from mlia.backend.vela.compat import Operator
+from mlia.backend.vela.compat import Operators
from mlia.core.advice_generation import Advice
from mlia.core.reporters import report_advice
from mlia.core.reporting import BytesCell
@@ -23,8 +25,6 @@ from mlia.core.reporting import SingleRow
from mlia.core.reporting import Table
from mlia.devices.ethosu.config import EthosUConfiguration
from mlia.devices.ethosu.performance import PerformanceMetrics
-from mlia.tools.vela_wrapper import Operator
-from mlia.tools.vela_wrapper import Operators
from mlia.utils.console import style_improvement
from mlia.utils.types import is_list_of