aboutsummaryrefslogtreecommitdiff
path: root/doc/source/user_information/user_reference/agenda.rst
blob: 1bac5f818d668401fbcb5fc432b72d936a12527a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
.. _agenda-reference:

Agenda
------


An agenda can be thought of as defining an experiment as it specifies what is to
be done during a Workload Automation run. This includes which workloads will be
run, with what configuration and which augmentations will be enabled, etc.

Agenda syntax is designed to be both succinct and expressive and are written
using YAML notation.

There are three valid top level entries which are: ``"config"``, ``"workloads"``,
``"sections"``.


config
^^^^^^^

This section is used to provide overall configuration for WA and its run. The
``config`` section of an agenda will be merged with any other configuration
files provided (including the default config file) and merged with the most
specific configuration taking precedence (see :ref:`here <config-merging>` for
more information.

Within this section there are multiple distinct types of configuration that can be
provided.

Run Config
~~~~~~~~~~

The first is to configure the behaviour of WA and how a run as a
whole will behave. The most common that you may want to specify are:

- :confval:`device` - The name of the 'device' that you wish to perform the run
  on. This name is a combination of a devlib
  `Platform <http://devlib.readthedocs.io/en/latest/platform.html>`_ and
  `Target <http://devlib.readthedocs.io/en/latest/target.html>`_.
  To see the available options please use ``wa list targets``.
- :confval:`device_config` - The is a dict mapping allowing you to configure
  which target to connect to  (e.g. ``host`` for an SSH connection or ``device``
  to specific an ADB name) as well as configure other options for the device for
  example the ``working_directory`` or the list of ``modules`` to be loaded onto
  the device.

For more information and a full list of these configuration options please see
:ref:`Run Configuration <run-configuration>`.

Meta Configuration
~~~~~~~~~~~~~~~~~~

The next type of configuration options are the `"Meta Configuration"` options
(for a full list please see :ref:`here <meta-configuration>`) and these are used
to configure the behaviour of WA framework itself, for example directory
locations to be used or logging configuration.


Plugins
~~~~~~~
You can also use this section to supply configuration for specific plugins, such
as augmentations, workloads, resource getters etc. To do this the plugin name
you wish to configure should be provided as an entry in this section and should
contain a mapping of configuration options to their desired settings. If
configuration is supplied for a plugin that is not currently enabled then it will
simply be ignored. This allows for plugins to be temporarily removed
without also having to remove their configuration, or to provide a set of
defaults for a plugin which can then be overridden.

Some plugins provide global aliases which can set one or more configuration
options at once, and these can also bee specified here. For example specifying
the entry ``remote_assets_url`` with a corresponding  value will set the URL the
http resource getter will attempt to search for any missing assets at.


augmentations
"""""""""""""
As mentioned above this section should be used to configure augmentations, both
to specify which should be enabled and disabled and also to provide any relevant
configuration. The ``"augmentation"`` entry, if present, should be a list of
augmentations that should be enabled (or if prefixed with a ``~``, disabled).

.. note:: While augmentations can be enabled and disabled on a per workload
          basis, they cannot yet be re-configured part way through a run and the
          configuration provided as part of an agenda config section or separate
          config file will be used for all jobs in a WA run.

workloads
"""""""""
In addition to configuring individual workloads both in the ``workloads`` and
``sections`` entries you can also provide configuration at this level which will
apply globally in the same style mentioned below. Any configuration provided
here will be overridden if specified again in subsequent sections.


workloads
^^^^^^^^^

Here you can specify a list of workloads to be ran. If you wish to run a
workload with all default values then you can specify the workload name directly
as an entry, otherwise a dict mapping should be provided. Any settings provided
here will be the most specific and therefore override any other more generalised
configuration for that particular workload spec. The valid entries are as
follows:

- :confval:`workload_name` (Mandatory) - The name of the workload to be ran
- :confval:`iterations` - Specify how many iterations the workload should be ran
- :confval:`label` - Similar to IDs but do not have the uniqueness restriction.
  If specified, labels will be used by some output processors instead of (or in
  addition to) the workload name. For example, the csv output processor will put
  the label in the "workload" column of the CSV file.
- :confval:`augmentations` - The instruments and output processors to enable (or
  disabled using a ~) during this workload.
- :confval:`classifiers` Classifiers allow you to tag metrics from this workload
  spec which are often used to help identify what runtime parameters were used
  when post processing results.
- :confval:`workload_parameters` [*workload_params*] - Any parameters to
  configure that particular workload in a dict form.

      .. note:: You can see available parameters for a given workload with the
                :ref:`show command <show-command>`.

- :confval:`runtime_parameters` [*runtime_parms*] - A dict mapping of any
  runtime parameters that should be set for the device for that particular
  workload. For available parameters please see :ref:`runtime parameters
  <runtime-parameters>`.

     .. note:: Unless specified elsewhere these configurations will not be
               undone once the workload has finished. I.e. if the frequency of a
               core is changed it will remain at that frequency until otherwise
               changed.

.. note:: There is also a shorter ``params`` alias available, however this alias will be
          interpreted differently depending on whether it is used in workload
          entry, in which case it will be interpreted as ``workload_params``, or
          at global config or section (see below) level, in which case it will
          be interpreted as ``runtime_params``.


sections
^^^^^^^^

Sections are used for for grouping sets of configuration together in order to
reduce the need for duplicated configuration (for more information please see
:ref:`here <sections>`). Each section specified will be applied for each entry
in the ``workloads`` section. The valid configuration entries are the same
as the ``"workloads"`` section as mentioned above, except you can
additionally specify a "workloads" entry which can be provided with the same
configuration entries as the ``"workloads"`` top level entry.