You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Documentation additions to clarify the role of drivers in the
workflow subsystem and translator node introduction. Included notes
in program_startup.rst about incomplete descriptions of driver
configuration and translator node handling during graph assembly.
These notes mark areas requiring further development and
specification.
Copy file name to clipboardExpand all lines: doc/ch_subsystem_design/framework_subsystems.rst
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,7 @@ The 14 core subsystems and their dependency arrows show the following structure:
22
22
It depends on `oneTBB Flow Graph <https://oneapi-spec.uxlfoundation.org/specifications/oneapi/v1.3-rev-1/elements/onetbb/source/flow_graph>`_.
23
23
It provides the nodes that are used to represent CHOFs in the workflow.
24
24
This includes computational, provider, translator and preserver nodes.
25
+
It also provides the types used to define *drivers*, as well as framework-supplied drivers
25
26
It also provides the types that are used to represent the workflow graph as a whole.
26
27
27
28
- **Data Modeling** provides the mechanism by which users define data product types, and the tools used to translate between in-memory representations of data product concepts.
@@ -40,6 +41,13 @@ The 14 core subsystems and their dependency arrows show the following structure:
40
41
It defines an interface implemented by IO plugins.
41
42
Providers and perservers use this interface to read and write data products and metadata.
42
43
44
+
----
45
+
46
+
**From this item to the end of this subsection, the reaminder is just notes and not worthy to be discussed.**
47
+
48
+
----
49
+
50
+
43
51
- **Plugin Management** provides tools to dynamically load libraries that implement plugins.
44
52
This includes modules that create computational nodes, sources that create provider nodes.
Copy file name to clipboardExpand all lines: doc/ch_subsystem_design/program_startup.rst
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,21 +5,29 @@ At program startup, the application reads a configuration document that specifie
5
5
The configuration document specifies the modules and sources to be loaded, and provides configuration parameters for each.
6
6
Optionally, the configuration document also specifies which data products are to be written to the output.
7
7
Optionally, the configuration document also specifies what input file or files are to be read, including both physics data files (e.g. ROOT or HDF5 files in the framework's format) and ancillary data files (e.g GDML files specifying a geometry).
8
+
N.B.: this is an incomplete list of the aspects of the program that are specified by the configuration document.
9
+
10
+
N.B.: This has not description, yet, of where the *driver* configuration comes in.
11
+
8
12
9
13
Loading each module creates one or more *computational* nodes.
10
14
Computational nodes are the nodes that do physics reconstruction or simulation tasks, as opposed to the reading and writing of data.
11
15
Loading each source creates one or more *provider* nodes to be assembled into the data-flow graph.
12
16
Provider nodes are the nodes that either read data products or create data products from an input that is only a data cell index.
13
17
Once the computational and provider nodes have been created, the graph assembly begins.
14
18
15
-
First, computational nodes whose output data products satisfy the input requirements of other computational nodes are connected forming the graph.
19
+
First, computational nodes whose output data products satisfy the input requirements of other computational nodes are connected forming a graph.
20
+
N.B.: we need to determine whether translator nodes can be introduced at this step.
16
21
17
22
Next, any input ports that remain unsatisfied after this initial connection step are resolved by connecting them to provider nodes.
18
23
If a provider has been configured to deliver the required data product, that provider is connected to the unsatisfied input port.
24
+
N.B.: we need to determine whether translator nodes can be introduced at this step.
25
+
19
26
20
27
For any input port that still remains unconnected, the framework determines whether a provider that reads from I/O (possibly in combination with a data-product translator) can supply the required product.
21
28
If so, the necessary provider and translator nodes are created and added to the graph.
22
29
If no means of satisfying a required input port can be found, program startup fails, as the data-flow graph cannot be made complete.
23
30
24
31
Finally, for any created data products that the configuration specifies should be written to the output, a preserver node is created.
25
-
The preserver node is connected to the computational node that produces the data product, and is configured to write that data product to the output.
32
+
The preserver node is connected to the computational node that produces the data product, and is configured to write that data product to the output.
0 commit comments