diff options
author | Paul Elder <paul.elder@ideasonboard.com> | 2022-11-11 02:07:27 +0900 |
---|---|---|
committer | Paul Elder <paul.elder@ideasonboard.com> | 2022-11-25 15:37:30 +0900 |
commit | b8af2500fa900a1b18a554abf98e3f0fcb7bb350 (patch) | |
tree | bb4c4c1e1ff1054bd6081bcfe7f16d0c038b8e66 /utils/tuning/libtuning/modules | |
parent | db99d966633c5d7a5b33d03d653f1839d9feaaea (diff) |
utils: tuning: libtuning: Implement extensible components of libtuning
Implement the extensible components of libtuning. This includes:
- Parsers, for supporting different types of input config file formats
- Generators, for supporting different types of output tuning file
formats
- Modules, for supporting different tuning modules for different
algorithms and platforms
No parsers, generators, or modules are actually implemented. Only the
base classes are implemented.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'utils/tuning/libtuning/modules')
-rw-r--r-- | utils/tuning/libtuning/modules/__init__.py | 3 | ||||
-rw-r--r-- | utils/tuning/libtuning/modules/module.py | 32 |
2 files changed, 35 insertions, 0 deletions
diff --git a/utils/tuning/libtuning/modules/__init__.py b/utils/tuning/libtuning/modules/__init__.py new file mode 100644 index 00000000..9ccabb0e --- /dev/null +++ b/utils/tuning/libtuning/modules/__init__.py @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com> diff --git a/utils/tuning/libtuning/modules/module.py b/utils/tuning/libtuning/modules/module.py new file mode 100644 index 00000000..12e2fc7c --- /dev/null +++ b/utils/tuning/libtuning/modules/module.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com> +# +# module.py - Base class for algorithm-specific tuning modules + + +# @var type Type of the module. Defined in the base module. +# @var out_name The key that will be used for the algorithm in the algorithms +# dictionary in the tuning output file +# @var hr_name Human-readable module name, mostly for debugging +class Module(object): + type = 'base' + hr_name = 'Base Module' + out_name = 'GenericAlgorithm' + + def __init__(self): + pass + + def validate_config(self, config: dict) -> bool: + raise NotImplementedError + + # @brief Do the module's processing + # @param config Full configuration from the input configuration file + # @param images List of images to process + # @param outputs The outputs of all modules that were executed before this + # module. Note that this is an input parameter, and the + # output of this module should be returned directly + # @return Result of the module's processing. It may be empty. None + # indicates failure and that the result should not be used. + def process(self, config: dict, images: list, outputs: dict) -> dict: + raise NotImplementedError |