utils.benchmark.benchmarker module¶
- class Benchmarker(*args, **kwargs)[source]¶
Bases:
better_abc.ABCBenchmarker class used to run benchmarks of our integrator comparing to others and perform parameter scans
- abstract benchmark_method(d, integrand, integrator_config=None, integrand_params=None, n_batch=100000, keep_history=False, device=device(type='cpu'))[source]¶
Run a single benchmark evaluation of a given integrand
- abstract generate_config_samples(dimensions, integrator_grid, integrand_grid)[source]¶
Sample over dimensions, integrator and integrand configurations from lists of possible option values.
- Parameters
dimensions (List[int]) – list of dimensions to sample from
integrator_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrator
integrand_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrand
- Yields
Tuple[int, Dict[str, Any], Dict[str, Any]] – triplets (d, integrator_config, integrand_params) that can be used to sample configurations
- run(dimensions, integrand, *, base_integrand_params, base_integrator_config=None, integrand_params_grid=None, integrator_config_grid=None, n_batch=100000, debug=True, cuda=0, sql_dtypes=None, dbname=None, experiment_name='benchmark', keep_history=False)[source]¶
Run benchmarks over a grid of parameters for the integrator and the integrand.
- set_benchmark_grid_config(config=None, dimensions=None, n_batch=None, keep_history=None, dbname=None, experiment_name=None, cuda=None, debug=None, default_dimension=(2,), base_integrand_params=())[source]¶
Prepare standard arguments for
run_benchmark_gridThe parameter importance hierarchy is:CLI arguments (direct arguments to this function)
config file (filepath given as
config)default values provided as argument
- static set_benchmark_grid_config_param(benchmark_grid_config, param, param_value, config)[source]¶
Set an argument in the configuration dictionary to be provided to
run_benchmark_gridaccording to the established hierarchy:direct argument value (typically from CLI)
config file value
default value - what is already in the config dictionary when entering this function
- Parameters
benchmark_grid_config (dict) – configuration dictionary being constructed. Keys should match the arguments of
run_benchmark_gridparam (str) – name of the parameter to be set
param_value (optional) – direct argument value for the parameter. Use the configuration dictionary if not provided
config (Configuration, optional) – Configuration nested dictionary for the benchmarking run at hand. If it is not provided or does not specify a value of
param, use the default value instead.
- class GridBenchmarker(*args, **kwargs)[source]¶
Bases:
utils.benchmark.benchmarker.BenchmarkerBenchmark by sampling configurations like a grid
- generate_config_samples(dimensions, integrator_grid, integrand_grid)[source]¶
Sample over dimensions, integrator and integrand configurations from lists of possible option values.
- Parameters
dimensions (List[int]) – list of dimensions to sample from
integrator_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrator
integrand_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrand
- Yields
Tuple[int, Dict[str, Any], Dict[str, Any]] – triplets (d, integrator_config, integrand_params) that can be used to sample configurations
- class RandomHyperparameterBenchmarker(*args, **kwargs)[source]¶
Bases:
utils.benchmark.benchmarker.BenchmarkerBenchmark by sampling integrator configurations randomly, a fixed number of times
- Parameters
n_attempts (int) – Number of random integrator configurations to draw
- generate_config_samples(dimensions, integrator_grid, integrand_grid)[source]¶
Sample over dimensions, integrator and integrand configurations from lists of possible option values.
- Parameters
dimensions (List[int]) – list of dimensions to sample from
integrator_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrator
integrand_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrand
- Yields
Tuple[int, Dict[str, Any], Dict[str, Any]] – triplets (d, integrator_config, integrand_params) that can be used to sample configurations
- class SequentialBenchmarker(*args, **kwargs)[source]¶
Bases:
utils.benchmark.benchmarker.BenchmarkerBenchmark by going through a list of integrands and matching integrator configurations (as opposed to scanning through parameters for either).
This is intended for benchmarking integrands on “optimal configurations” found through previous hyper parameter searching.
- generate_config_samples(dimensions, integrator_grid, integrand_grid)[source]¶
Sample over dimensions, integrator and integrand configurations from lists of possible option values.
- Parameters
dimensions (List[int]) – list of dimensions to sample from
integrator_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrator
integrand_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrand
- Yields
Tuple[int, Dict[str, Any], Dict[str, Any]] – triplets (d, integrator_config, integrand_params) that can be used to sample configurations
Notes
The integrator grid is interpreted as a sequence:
integrator_grid = { param1: [v1, v2, ..., vn] param2: [w1, w2, ..., wn] }
is scanned as the list of configurations
config1 = {param1: v1, param2: w1} config2 = {param1: v2, param2: w2} ...
- class SequentialIntegratorBenchmarker(*args, **kwargs)[source]¶
Bases:
utils.benchmark.benchmarker.BenchmarkerBenchmark by going through a list of full integrator configurations (as opposed to going through parameters in the configuration independently) and scan over a grid of possible integrands
- generate_config_samples(dimensions, integrator_grid, integrand_grid)[source]¶
Sample over dimensions, integrator and integrand configurations from lists of possible option values.
- Parameters
dimensions (List[int]) – list of dimensions to sample from
integrator_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrator
integrand_grid (Dict[str, List[Any]]) – mapping (option name) -> (list of values) for the integrand
- Yields
Tuple[int, Dict[str, Any], Dict[str, Any]] – triplets (d, integrator_config, integrand_params) that can be used to sample configurations
Notes
The integrator grid is interpreted as a sequence:
integrator_grid = { param1: [v1, v2, ..., vn] param2: [w1, w2, ..., wn] }
is scanned as the list of configurations
config1 = {param1: v1, param2: w1} config2 = {param1: v2, param2: w2}