diff --git a/docs/_static/img/async-exec-policy.svg b/docs/_static/img/async-exec-policy.svg
index 198a661d3e..5dce160ee6 100644
--- a/docs/_static/img/async-exec-policy.svg
+++ b/docs/_static/img/async-exec-policy.svg
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/_static/img/regression-task-state-machine.svg b/docs/_static/img/regression-task-state-machine.svg
new file mode 100644
index 0000000000..2e822b3443
--- /dev/null
+++ b/docs/_static/img/regression-task-state-machine.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/docs/_static/img/serial-exec-policy.svg b/docs/_static/img/serial-exec-policy.svg
index 1955dfbacc..449540ba67 100644
--- a/docs/_static/img/serial-exec-policy.svg
+++ b/docs/_static/img/serial-exec-policy.svg
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/config_reference.rst b/docs/config_reference.rst
index 75caf01dd8..6820840120 100644
--- a/docs/config_reference.rst
+++ b/docs/config_reference.rst
@@ -101,6 +101,18 @@ System Configuration
A list of hostname regular expression patterns in Python `syntax `__, which will be used by the framework in order to automatically select a system configuration.
For the auto-selection process, see `here `__.
+.. js:attribute:: .systems[].max_local_jobs
+
+ The maximum number of forced local build or run jobs allowed.
+
+ Forced local jobs run within the execution context of ReFrame.
+
+ :required: No
+ :default: ``8``
+
+ .. versionadded:: 3.10.0
+
+
.. js:attribute:: .systems[].modules_system
:required: No
@@ -1289,6 +1301,30 @@ General Configuration
Timeout value in seconds used when checking if a git repository exists.
+.. js:attribute:: .general[].dump_pipeline_progress
+
+ Dump pipeline progress for the asynchronous execution policy in ``pipeline-progress.json``.
+ This option is meant for debug purposes only.
+
+ :required: No
+ :default: ``False``
+
+ .. versionadded:: 3.10.0
+
+
+.. js:attribute:: .general[].pipeline_timeout
+
+ Timeout in seconds for advancing the pipeline in the asynchronous execution policy.
+
+ ReFrame's asynchronous execution policy will try to advance as many tests as possible in their pipeline, but some tests may take too long to proceed (e.g., due to copying of large files) blocking the advancement of previously started tests.
+ If this timeout value is exceeded and at least one test has progressed, ReFrame will stop processing new tests and it will try to further advance tests that have already started.
+
+ :required: No
+ :default: ``10``
+
+ .. versionadded:: 3.10.0
+
+
.. js:attribute:: .general[].remote_detect
:required: No
diff --git a/docs/manpage.rst b/docs/manpage.rst
index b077e855bb..baec1f350e 100644
--- a/docs/manpage.rst
+++ b/docs/manpage.rst
@@ -344,13 +344,13 @@ Options controlling ReFrame execution
- ``async``: Tests will be executed asynchronously.
This is the default policy.
- The ``async`` execution policy executes the run phase of tests asynchronously by submitting their associated jobs in a non-blocking way.
- ReFrame's runtime monitors the progress of each test and will resume the pipeline execution of an asynchronously spawned test as soon as its run phase has finished.
+ The ``async`` execution policy executes the build and run phases of tests asynchronously by submitting their associated jobs in a non-blocking way.
+ ReFrame's runtime monitors the progress of each test and will resume the pipeline execution of an asynchronously spawned test as soon as its build or run phase have finished.
Note that the rest of the pipeline stages are still executed sequentially in this policy.
Concurrency can be controlled by setting the :js:attr:`max_jobs` system partition configuration parameter.
As soon as the concurrency limit is reached, ReFrame will first poll the status of all its pending tests to check if any execution slots have been freed up.
- If there are tests that have finished their run phase, ReFrame will keep pushing tests for execution until the concurrency limit is reached again.
+ If there are tests that have finished their build or run phase, ReFrame will keep pushing tests for execution until the concurrency limit is reached again.
If no execution slots are available, ReFrame will throttle job submission.
.. option:: --force-local
diff --git a/docs/pipeline.rst b/docs/pipeline.rst
index 3d9438fa6a..e7cf037a92 100644
--- a/docs/pipeline.rst
+++ b/docs/pipeline.rst
@@ -52,7 +52,8 @@ A `job descriptor `__ this phase is a no-op.
Before building the test, all the `resources `__ associated with it are copied to the test case's stage directory.
@@ -100,10 +101,10 @@ Execution Policies
All regression tests in ReFrame will execute the pipeline stages described above.
However, how exactly this pipeline will be executed is responsibility of the test execution policy.
-There are two execution policies in ReFrame: the serial and the asynchronous one.
+There are two execution policies in ReFrame: the serial and the asynchronous execution policy.
In the serial execution policy, a new test gets into the pipeline after the previous one has exited.
-As the figure below shows, this can lead to long idling times in the run phase, since the execution blocks until the associated test job finishes.
+As the figure below shows, this can lead to long idling times in the build and run phases, since the execution blocks until the associated test job finishes.
.. figure:: _static/img/serial-exec-policy.svg
@@ -114,7 +115,7 @@ As the figure below shows, this can lead to long idling times in the run phase,
In the asynchronous execution policy, multiple tests can be simultaneously on-the-fly.
-When a test enters the run phase, ReFrame does not block, but continues by picking the next test case to run.
+When a test enters the build or run phase, ReFrame does not block, but continues by picking the next test case to run.
This continues until no more test cases are left for execution or until a maximum concurrency limit is reached.
At the end, ReFrame enters a busy-wait loop monitoring the spawned test cases.
As soon as test case finishes, it resumes its pipeline and runs it to completion.
@@ -133,6 +134,67 @@ When the `concurrency limit test failed during 'compile': test staged in '/Users/user/Repositories/reframe/stage/generic/default/builtin/HelloMultiLangTest_cpp'
- [----------] finished processing HelloMultiLangTest_cpp (HelloMultiLangTest_cpp)
-
- [----------] waiting for spawned checks to finish
[ OK ] (2/2) HelloMultiLangTest_c on generic:default using builtin [compile: 0.981s run: 0.468s total: 1.475s]
[----------] all spawned checks have finished
@@ -397,17 +388,11 @@ Let's now rerun our "Hello, World!" tests:
[==========] Running 2 check(s)
[==========] Started on Tue Mar 9 23:28:00 2021
- [----------] started processing HelloMultiLangTest_c (HelloMultiLangTest_c)
+ [----------] start processing checks
[ RUN ] HelloMultiLangTest_c on catalina:default using gnu
[ RUN ] HelloMultiLangTest_c on catalina:default using clang
- [----------] finished processing HelloMultiLangTest_c (HelloMultiLangTest_c)
-
- [----------] started processing HelloMultiLangTest_cpp (HelloMultiLangTest_cpp)
[ RUN ] HelloMultiLangTest_cpp on catalina:default using gnu
[ RUN ] HelloMultiLangTest_cpp on catalina:default using clang
- [----------] finished processing HelloMultiLangTest_cpp (HelloMultiLangTest_cpp)
-
- [----------] waiting for spawned checks to finish
[ OK ] (1/4) HelloMultiLangTest_cpp on catalina:default using gnu [compile: 0.768s run: 1.115s total: 1.909s]
[ OK ] (2/4) HelloMultiLangTest_c on catalina:default using gnu [compile: 0.600s run: 2.230s total: 2.857s]
[ OK ] (3/4) HelloMultiLangTest_c on catalina:default using clang [compile: 0.238s run: 2.129s total: 2.393s]
@@ -499,12 +484,9 @@ Let's run the test now:
[==========] Running 1 check(s)
[==========] Started on Mon Oct 12 20:02:37 2020
- [----------] started processing HelloThreadedTest (HelloThreadedTest)
+ [----------] start processing checks
[ RUN ] HelloThreadedTest on catalina:default using gnu
[ RUN ] HelloThreadedTest on catalina:default using clang
- [----------] finished processing HelloThreadedTest (HelloThreadedTest)
-
- [----------] waiting for spawned checks to finish
[ OK ] (1/2) HelloThreadedTest on catalina:default using gnu [compile: 1.591s run: 1.205s total: 2.816s]
[ OK ] (2/2) HelloThreadedTest on catalina:default using clang [compile: 1.141s run: 0.309s total: 1.465s]
[----------] all spawned checks have finished
@@ -592,12 +574,9 @@ Let's run this version of the test now and see if it fails:
[==========] Running 1 check(s)
[==========] Started on Mon Oct 12 20:04:59 2020
- [----------] started processing HelloThreadedExtendedTest (HelloThreadedExtendedTest)
+ [----------] start processing checks
[ RUN ] HelloThreadedExtendedTest on catalina:default using gnu
[ RUN ] HelloThreadedExtendedTest on catalina:default using clang
- [----------] finished processing HelloThreadedExtendedTest (HelloThreadedExtendedTest)
-
- [----------] waiting for spawned checks to finish
[ FAIL ] (1/2) HelloThreadedExtendedTest on catalina:default using gnu [compile: 1.222s run: 0.891s total: 2.130s]
[ FAIL ] (2/2) HelloThreadedExtendedTest on catalina:default using clang [compile: 0.835s run: 0.167s total: 1.018s]
[----------] all spawned checks have finished
@@ -718,11 +697,8 @@ The :option:`--performance-report` will generate a short report at the end for e
[==========] Running 1 check(s)
[==========] Started on Mon Oct 12 20:06:09 2020
- [----------] started processing StreamTest (StreamTest)
+ [----------] start processing checks
[ RUN ] StreamTest on catalina:default using gnu
- [----------] finished processing StreamTest (StreamTest)
-
- [----------] waiting for spawned checks to finish
[ OK ] (1/1) StreamTest on catalina:default using gnu [compile: 1.386s run: 2.377s total: 3.780s]
[----------] all spawned checks have finished
@@ -967,7 +943,7 @@ We will only do so with the final versions of the tests from the previous sectio
[==========] Running 4 check(s)
[==========] Started on Mon Jan 25 00:34:32 2021
- [----------] started processing HelloMultiLangTest_c (HelloMultiLangTest_c)
+ [----------] start processing checks
[ RUN ] HelloMultiLangTest_c on daint:login using builtin
[ RUN ] HelloMultiLangTest_c on daint:login using gnu
[ RUN ] HelloMultiLangTest_c on daint:login using intel
@@ -981,9 +957,6 @@ We will only do so with the final versions of the tests from the previous sectio
[ RUN ] HelloMultiLangTest_c on daint:mc using intel
[ RUN ] HelloMultiLangTest_c on daint:mc using pgi
[ RUN ] HelloMultiLangTest_c on daint:mc using cray
- [----------] finished processing HelloMultiLangTest_c (HelloMultiLangTest_c)
-
- [----------] started processing HelloMultiLangTest_cpp (HelloMultiLangTest_cpp)
[ RUN ] HelloMultiLangTest_cpp on daint:login using builtin
[ RUN ] HelloMultiLangTest_cpp on daint:login using gnu
[ RUN ] HelloMultiLangTest_cpp on daint:login using intel
@@ -997,9 +970,6 @@ We will only do so with the final versions of the tests from the previous sectio
[ RUN ] HelloMultiLangTest_cpp on daint:mc using intel
[ RUN ] HelloMultiLangTest_cpp on daint:mc using pgi
[ RUN ] HelloMultiLangTest_cpp on daint:mc using cray
- [----------] finished processing HelloMultiLangTest_cpp (HelloMultiLangTest_cpp)
-
- [----------] started processing HelloThreadedExtended2Test (HelloThreadedExtended2Test)
[ RUN ] HelloThreadedExtended2Test on daint:login using builtin
[ RUN ] HelloThreadedExtended2Test on daint:login using gnu
[ RUN ] HelloThreadedExtended2Test on daint:login using intel
@@ -1013,15 +983,9 @@ We will only do so with the final versions of the tests from the previous sectio
[ RUN ] HelloThreadedExtended2Test on daint:mc using intel
[ RUN ] HelloThreadedExtended2Test on daint:mc using pgi
[ RUN ] HelloThreadedExtended2Test on daint:mc using cray
- [----------] finished processing HelloThreadedExtended2Test (HelloThreadedExtended2Test)
-
- [----------] started processing StreamWithRefTest (StreamWithRefTest)
[ RUN ] StreamWithRefTest on daint:login using gnu
[ RUN ] StreamWithRefTest on daint:gpu using gnu
[ RUN ] StreamWithRefTest on daint:mc using gnu
- [----------] finished processing StreamWithRefTest (StreamWithRefTest)
-
- [----------] waiting for spawned checks to finish
[ OK ] ( 1/42) HelloThreadedExtended2Test on daint:login using cray [compile: 0.959s run: 56.203s total: 57.189s]
[ OK ] ( 2/42) HelloThreadedExtended2Test on daint:login using intel [compile: 2.096s run: 61.438s total: 64.062s]
[ OK ] ( 3/42) HelloMultiLangTest_cpp on daint:login using cray [compile: 0.479s run: 98.909s total: 99.406s]
@@ -1205,7 +1169,7 @@ Let's run our adapted test now:
[==========] Running 1 check(s)
[==========] Started on Mon Oct 12 20:16:03 2020
- [----------] started processing StreamMultiSysTest (StreamMultiSysTest)
+ [----------] start processing checks
[ RUN ] StreamMultiSysTest on daint:login using gnu
[ RUN ] StreamMultiSysTest on daint:login using intel
[ RUN ] StreamMultiSysTest on daint:login using pgi
@@ -1218,9 +1182,6 @@ Let's run our adapted test now:
[ RUN ] StreamMultiSysTest on daint:mc using intel
[ RUN ] StreamMultiSysTest on daint:mc using pgi
[ RUN ] StreamMultiSysTest on daint:mc using cray
- [----------] finished processing StreamMultiSysTest (StreamMultiSysTest)
-
- [----------] waiting for spawned checks to finish
[ OK ] ( 1/12) StreamMultiSysTest on daint:gpu using pgi [compile: 2.092s run: 11.201s total: 13.307s]
[ OK ] ( 2/12) StreamMultiSysTest on daint:gpu using gnu [compile: 2.349s run: 17.140s total: 19.509s]
[ OK ] ( 3/12) StreamMultiSysTest on daint:login using pgi [compile: 2.230s run: 20.946s total: 23.189s]
diff --git a/docs/tutorial_deps.rst b/docs/tutorial_deps.rst
index fea0450671..e8bc2a80bd 100644
--- a/docs/tutorial_deps.rst
+++ b/docs/tutorial_deps.rst
@@ -114,7 +114,7 @@ Here is the output when running the OSU tests with the asynchronous execution po
.. code-block:: none
[ReFrame Setup]
- version: 3.6.0-dev.0+4de0fee1
+ version: 3.10.0-dev.2
command: './bin/reframe -c tutorials/deps/osu_benchmarks.py -r'
launched by: user@daint101
working directory: '/users/user/Devel/reframe'
@@ -126,96 +126,51 @@ Here is the output when running the OSU tests with the asynchronous execution po
[==========] Running 8 check(s)
[==========] Started on Wed Mar 10 20:53:56 2021
- [----------] started processing OSUDownloadTest (OSU benchmarks download sources)
+ [----------] start processing checks
[ RUN ] OSUDownloadTest on daint:login using builtin
- [----------] finished processing OSUDownloadTest (OSU benchmarks download sources)
-
- [----------] started processing OSUBuildTest (OSU benchmarks build test)
+ [ OK ] ( 1/22) OSUDownloadTest on daint:login using builtin [compile: 0.035s run: 2.520s total: 2.716s]
[ RUN ] OSUBuildTest on daint:gpu using gnu
- [ DEP ] OSUBuildTest on daint:gpu using gnu
[ RUN ] OSUBuildTest on daint:gpu using intel
- [ DEP ] OSUBuildTest on daint:gpu using intel
[ RUN ] OSUBuildTest on daint:gpu using pgi
- [ DEP ] OSUBuildTest on daint:gpu using pgi
- [----------] finished processing OSUBuildTest (OSU benchmarks build test)
-
- [----------] started processing OSULatencyTest (OSU latency test)
+ [ OK ] ( 2/22) OSUBuildTest on daint:gpu using gnu [compile: 156.713s run: 10.222s total: 170.501s]
[ RUN ] OSULatencyTest on daint:gpu using gnu
- [ DEP ] OSULatencyTest on daint:gpu using gnu
- [ RUN ] OSULatencyTest on daint:gpu using intel
- [ DEP ] OSULatencyTest on daint:gpu using intel
- [ RUN ] OSULatencyTest on daint:gpu using pgi
- [ DEP ] OSULatencyTest on daint:gpu using pgi
- [----------] finished processing OSULatencyTest (OSU latency test)
-
- [----------] started processing OSUBandwidthTest (OSU bandwidth test)
[ RUN ] OSUBandwidthTest on daint:gpu using gnu
- [ DEP ] OSUBandwidthTest on daint:gpu using gnu
- [ RUN ] OSUBandwidthTest on daint:gpu using intel
- [ DEP ] OSUBandwidthTest on daint:gpu using intel
- [ RUN ] OSUBandwidthTest on daint:gpu using pgi
- [ DEP ] OSUBandwidthTest on daint:gpu using pgi
- [----------] finished processing OSUBandwidthTest (OSU bandwidth test)
-
- [----------] started processing OSUAllreduceTest_2 (OSU Allreduce test)
[ RUN ] OSUAllreduceTest_2 on daint:gpu using gnu
- [ DEP ] OSUAllreduceTest_2 on daint:gpu using gnu
- [ RUN ] OSUAllreduceTest_2 on daint:gpu using intel
- [ DEP ] OSUAllreduceTest_2 on daint:gpu using intel
- [ RUN ] OSUAllreduceTest_2 on daint:gpu using pgi
- [ DEP ] OSUAllreduceTest_2 on daint:gpu using pgi
- [----------] finished processing OSUAllreduceTest_2 (OSU Allreduce test)
-
- [----------] started processing OSUAllreduceTest_4 (OSU Allreduce test)
[ RUN ] OSUAllreduceTest_4 on daint:gpu using gnu
- [ DEP ] OSUAllreduceTest_4 on daint:gpu using gnu
- [ RUN ] OSUAllreduceTest_4 on daint:gpu using intel
- [ DEP ] OSUAllreduceTest_4 on daint:gpu using intel
- [ RUN ] OSUAllreduceTest_4 on daint:gpu using pgi
- [ DEP ] OSUAllreduceTest_4 on daint:gpu using pgi
- [----------] finished processing OSUAllreduceTest_4 (OSU Allreduce test)
-
- [----------] started processing OSUAllreduceTest_8 (OSU Allreduce test)
+ [ RUN ] OSUAllreduceTest_16 on daint:gpu using gnu
[ RUN ] OSUAllreduceTest_8 on daint:gpu using gnu
- [ DEP ] OSUAllreduceTest_8 on daint:gpu using gnu
- [ RUN ] OSUAllreduceTest_8 on daint:gpu using intel
- [ DEP ] OSUAllreduceTest_8 on daint:gpu using intel
+ [ OK ] ( 3/22) OSUBuildTest on daint:gpu using pgi [compile: 168.692s run: 0.751s total: 171.227s]
[ RUN ] OSUAllreduceTest_8 on daint:gpu using pgi
- [ DEP ] OSUAllreduceTest_8 on daint:gpu using pgi
- [----------] finished processing OSUAllreduceTest_8 (OSU Allreduce test)
-
- [----------] started processing OSUAllreduceTest_16 (OSU Allreduce test)
- [ RUN ] OSUAllreduceTest_16 on daint:gpu using gnu
- [ DEP ] OSUAllreduceTest_16 on daint:gpu using gnu
- [ RUN ] OSUAllreduceTest_16 on daint:gpu using intel
- [ DEP ] OSUAllreduceTest_16 on daint:gpu using intel
+ [ RUN ] OSULatencyTest on daint:gpu using pgi
+ [ RUN ] OSUBandwidthTest on daint:gpu using pgi
+ [ RUN ] OSUAllreduceTest_2 on daint:gpu using pgi
+ [ RUN ] OSUAllreduceTest_4 on daint:gpu using pgi
[ RUN ] OSUAllreduceTest_16 on daint:gpu using pgi
- [ DEP ] OSUAllreduceTest_16 on daint:gpu using pgi
- [----------] finished processing OSUAllreduceTest_16 (OSU Allreduce test)
-
- [----------] waiting for spawned checks to finish
- [ OK ] ( 1/22) OSUDownloadTest on daint:login using builtin [compile: 0.007s run: 2.033s total: 2.078s]
- [ OK ] ( 2/22) OSUBuildTest on daint:gpu using gnu [compile: 20.531s run: 0.039s total: 83.089s]
- [ OK ] ( 3/22) OSUBuildTest on daint:gpu using pgi [compile: 27.193s run: 55.871s total: 83.082s]
- [ OK ] ( 4/22) OSUAllreduceTest_16 on daint:gpu using gnu [compile: 0.007s run: 30.713s total: 33.470s]
- [ OK ] ( 5/22) OSUBuildTest on daint:gpu using intel [compile: 35.256s run: 54.218s total: 116.712s]
- [ OK ] ( 6/22) OSULatencyTest on daint:gpu using pgi [compile: 0.011s run: 23.738s total: 51.190s]
- [ OK ] ( 7/22) OSUAllreduceTest_2 on daint:gpu using gnu [compile: 0.008s run: 31.879s total: 51.187s]
- [ OK ] ( 8/22) OSUAllreduceTest_4 on daint:gpu using gnu [compile: 0.006s run: 37.447s total: 51.194s]
- [ OK ] ( 9/22) OSUAllreduceTest_8 on daint:gpu using gnu [compile: 0.007s run: 42.914s total: 51.202s]
- [ OK ] (10/22) OSUAllreduceTest_16 on daint:gpu using pgi [compile: 0.006s run: 51.172s total: 51.197s]
- [ OK ] (11/22) OSULatencyTest on daint:gpu using gnu [compile: 0.007s run: 21.500s total: 51.730s]
- [ OK ] (12/22) OSUAllreduceTest_2 on daint:gpu using pgi [compile: 0.007s run: 35.083s total: 51.700s]
- [ OK ] (13/22) OSUAllreduceTest_8 on daint:gpu using pgi [compile: 0.007s run: 46.187s total: 51.681s]
- [ OK ] (14/22) OSUAllreduceTest_4 on daint:gpu using pgi [compile: 0.007s run: 41.060s total: 52.030s]
- [ OK ] (15/22) OSUAllreduceTest_2 on daint:gpu using intel [compile: 0.008s run: 27.401s total: 35.900s]
- [ OK ] (16/22) OSUBandwidthTest on daint:gpu using gnu [compile: 0.008s run: 82.553s total: 107.334s]
- [ OK ] (17/22) OSUBandwidthTest on daint:gpu using pgi [compile: 0.009s run: 87.559s total: 109.613s]
- [ OK ] (18/22) OSUAllreduceTest_16 on daint:gpu using intel [compile: 0.006s run: 99.899s total: 99.924s]
- [ OK ] (19/22) OSUBandwidthTest on daint:gpu using intel [compile: 0.007s run: 116.771s total: 128.125s]
- [ OK ] (20/22) OSULatencyTest on daint:gpu using intel [compile: 0.008s run: 114.236s total: 128.398s]
- [ OK ] (21/22) OSUAllreduceTest_8 on daint:gpu using intel [compile: 0.008s run: 125.541s total: 128.387s]
- [ OK ] (22/22) OSUAllreduceTest_4 on daint:gpu using intel [compile: 0.007s run: 123.079s total: 128.651s]
+ [ OK ] ( 4/22) OSULatencyTest on daint:gpu using gnu [compile: 0.031s run: 63.644s total: 64.558s]
+ [ OK ] ( 5/22) OSUAllreduceTest_2 on daint:gpu using gnu [compile: 0.016s run: 53.954s total: 64.619s]
+ [ OK ] ( 6/22) OSULatencyTest on daint:gpu using pgi [compile: 0.032s run: 28.134s total: 65.222s]
+ [ OK ] ( 7/22) OSUAllreduceTest_4 on daint:gpu using gnu [compile: 0.015s run: 49.682s total: 65.862s]
+ [ OK ] ( 8/22) OSUAllreduceTest_16 on daint:gpu using gnu [compile: 0.011s run: 44.188s total: 66.009s]
+ [ OK ] ( 9/22) OSUAllreduceTest_8 on daint:gpu using gnu [compile: 0.014s run: 38.366s total: 66.076s]
+ [ OK ] (10/22) OSUAllreduceTest_8 on daint:gpu using pgi [compile: 0.009s run: 34.306s total: 66.546s]
+ [ OK ] (11/22) OSUBuildTest on daint:gpu using intel [compile: 245.878s run: 0.555s total: 246.570s]
+ [ RUN ] OSUAllreduceTest_8 on daint:gpu using intel
+ [ RUN ] OSUAllreduceTest_4 on daint:gpu using intel
+ [ RUN ] OSULatencyTest on daint:gpu using intel
+ [ RUN ] OSUBandwidthTest on daint:gpu using intel
+ [ RUN ] OSUAllreduceTest_2 on daint:gpu using intel
+ [ RUN ] OSUAllreduceTest_16 on daint:gpu using intel
+ [ OK ] (12/22) OSUBandwidthTest on daint:gpu using gnu [compile: 0.017s run: 98.239s total: 104.363s]
+ [ OK ] (13/22) OSUAllreduceTest_2 on daint:gpu using pgi [compile: 0.014s run: 58.084s total: 93.705s]
+ [ OK ] (14/22) OSUAllreduceTest_4 on daint:gpu using pgi [compile: 0.023s run: 53.762s total: 82.721s]
+ [ OK ] (15/22) OSUAllreduceTest_16 on daint:gpu using pgi [compile: 0.052s run: 49.170s total: 82.695s]
+ [ OK ] (16/22) OSUBandwidthTest on daint:gpu using pgi [compile: 0.048s run: 89.141s total: 125.222s]
+ [ OK ] (17/22) OSUAllreduceTest_2 on daint:gpu using intel [compile: 0.024s run: 46.974s total: 65.742s]
+ [ OK ] (18/22) OSUAllreduceTest_8 on daint:gpu using intel [compile: 0.010s run: 70.032s total: 71.045s]
+ [ OK ] (19/22) OSUAllreduceTest_4 on daint:gpu using intel [compile: 0.045s run: 67.585s total: 72.897s]
+ [ OK ] (20/22) OSULatencyTest on daint:gpu using intel [compile: 0.013s run: 61.913s total: 73.029s]
+ [ OK ] (21/22) OSUAllreduceTest_16 on daint:gpu using intel [compile: 0.024s run: 59.141s total: 81.230s]
+ [ OK ] (22/22) OSUBandwidthTest on daint:gpu using intel [compile: 0.044s run: 121.324s total: 136.121s]
[----------] all spawned checks have finished
[ PASSED ] Ran 22/22 test case(s) from 8 check(s) (0 failure(s))
@@ -226,7 +181,7 @@ Here is the output when running the OSU tests with the asynchronous execution po
Before starting running the tests, ReFrame topologically sorts them based on their dependencies and schedules them for running using the selected execution policy.
With the serial execution policy, ReFrame simply executes the tests to completion as they "arrive," since the tests are already topologically sorted.
In the asynchronous execution policy, tests are spawned and not waited for.
-If a test's dependencies have not yet completed, it will not start its execution and a ``DEP`` message will be printed to denote this.
+If a test's dependencies have not yet completed, it will not start its execution immediately.
ReFrame's runtime takes care of properly cleaning up the resources of the tests respecting dependencies.
Normally when an individual test finishes successfully, its stage directory is cleaned up.
diff --git a/docs/tutorial_fixtures.rst b/docs/tutorial_fixtures.rst
index e8410f461f..eb51b33b1e 100644
--- a/docs/tutorial_fixtures.rst
+++ b/docs/tutorial_fixtures.rst
@@ -171,102 +171,51 @@ The following listing shows the output of running the tutorial examples.
[==========] Running 10 check(s)
[==========] Started on Sun Oct 31 22:00:28 2021
- [----------] started processing fetch_osu_benchmarks~daint (Fetch OSU benchmarks)
+ [----------] start processing checks
[ RUN ] fetch_osu_benchmarks~daint on daint:gpu using gnu
- [----------] finished processing fetch_osu_benchmarks~daint (Fetch OSU benchmarks)
-
- [----------] started processing build_osu_benchmarks~daint:gpu+gnu (Build OSU benchmarks)
- [ RUN ] build_osu_benchmarks~daint:gpu+gnu on daint:gpu using gnu
- [ DEP ] build_osu_benchmarks~daint:gpu+gnu on daint:gpu using gnu
- [----------] finished processing build_osu_benchmarks~daint:gpu+gnu (Build OSU benchmarks)
-
- [----------] started processing build_osu_benchmarks~daint:gpu+intel (Build OSU benchmarks)
+ [ OK ] ( 1/22) fetch_osu_benchmarks~daint on daint:gpu using gnu [compile: 0.007s run: 2.960s total: 2.988s]
[ RUN ] build_osu_benchmarks~daint:gpu+intel on daint:gpu using intel
- [ DEP ] build_osu_benchmarks~daint:gpu+intel on daint:gpu using intel
- [----------] finished processing build_osu_benchmarks~daint:gpu+intel (Build OSU benchmarks)
-
- [----------] started processing build_osu_benchmarks~daint:gpu+pgi (Build OSU benchmarks)
[ RUN ] build_osu_benchmarks~daint:gpu+pgi on daint:gpu using pgi
- [ DEP ] build_osu_benchmarks~daint:gpu+pgi on daint:gpu using pgi
- [----------] finished processing build_osu_benchmarks~daint:gpu+pgi (Build OSU benchmarks)
-
- [----------] started processing osu_allreduce_test_16 (OSU Allreduce test)
+ [ RUN ] build_osu_benchmarks~daint:gpu+gnu on daint:gpu using gnu
+ [ OK ] ( 2/22) build_osu_benchmarks~daint:gpu+gnu on daint:gpu using gnu [compile: 26.322s run: 2.609s total: 30.214s]
[ RUN ] osu_allreduce_test_16 on daint:gpu using gnu
- [ DEP ] osu_allreduce_test_16 on daint:gpu using gnu
- [ RUN ] osu_allreduce_test_16 on daint:gpu using intel
- [ DEP ] osu_allreduce_test_16 on daint:gpu using intel
- [ RUN ] osu_allreduce_test_16 on daint:gpu using pgi
- [ DEP ] osu_allreduce_test_16 on daint:gpu using pgi
- [----------] finished processing osu_allreduce_test_16 (OSU Allreduce test)
-
- [----------] started processing osu_allreduce_test_8 (OSU Allreduce test)
+ [ RUN ] osu_bandwidth_test on daint:gpu using gnu
+ [ RUN ] osu_latency_test on daint:gpu using gnu
+ [ RUN ] osu_allreduce_test_2 on daint:gpu using gnu
[ RUN ] osu_allreduce_test_8 on daint:gpu using gnu
- [ DEP ] osu_allreduce_test_8 on daint:gpu using gnu
- [ RUN ] osu_allreduce_test_8 on daint:gpu using intel
- [ DEP ] osu_allreduce_test_8 on daint:gpu using intel
- [ RUN ] osu_allreduce_test_8 on daint:gpu using pgi
- [ DEP ] osu_allreduce_test_8 on daint:gpu using pgi
- [----------] finished processing osu_allreduce_test_8 (OSU Allreduce test)
-
- [----------] started processing osu_allreduce_test_4 (OSU Allreduce test)
[ RUN ] osu_allreduce_test_4 on daint:gpu using gnu
- [ DEP ] osu_allreduce_test_4 on daint:gpu using gnu
+ [ OK ] ( 3/22) build_osu_benchmarks~daint:gpu+intel on daint:gpu using intel [compile: 53.068s run: 0.650s total: 53.773s]
+ [ RUN ] osu_allreduce_test_2 on daint:gpu using intel
+ [ RUN ] osu_latency_test on daint:gpu using intel
[ RUN ] osu_allreduce_test_4 on daint:gpu using intel
- [ DEP ] osu_allreduce_test_4 on daint:gpu using intel
+ [ RUN ] osu_allreduce_test_16 on daint:gpu using intel
+ [ RUN ] osu_allreduce_test_8 on daint:gpu using intel
+ [ OK ] ( 4/22) build_osu_benchmarks~daint:gpu+pgi on daint:gpu using pgi [compile: 52.482s run: 0.803s total: 53.981s]
[ RUN ] osu_allreduce_test_4 on daint:gpu using pgi
- [ DEP ] osu_allreduce_test_4 on daint:gpu using pgi
- [----------] finished processing osu_allreduce_test_4 (OSU Allreduce test)
-
- [----------] started processing osu_allreduce_test_2 (OSU Allreduce test)
- [ RUN ] osu_allreduce_test_2 on daint:gpu using gnu
- [ DEP ] osu_allreduce_test_2 on daint:gpu using gnu
- [ RUN ] osu_allreduce_test_2 on daint:gpu using intel
- [ DEP ] osu_allreduce_test_2 on daint:gpu using intel
- [ RUN ] osu_allreduce_test_2 on daint:gpu using pgi
- [ DEP ] osu_allreduce_test_2 on daint:gpu using pgi
- [----------] finished processing osu_allreduce_test_2 (OSU Allreduce test)
-
- [----------] started processing osu_bandwidth_test (OSU bandwidth test)
- [ RUN ] osu_bandwidth_test on daint:gpu using gnu
- [ DEP ] osu_bandwidth_test on daint:gpu using gnu
[ RUN ] osu_bandwidth_test on daint:gpu using intel
- [ DEP ] osu_bandwidth_test on daint:gpu using intel
- [ RUN ] osu_bandwidth_test on daint:gpu using pgi
- [ DEP ] osu_bandwidth_test on daint:gpu using pgi
- [----------] finished processing osu_bandwidth_test (OSU bandwidth test)
-
- [----------] started processing osu_latency_test (OSU latency test)
- [ RUN ] osu_latency_test on daint:gpu using gnu
- [ DEP ] osu_latency_test on daint:gpu using gnu
- [ RUN ] osu_latency_test on daint:gpu using intel
- [ DEP ] osu_latency_test on daint:gpu using intel
+ [ OK ] ( 5/22) osu_allreduce_test_16 on daint:gpu using gnu [compile: 0.015s run: 23.535s total: 23.922s]
[ RUN ] osu_latency_test on daint:gpu using pgi
- [ DEP ] osu_latency_test on daint:gpu using pgi
- [----------] finished processing osu_latency_test (OSU latency test)
-
- [----------] waiting for spawned checks to finish
- [ OK ] ( 1/22) fetch_osu_benchmarks~daint on daint:gpu using gnu [compile: 0.009s run: 2.761s total: 2.802s]
- [ OK ] ( 2/22) build_osu_benchmarks~daint:gpu+gnu on daint:gpu using gnu [compile: 25.758s run: 0.056s total: 104.626s]
- [ OK ] ( 3/22) build_osu_benchmarks~daint:gpu+pgi on daint:gpu using pgi [compile: 33.936s run: 70.452s total: 104.473s]
- [ OK ] ( 4/22) build_osu_benchmarks~daint:gpu+intel on daint:gpu using intel [compile: 44.565s run: 65.010s total: 143.664s]
- [ OK ] ( 5/22) osu_allreduce_test_4 on daint:gpu using gnu [compile: 0.011s run: 78.717s total: 101.428s]
- [ OK ] ( 6/22) osu_allreduce_test_2 on daint:gpu using pgi [compile: 0.014s run: 88.060s total: 101.409s]
- [ OK ] ( 7/22) osu_latency_test on daint:gpu using pgi [compile: 0.009s run: 101.325s total: 101.375s]
- [ OK ] ( 8/22) osu_allreduce_test_8 on daint:gpu using pgi [compile: 0.013s run: 76.031s total: 102.005s]
- [ OK ] ( 9/22) osu_allreduce_test_2 on daint:gpu using gnu [compile: 0.011s run: 85.525s total: 101.974s]
- [ OK ] (10/22) osu_allreduce_test_4 on daint:gpu using pgi [compile: 0.011s run: 82.847s total: 102.407s]
- [ OK ] (11/22) osu_allreduce_test_8 on daint:gpu using gnu [compile: 0.010s run: 77.818s total: 106.993s]
- [ OK ] (12/22) osu_latency_test on daint:gpu using gnu [compile: 0.012s run: 103.641s total: 106.858s]
- [ OK ] (13/22) osu_bandwidth_test on daint:gpu using pgi [compile: 0.011s run: 157.129s total: 164.087s]
- [ OK ] (14/22) osu_bandwidth_test on daint:gpu using gnu [compile: 0.010s run: 154.343s total: 164.540s]
- [ OK ] (15/22) osu_allreduce_test_8 on daint:gpu using intel [compile: 0.010s run: 194.643s total: 207.980s]
- [ OK ] (16/22) osu_allreduce_test_2 on daint:gpu using intel [compile: 0.013s run: 201.145s total: 207.983s]
- [ OK ] (17/22) osu_allreduce_test_4 on daint:gpu using intel [compile: 0.016s run: 198.143s total: 208.335s]
- [ OK ] (18/22) osu_latency_test on daint:gpu using intel [compile: 0.010s run: 208.271s total: 208.312s]
- [ OK ] (19/22) osu_allreduce_test_16 on daint:gpu using pgi [compile: 0.013s run: 215.854s total: 248.101s]
- [ OK ] (20/22) osu_allreduce_test_16 on daint:gpu using gnu [compile: 0.010s run: 213.190s total: 248.731s]
- [ OK ] (21/22) osu_allreduce_test_16 on daint:gpu using intel [compile: 0.010s run: 194.339s total: 210.962s]
- [ OK ] (22/22) osu_bandwidth_test on daint:gpu using intel [compile: 0.022s run: 267.171s total: 270.475s]
+ [ RUN ] osu_bandwidth_test on daint:gpu using pgi
+ [ RUN ] osu_allreduce_test_2 on daint:gpu using pgi
+ [ RUN ] osu_allreduce_test_16 on daint:gpu using pgi
+ [ RUN ] osu_allreduce_test_8 on daint:gpu using pgi
+ [ OK ] ( 6/22) osu_latency_test on daint:gpu using gnu [compile: 0.010s run: 47.016s total: 54.703s]
+ [ OK ] ( 7/22) osu_allreduce_test_2 on daint:gpu using intel [compile: 0.009s run: 41.732s total: 42.313s]
+ [ OK ] ( 8/22) osu_allreduce_test_2 on daint:gpu using gnu [compile: 0.012s run: 54.571s total: 65.684s]
+ [ OK ] ( 9/22) osu_allreduce_test_8 on daint:gpu using gnu [compile: 0.011s run: 51.414s total: 65.712s]
+ [ OK ] (10/22) osu_allreduce_test_4 on daint:gpu using gnu [compile: 0.010s run: 48.378s total: 65.741s]
+ [ OK ] (11/22) osu_latency_test on daint:gpu using intel [compile: 0.008s run: 39.131s total: 42.877s]
+ [ OK ] (12/22) osu_allreduce_test_4 on daint:gpu using intel [compile: 0.009s run: 35.861s total: 42.898s]
+ [ OK ] (13/22) osu_allreduce_test_16 on daint:gpu using intel [compile: 0.008s run: 32.300s total: 42.901s]
+ [ OK ] (14/22) osu_allreduce_test_8 on daint:gpu using intel [compile: 0.009s run: 29.237s total: 42.914s]
+ [ OK ] (15/22) osu_allreduce_test_4 on daint:gpu using pgi [compile: 0.009s run: 26.134s total: 42.904s]
+ [ OK ] (16/22) osu_latency_test on daint:gpu using pgi [compile: 0.009s run: 23.085s total: 47.232s]
+ [ OK ] (17/22) osu_allreduce_test_2 on daint:gpu using pgi [compile: 0.008s run: 17.401s total: 41.728s]
+ [ OK ] (18/22) osu_allreduce_test_16 on daint:gpu using pgi [compile: 0.008s run: 15.895s total: 36.613s]
+ [ OK ] (19/22) osu_allreduce_test_8 on daint:gpu using pgi [compile: 0.009s run: 13.485s total: 34.296s]
+ [ OK ] (20/22) osu_bandwidth_test on daint:gpu using gnu [compile: 0.011s run: 80.564s total: 85.070s]
+ [ OK ] (21/22) osu_bandwidth_test on daint:gpu using intel [compile: 0.008s run: 76.772s total: 97.828s]
+ [ OK ] (22/22) osu_bandwidth_test on daint:gpu using pgi [compile: 0.009s run: 83.003s total: 110.656s]
[----------] all spawned checks have finished
[ PASSED ] Ran 22/22 test case(s) from 10 check(s) (0 failure(s), 0 skipped)
diff --git a/docs/tutorial_tips_tricks.rst b/docs/tutorial_tips_tricks.rst
index 304a87bf5e..34efaa0713 100644
--- a/docs/tutorial_tips_tricks.rst
+++ b/docs/tutorial_tips_tricks.rst
@@ -129,7 +129,6 @@ If we run the test, we can see that the correct standard output filename will be
.. code-block:: none
- [----------] waiting for spawned checks to finish
rfm_HelloMultiLangTest_cpp_job.out
[ OK ] (1/4) HelloMultiLangTest_cpp on catalina:default using gnu [compile: 0.677s run: 0.700s total: 1.394s]
rfm_HelloMultiLangTest_c_job.out
@@ -417,7 +416,6 @@ Let's run the whole test DAG: