Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Add parameter sweeps #1130

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft

WIP: Add parameter sweeps #1130

wants to merge 3 commits into from

Conversation

jrrrp
Copy link

@jrrrp jrrrp commented Sep 10, 2020

Sweeps are handled by one of three handlers, autofreq, range and
autoparam. range allows the user to manually specify values for
a parameter in the agenda; autofreq allows cpu frequencies to be
swept through, and autoparam allows other parameters to be swept
through.

autoparam requires the parameter to have allowed_values specified,
and the sweep specification must supply the plugin name and parameter
name as:

        sweep(autoparam):
                param: <param name>
                plugin: <plugin name>

autofreq can be used with an empty value:

        sweep(autofreq):

to sweep through all values of frequency by default, although if
plugin is specified, other parameters within cpufreq can be swept
through:

        sweep(autofreq):
                param: cpu0_frequency

For either of the above 'automatic' sweeps, a minimum and/or maximum can
be specified to limit the values generated in the sweep:

        sweep(autofreq):
                param: cpu0_frequency
                min: 1000000
                max: 1700000

range sweeps support two specification syntaxes: one for manual
specification of a list, and another for a range of values. These sweeps
only accept the plugin name as a parameter:

        sweep(range):
                threads: [1, 3, 5, 7]

or

        sweep(range):
                threads: 1-8,2
                # start-stop[,step]

These both produce the same result. step is optional and defaults to 1.

Any sweep specified in a workload entry is equivalent to manually
specifying individual workload entries, each with one of the possible
values of the sweep.

Sweeps specified in sections will create the equivalent of a section
group, each section in that group with one of the sweep values. When the
group name is specified, the 'expanded' section entry will maintain that
group name, otherwise will generate its own.

If multiple sweeps are specified in one entry, then this will be
expanded to one entry for every combination of values of each sweep.

Jonathan Paynter added 3 commits September 10, 2020 18:07
Sweeps are handled by one of three handlers, ``autofreq``, ``range`` and
``autoparam``. ``range`` allows the user to manually specify values for
a parameter in the agenda; ``autofreq`` allows cpu frequencies to be
swept through, and autoparam allows other parameters to be swept
through.

autoparam requries the parameter to have ``allowed_values`` specified,
and the sweep specification must supply the plugin name and parameter
name as:
``
	sweep(autoparam):
		param: <param name>
		plugin: <plugin name>
``

autofreq can be used with an empty value:
``
	sweep(autofreq):
``
to sweep through all values of ``frequency`` by default, although if
``plugin`` is specified, other parameters within cpufreq can be swept
through:
``
	sweep(autofreq):
		param: cpu0_frequency
``

For either of the above 'automatic' sweeps, a minimum and/or maximum can
be specified to limit the values generated in the sweep:
``
	sweep(autofreq):
		param: cpu0_frequency
		min: 1000000
		max: 1700000
``

``range`` sweeps support two specification syntaxes: one for manual
specification of a list, and another for a range of values. These sweeps
only accept the plugin name as a parameter:
``
	sweep(range):
		threads: [1, 3, 5, 7]
``
or
``
	sweep(range):
		threads: 1-8,2
		# start-stop[,step]
``
These both produce the same result. step is optional and defaults to 1.

Any sweep specified in a workload entry is equivalent to manually
specifying individual workload entries, each with one of the possible
values of the sweep.

Sweeps specified in sections will create the equivalent of a section
group, each section in that group with one of the sweep values. When the
group name is specified, the 'expanded' section entry will maintain that
group name, otherwise will generate its own.

If multiple sweeps are specified in one entry, then this will be
expanded to one entry for every combination of values of each sweep.
A label may include ``{<param_name>}`` where <param_name> is any valid
workload, boot or runtime parameter that the workload may take. The
generated job will then substitute in the value of that parameter that
was taken.

More than one parameter may be identified (within separate sets of
``{}``) within a single label, and these may be alongside normal text
similar to python replacement fields.
Add a suite of tests to test autoparam and range based sweeps.
@marcbonnici marcbonnici added the WIP Work in Progress label Jan 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WIP Work in Progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants