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
Copy file name to clipboardExpand all lines: docs/dependencies.rst
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -170,3 +170,14 @@ In fact, you can rewrite :func:`set_executable` function as follows:
170
170
Now it's easier to understand what the ``@require_deps`` decorator does behind the scenes.
171
171
It binds the function arguments to a partial realization of the :func:`getdep` function and attaches the decorated function as an after-setup hook.
172
172
In fact, any ``@require_deps``-decorated function will be invoked before any other after-setup hook.
173
+
174
+
175
+
.. _cleaning-up-stage-files:
176
+
177
+
Cleaning up stage files
178
+
-----------------------
179
+
180
+
In principle, the output of a test might be needed by its dependent tests.
181
+
As a result, the stage directory of the test will only be cleaned up after all of its *immediate* dependent tests have finished successfully.
182
+
If any of its children has failed, the cleanup phase will be skipped, such that all the test's files will remain in the stage directory.
183
+
This allows users to reproduce manually the error of a failed test with dependencies, since all the needed resources of the failing test are left in their original location.
Copy file name to clipboardExpand all lines: docs/manpage.rst
-9Lines changed: 0 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -366,15 +366,6 @@ If no node can be selected, the test will be marked as a failure with an appropr
366
366
This is the default policy.
367
367
- Any positive integer: Flexible tests will be assigned as many tasks as needed in order to span over the specified number of nodes from the node pool.
Copy file name to clipboardExpand all lines: docs/pipeline.rst
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,6 +91,9 @@ The Cleanup Phase
91
91
During this final stage of the pipeline, the test's resources are cleaned up.
92
92
More specifically, if the test has finished successfully, all interesting test files (build/job scripts, build/job script output and any user-specified files) are copied to ReFrame's output directory and the stage directory of the test is deleted.
93
93
94
+
.. note::
95
+
This phase might be deferred in case a test has dependents (see :ref:`cleaning-up-stage-files` for more details).
96
+
94
97
95
98
Execution Policies
96
99
------------------
@@ -129,3 +132,19 @@ ReFrame tries to keep concurrency high by maintaining as many test cases as poss
129
132
When the `concurrency limit <config_reference.html#.systems[].partitions[].max_jobs>`__ is reached, ReFrame will first try to free up execution slots by checking if any of the spawned jobs have finished, and it will fill that slots first before throttling execution.
130
133
131
134
ReFrame uses polling to check the status of the spawned jobs, but it does so in a dynamic way, in order to ensure both responsiveness and avoid overloading the system job scheduler with excessive polling.
135
+
136
+
Timing the Test Pipeline
137
+
------------------------
138
+
139
+
.. versionadded:: 3.0
140
+
141
+
ReFrame keeps track of the time a test spends in every pipeline stage and reports that after each test finishes.
142
+
However, it does so from its own perspective and not from that of the scheduler backend used.
143
+
This has some practical implications:
144
+
As soon as a test enters the "run" phase, ReFrame's timer for that phase starts ticking regardless if the associated job is pending.
145
+
Similarly, the "run" phase ends as soon as ReFrame realizes it.
146
+
This will happen after the associated job has finished.
147
+
For this reason, the time spent in the pipeline's "run" phase should *not* be interpreted as the actual runtime of the test, especially if a non-local scheduler backend is used.
148
+
149
+
Finally, the execution time of the "cleanup" phase is not reported when a test finishes, since it may be deferred in case that there exist tests that depend on that one.
150
+
See :doc:`dependencies` for more information on how ReFrame treats tests with dependencies.
[ OK ] ( 1/21) OSUBuildTest on daint:gpu using PrgEnv-pgi
144
-
[ OK ] ( 2/21) OSUBuildTest on daint:gpu using PrgEnv-gnu
145
-
[ OK ] ( 3/21) OSUBuildTest on daint:gpu using PrgEnv-intel
146
-
[ OK ] ( 4/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-pgi
147
-
[ OK ] ( 5/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-pgi
148
-
[ OK ] ( 6/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-pgi
149
-
[ OK ] ( 7/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-pgi
150
-
[ OK ] ( 8/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-gnu
151
-
[ OK ] ( 9/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-gnu
152
-
[ OK ] (10/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-gnu
153
-
[ OK ] (11/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-intel
154
-
[ OK ] (12/21) OSULatencyTest on daint:gpu using PrgEnv-pgi
155
-
[ OK ] (13/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-gnu
156
-
[ OK ] (14/21) OSULatencyTest on daint:gpu using PrgEnv-gnu
157
-
[ OK ] (15/21) OSUBandwidthTest on daint:gpu using PrgEnv-pgi
158
-
[ OK ] (16/21) OSUBandwidthTest on daint:gpu using PrgEnv-gnu
159
-
[ OK ] (17/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-intel
160
-
[ OK ] (18/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-intel
161
-
[ OK ] (19/21) OSULatencyTest on daint:gpu using PrgEnv-intel
162
-
[ OK ] (20/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-intel
163
-
[ OK ] (21/21) OSUBandwidthTest on daint:gpu using PrgEnv-intel
143
+
[ OK ] ( 1/21) OSUBuildTest on daint:gpu using PrgEnv-pgi [compile: 29.581s run: 0.086s total: 29.708s]
144
+
[ OK ] ( 2/21) OSUBuildTest on daint:gpu using PrgEnv-gnu [compile: 26.250s run: 69.120s total: 95.437s]
145
+
[ OK ] ( 3/21) OSUBuildTest on daint:gpu using PrgEnv-intel [compile: 39.385s run: 89.213s total: 129.871s]
146
+
[ OK ] ( 4/21) OSULatencyTest on daint:gpu using PrgEnv-pgi [compile: 0.012s run: 145.355s total: 154.504s]
147
+
[ OK ] ( 5/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-pgi [compile: 0.014s run: 148.276s total: 154.433s]
148
+
[ OK ] ( 6/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-pgi [compile: 0.011s run: 149.763s total: 154.407s]
149
+
[ OK ] ( 7/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-pgi [compile: 0.013s run: 151.262s total: 154.378s]
150
+
[ OK ] ( 8/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-pgi [compile: 0.010s run: 152.716s total: 154.360s]
151
+
[ OK ] ( 9/21) OSULatencyTest on daint:gpu using PrgEnv-gnu [compile: 0.014s run: 210.952s total: 220.847s]
152
+
[ OK ] (10/21) OSUBandwidthTest on daint:gpu using PrgEnv-pgi [compile: 0.015s run: 213.285s total: 220.758s]
153
+
[ OK ] (11/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-gnu [compile: 0.011s run: 215.596s total: 220.717s]
154
+
[ OK ] (12/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-gnu [compile: 0.011s run: 218.742s total: 220.651s]
155
+
[ OK ] (13/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-intel [compile: 0.013s run: 203.214s total: 206.115s]
156
+
[ OK ] (14/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-intel [compile: 0.016s run: 204.819s total: 206.078s]
157
+
[ OK ] (15/21) OSUBandwidthTest on daint:gpu using PrgEnv-gnu [compile: 0.012s run: 258.772s total: 266.873s]
158
+
[ OK ] (16/21) OSUAllreduceTest_8 on daint:gpu using PrgEnv-gnu [compile: 0.014s run: 263.576s total: 266.752s]
159
+
[ OK ] (17/21) OSULatencyTest on daint:gpu using PrgEnv-intel [compile: 0.011s run: 227.234s total: 231.789s]
160
+
[ OK ] (18/21) OSUAllreduceTest_4 on daint:gpu using PrgEnv-intel [compile: 0.013s run: 229.729s total: 231.724s]
161
+
[ OK ] (19/21) OSUAllreduceTest_2 on daint:gpu using PrgEnv-gnu [compile: 0.013s run: 286.203s total: 292.444s]
162
+
[ OK ] (20/21) OSUAllreduceTest_16 on daint:gpu using PrgEnv-intel [compile: 0.028s run: 242.030s total: 242.091s]
163
+
[ OK ] (21/21) OSUBandwidthTest on daint:gpu using PrgEnv-intel [compile: 0.013s run: 243.719s total: 247.384s]
164
164
[----------] all spawned checks have finished
165
165
166
166
[ PASSED ] Ran 21 test case(s) from 7 check(s) (0 failure(s))
167
-
[==========] Finished on Wed Mar 25 14:37:53 2020
167
+
[==========] Finished on Wed Jun 3 09:07:24 2020
168
168
169
169
Before starting running the tests, ReFrame topologically sorts them based on their dependencies and schedules them for running using the selected execution policy.
170
170
With the serial execution policy, ReFrame simply executes the tests to completion as they "arrive", since the tests are already topologically sorted.
0 commit comments