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: README.developers.md
+38-27Lines changed: 38 additions & 27 deletions
Original file line number
Diff line number
Diff line change
@@ -183,7 +183,7 @@ Python files are automatically checked using `pylint` to ensure they follow esta
183
183
184
184
VTR has a variety of tests which are used to check for correctness, performance and Quality of Result (QoR).
185
185
186
-
There are 4 main regression tests:
186
+
There are 4 main regression testing suites:
187
187
188
188
*`vtr_reg_basic`: ~1 minute serial
189
189
@@ -216,24 +216,33 @@ There are 4 main regression tests:
216
216
217
217
QoR checks in this regression test are primarily 'canary' checks to catch gross degradations in QoR.
218
218
Occasionally, changes can cause QoR failures (e.g. due to CAD noise -- particularly on small benchmarks); usually such failures are not a concern if the QoR differences are small.
**Architectures:** A wider variety of architectures
227
+
228
+
**Benchmarks:** Small-medium size, diverse. All include:
229
+
230
+
* VTR benchmarks
231
+
* Additional benchmarks for each suite.
233
232
234
-
QoR checks in this regression are aimed at evaluating quality and run-time of the VTR flow.
233
+
QoR checks in these regression suites are aimed at evaluating quality and run-time of the VTR flow.
235
234
As a result any QoR failures are a concern and should be investigated and understood.
236
-
235
+
236
+
Note:
237
+
238
+
These suites comproise a single large suite, `vtr_reg_nightly` and should be run together to test nightly level regression. They are mostly similar in benchmark coverage interms of size and diversity however each suite tests some unique benchmarks in addition to the VTR benchmarks.
239
+
240
+
| suite | wall-clock time| Additional benchmarks|
241
+
|-------|----------------|----------------------|
242
+
|vtr_reg_nightly_test1|~4.5 hours with `-j8`|ISPD and MCNC20 |
243
+
|vtr_reg_nightly_test2|~6 hours with `-j8`|Titan23 and Titan `other`|
244
+
|vtr_reg_nightly_test3|~5.5 hours with `-j8`|none|
245
+
237
246
*`vtr_reg_weekly`: ~42 hours with `-j4`
238
247
239
248
**Goal:** Full QoR and Performance evaluation.
@@ -265,7 +274,9 @@ make get_ispd_benchmarks
265
274
```
266
275
They can then be run using `run_reg_test.py`:
267
276
```shell
268
-
$ ./run_reg_test.py vtr_reg_nightly
277
+
$ ./run_reg_test.py vtr_reg_nightly_test1
278
+
$ ./run_reg_test.py vtr_reg_nightly_test2
279
+
$ ./run_reg_test.py vtr_reg_nightly_test3
269
280
$ ./run_reg_test.py vtr_reg_weekly
270
281
```
271
282
@@ -564,15 +575,15 @@ A typical approach to evaluating an algorithm change would be to run `vtr_reg_qo
@@ -587,7 +598,7 @@ The are typically used as post-technology mapped netlists which have been pre-sy
587
598
They are substantially larger and more realistic than the VTR benchmarks, but can only target specifically compatible architectures.
588
599
They are used primarily to evaluate the optimization quality and scalability of VTR's CAD algorithms while targeting a fixed architecture (e.g. at a fixed channel width).
589
600
590
-
A typical approach to evaluating an algorithm change would be to run `vtr_reg_titan` task from the weekly regression test:
601
+
A typical approach to evaluating an algorithm change would be to run `titan_quick_qor` task from the nightly regression test:
591
602
#### [Running and Integrating the Titan Benchmarks with VTR](https://docs.verilogtorouting.org/en/latest/tutorials/titan_benchmarks/)
@@ -744,24 +755,24 @@ will produce ratio tables and a summary table for the files parse_results1.txt,
744
755
### Generating New QoR Golden Result
745
756
There may be times when a regression test fails its QoR test because its golden_result needs to be changed due to known changes in code behaviour. In this case, a new golden result needs to be generated so that the test can be passed. To generate a new golden result, follow the steps outlined below.
746
757
747
-
1. Move to the `vtr_flow/tasks` directory from the VTR root, and run the failing test. For example, if a test called `vtr_ex_test` in `vtr_reg_nightly` was failing:
758
+
1. Move to the `vtr_flow/tasks` directory from the VTR root, and run the failing test. For example, if a test called `vtr_ex_test` in `vtr_reg_nightly_test3` was failing:
Once the `-check_golden`command passes, the changes to the golden result can be committed so that the reg test will pass in future runs of vtr_reg_nightly.
775
+
Once the `-check_golden`command passes, the changes to the golden result can be committed so that the reg test will pass in future runs of vtr_reg_nightly_test3.
## LEVEL THREE - Nightly VTR Regression - `vtr_reg_nightly_test#`
76
+
## LEVEL THREE - Nightly VTR Regression - `vtr_reg_nightly_test#, #:1-3`
77
77
78
78
* To be run by automated build system every night and on every pull request.
79
-
* To keep the wall-clock time of this suite under ~4 hours using -j8, it is divided into multiple sub-suites, and each of them are submitted as different jobs to different kokoro machines.
80
-
* Estimated Runtime: ~15-20 hours
81
-
79
+
* To keep the wall-clock time of this suite under ~6 hours using -j8, it is divided into multiple sub-suites, and each of them are submitted as different jobs to different kokoro machines.
80
+
* Estimated runtime: 30-35 hours
81
+
82
82
DO-IT-ALL COMMAND - This command will execute, parse, and check results.
83
83
```
84
-
./run_reg_test.py vtr_reg_nightly_test#
84
+
./run_reg_test.py vtr_reg_nightly_test1
85
+
./run_reg_test.py vtr_reg_nightly_test2
86
+
./run_reg_test.py vtr_reg_nightly_test3
85
87
./run_reg_test.py vtr_reg_valgrind
86
88
```
89
+
**The below commands concern a single sub-suite (# is the sub-suite number). They have to be repeated for all sub-suites to cover all tests under Nightly VTR Regression**
* The nightly regression suite is broken up into multiple sub-suites to minimize the wall-clock when ran by CI using Kokoro machines.
155
+
* The lower bound for the run-time of the nightly regression tests is the longest vtr_flow run in all suites (currently this flow is in vtr_reg_nightly_test2/vtr_reg_qor)
156
+
* To minimize wall-clock time, tasks which have the three longest flow runs are put in seperate directories and other tasks are added to keep the
157
+
run-time for the sub-suite under ~5 hours using -j8 option on the Kokoro machines.
158
+
* The longest tasks are put at the bottom of task_list.txt to get started first (the files are read in backwards in `run_reg_test.py`
159
+
* If tasks that do not have long flow runs are to be added, it is best that they are added under vtr_reg_nightly_test1 as this suite has the smallest run-time
160
+
of all suites (~2 hours using -j8).
161
+
162
+
### Adding Sub-suites:
163
+
164
+
* If tasks with long flows that exceed ~3 hours are to be added, it is best to seperate them from the other suites and put it in a seperate test
165
+
at the bottom of the task list.
166
+
* Adding additional suites to vtr_reg_nightly comprises three steps:
167
+
- a config file (.cfg) has to be added to the config list for Kokoro machines located at `$VTR_ROOT/.github/kokoro/presubmit`. The new config should be indentical to the other config files for nightly tests (e.g. `VTR_ROOT/.github/kokoro/presubmit/nightly_test1.cfg`) , with the only difference being the value for VTR_TEST (i.e. the value should be changed to the directory name for the new suite say vtr_reg_nightly_testX).
168
+
-`$VTR_ROOT/.github/kokoro/steps/vtr-test.sh` need to be updated to recongize the new suite and zip up the output files (we don't want the machine to run of disk space ...). e.g. if the suite to be added is `vtr_reg_nightly_testX`, the following line should be added to the script in its appropriate place:
- The previous addition of .cfg file sets up the configs from our side of the repo. The new configs need to be submitted on Google's side as well for the Kokoro machines to run the new CI tests. The best person to contact to do this setup is Tim Ansell (@mithro on Github).
0 commit comments