superbenchmark/superbench/cli/_benchmark_handler.py

60 строки
1.9 KiB
Python

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
"""SuperBench CLI benchmark subgroup command handler."""
import re
from pprint import pformat
from knack.util import CLIError
from superbench.benchmarks import Platform, BenchmarkRegistry
def benchmark_list_command_handler(name=None):
"""List benchmarks which match the regular expression.
Args:
name (str, optional): Benchmark name or regular expression. Defaults to None.
Raises:
CLIError: If cannot find the matching benchmark.
Returns:
list: Benchmark list.
"""
benchmark_list = list(BenchmarkRegistry.get_all_benchmark_predefine_settings().keys())
if name is None:
return benchmark_list
filter_list = list(filter(re.compile(name).match, benchmark_list))
if not filter_list:
raise CLIError('Benchmark {} does not exist.'.format(name))
return filter_list
def benchmark_list_params_command_handler(name=None):
"""List parameters for benchmarks which match the regular expression.
Args:
name (str, optional): Benchmark name or regular expression. Defaults to None.
Raises:
CLIError: If cannot find the matching benchmark.
"""
for benchmark_name in benchmark_list_command_handler(name):
format_help = ''
for platform in Platform:
if platform in BenchmarkRegistry.benchmarks[benchmark_name]:
format_help = BenchmarkRegistry.get_benchmark_configurable_settings(
BenchmarkRegistry.create_benchmark_context(benchmark_name, platform=platform)
)
break
print(
(
f'=== {benchmark_name} ===\n\n'
f'{format_help}\n\n'
f'default values:\n'
f'{pformat(BenchmarkRegistry.benchmarks[benchmark_name]["predefine_param"])}\n'
)
)