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>
This commit is contained in:
parent
db99d96663
commit
b8af2500fa
6 changed files with 77 additions and 0 deletions
3
utils/tuning/libtuning/generators/__init__.py
Normal file
3
utils/tuning/libtuning/generators/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
|
15
utils/tuning/libtuning/generators/generator.py
Normal file
15
utils/tuning/libtuning/generators/generator.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
|
||||||
|
#
|
||||||
|
# generator.py - Base class for a generator to convert dict to tuning file
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
class Generator(object):
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def write(self, output_path: Path, output_dict: dict, output_order: list):
|
||||||
|
raise NotImplementedError
|
3
utils/tuning/libtuning/modules/__init__.py
Normal file
3
utils/tuning/libtuning/modules/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
|
32
utils/tuning/libtuning/modules/module.py
Normal file
32
utils/tuning/libtuning/modules/module.py
Normal file
|
@ -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
|
3
utils/tuning/libtuning/parsers/__init__.py
Normal file
3
utils/tuning/libtuning/parsers/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
|
21
utils/tuning/libtuning/parsers/parser.py
Normal file
21
utils/tuning/libtuning/parsers/parser.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
|
||||||
|
#
|
||||||
|
# parser.py - Base class for a parser for a specific format of config file
|
||||||
|
|
||||||
|
class Parser(object):
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# @brief Parse a config file into a config dict
|
||||||
|
# @details The config dict shall have one key 'general' with a dict value
|
||||||
|
# for general configuration options, and all other entries shall
|
||||||
|
# have the module as the key with its configuration options (as a
|
||||||
|
# dict) as the value. The config dict shall prune entries that are
|
||||||
|
# for modules that are not in @a modules.
|
||||||
|
# @param config (str) Path to config file
|
||||||
|
# @param modules (list) List of modules
|
||||||
|
# @return (dict, list) Configuration and list of modules to disable
|
||||||
|
def parse(self, config_file: str, modules: list) -> (dict, list):
|
||||||
|
raise NotImplementedError
|
Loading…
Add table
Add a link
Reference in a new issue