MantisBT - CMake | |||||
| View Issue Details | |||||
| ID | Project | Category | View Status | Date Submitted | Last Update |
| 0008701 | CMake | CTest | public | 2009-03-08 00:06 | 2016-06-10 14:30 |
| Reporter | Roscoe A. Bartlett | ||||
| Assigned To | Brad King | ||||
| Priority | normal | Severity | major | Reproducibility | have not tried |
| Status | closed | Resolution | moved | ||
| Platform | OS | OS Version | |||
| Product Version | |||||
| Target Version | Fixed in Version | ||||
| Summary | 0008701: CTest Dev: Coverage testing not scaling with number of subprojects | ||||
| Description | The coverage testing for Trilinos is scaling very poorly as the number of subprojects increases. I ran the coverage tests on 3/7/2009 to let it run all day and I had to kill it before it ran into the next day. Consider the results shown at: http://trilinos-dev.sandia.gov/cdash/index.php?project=Trilinos&date=2009-03-08&display=project#Coverage [^] If you sort by 'Date' in assending order (i.e. one click on 'Date') you get: godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 83.32% 11211 2244 2009-03-07T04:59:51 MST Teuchos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 90.79% 2426 246 2009-03-07T05:01:45 MST RTOp godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 83.49% 905 179 2009-03-07T05:03:12 MST Kokkos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 73.24% 16054 5866 2009-03-07T05:04:04 MST Epetra godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 13.13% 4132 27340 2009-03-07T05:05:26 MST Zoltan godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 87.2% 1247 183 2009-03-07T05:08:56 MST Shards godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 95.73% 763 34 2009-03-07T05:12:31 MST GlobiPack godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 52.44% 688 624 2009-03-07T05:16:33 MST Triutils godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 66.06% 2484 1276 2009-03-07T05:19:55 MST Tpetra godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 68.97% 2465 1109 2009-03-07T05:25:59 MST EpetraExt godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 81.83% 590 131 2009-03-07T05:30:23 MST Stokhos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 87.21% 2086 306 2009-03-07T05:34:45 MST Sacado godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 73.53% 7213 2597 2009-03-07T05:39:55 MST Thyra godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 95.23% 798 40 2009-03-07T05:49:51 MST OptiPack godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 30.33% 810 1861 2009-03-07T05:59:14 MST Isorropia godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 0% 0 0 2009-03-07T06:07:28 MST Pliris godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 0% 0 0 2009-03-07T06:22:04 MST Claps godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 39.8% 5194 7856 2009-03-07T06:38:20 MST AztecOO godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 31.08% 459 1018 2009-03-07T06:56:38 MST Galeri godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 41.01% 1778 2557 2009-03-07T07:16:34 MST Amesos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 59.17% 4755 3281 2009-03-07T07:38:16 MST Ifpack godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 21.77% 199 715 2009-03-07T08:02:32 MST Komplex godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 30.11% 12725 29539 2009-03-07T08:27:34 MST ML godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 72% 5570 2166 2009-03-07T08:55:46 MST Belos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 87.1% 2451 363 2009-03-07T09:27:03 MST Stratimikos godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 89.74% 105 12 2009-03-07T10:00:40 MST Meros godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 55.51% 16107 12908 2009-03-07T10:33:27 MST FEI godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 0% 0 0 2009-03-07T11:09:52 MST RBGen godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 79.3% 12959 3383 2009-03-07T12:11:06 MST Anasazi godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 68.51% 570 262 2009-03-07T13:29:29 MST ThreadPool godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 87.28% 4418 644 2009-03-07T14:41:42 MST Phalanx godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 62.76% 18011 10687 2009-03-07T15:59:59 MST NOX godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 0% 0 0 2009-03-07T17:30:59 MST Moertel godel.sandia.gov Linux-Nightly-SERIAL_DEBUG_COV 50.18% 829 823 2009-03-07T20:00:00 MST TrilinosCouplings Looking at this you see that the start times between subproject (i.e. Trilinos package) builds starts to go up dramatically as you get on to more and more subprojects disproportionally. The first package Teuchos is an intermediate size package with 11211 tested lines of code. The total time for the build/test for it was from 04:59:51 to 5:01:45 or about 1.5 minutes. Also, consider Epetra which is a slightly large package with 16054 tested lines but it is fourth in the order and it took from about 5:04:04 to 05:26 or about 20 minutes to finish. Now consider the much smaller package Moertel which is 33rd in the order with 0 tested lines because it did not even build and its one (current) test did not even run. Yet it took from 17:30:59 to 20:00:00 to completely run. This about 2.5 hours and there could not even have been a single coverage file for the Moertel package. I looked that the verbose output from ctest with the -VV option and I see that it seems to be processing all of the coverage files in all of the proceeding packages. For example, I see output like: Running coverage for package 'Moertel' ... ----------------------------------------------- SetCTestConfigurationFromCMakeVariable:CoverageCommand:CTEST_COVERAGE_COMMANDSetCTestConfiguration:CoverageCommand:/usr/bin/gcov Add coverage exclude regular expressions. SetCTestConfiguration:BuildDirectory:/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD SetCTestConfiguration:SourceDirectory:/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/Trilinos label file list [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/CMakeFiles/LabelFiles.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/moertel/example/CMakeFiles/Moertel_TwoSquares.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/amesos/src/CMakeFiles/amesos.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/aztecoo/src/CMakeFiles/aztecoo.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/epetra/src/CMakeFiles/epetra.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/epetra/src/CMakeFiles/epetra_fortran.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/epetraext/src/CMakeFiles/epetraext.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/ml/src/CMakeFiles/ml.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/moertel/src/CMakeFiles/moertel.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/teuchos/src/CMakeFiles/teuchos.dir/Labels.txt] loading labels from [/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/triutils/src/CMakeFiles/triutils.dir/Labels.txt] Performing coverage COVFILE environment variable not found, not running bullseye Processing coverage (each . represents one file): ."/usr/bin/gcov" -l -o "/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/optipack/test/CMakeFiles/OptiPack_VersionUnitTests.dir/__/__/teuchos/test/UnitTes\ t" "/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/BUILD/packages/optipack/test/CMakeFiles/OptiPack_VersionUnitTests.dir/__/__/teuchos/test/UnitTest/Teuchos_StandardUnitTe\ stMain.cpp.gcda" File '/home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/Trilinos/packages/teuchos/test/UnitTest/Teuchos_StandardUnitTestMain.cpp' Lines executed:100.00% of 5 /home/rabartl/PROJECTS/dashboards/Trilinos.base/SERIAL_DEBUG_COV/Trilinos/packages/teuchos/test/UnitTest/Teuchos_StandardUnitTestMain.cpp:creating 'Teuchos_StandardUnitTestMain.cpp.gcda##Te\ uchos_StandardUnitTestMain.cpp.gcov' ... ----------------------------------------------- why are coverage files for Teuchos and all other Trilinos packages being processed in later packages like this?. To effectively debug issues like this it is essentaial that all of the CTest functions ctest_xxx(...) (where xxx = start, configure, build, test, coverage, memcheck, sbumit etc) all print and return the duration time when ctest is run with -VV (or even -V). I could put in my own timers to our CTest script but it make much more sense to add this to CTest itself since other proejcts will need this as well. Note that the coverage results for only the Trilinos package in question seem to be displayed on the Dashboard. This is great but the current setup is not scaling on the CTest server side. What can be done to fix this? Should our Trilinos driver script just delete all of the coverage files in: ./Testing/CoverageInfo/* before each package runs its set of coverage tests? Or, can we somehow make it so that CTest and/or gcov does not even touch coverage files that are not in the current Trilinos package (i.e. subproject or label)? We need to get this resolved or we just can't support coverage testing for Trilinos. It took 16 hours to do just 33 Trilinos packages and we need to run coverage tests on both Serial and MPI builds on upwards of almost 50 Trilinos packages soon. That mean getting in near 100 package coverage tests done in less that 24 hours. Note that you can run all of the Trilinos coverage tests with verbose outputting by using the CTest driver script: Trilinos/cmake/ctest/experimental_build_test.cmake You can run this from *any* build directory by first creating a CMakeCache.txt file first without any Trilinos packages enabled (i.e. no Trilinos_ENABLE_XXX flags set) and then run coverage tests as: $ env CTEST_DO_COVERAGE_TESTING=ON CTEST_COVERAGE_COMMAND=/usr/bin/gcov \ ctest -S $TRILINOS_HOME/cmake/ctest/experimental_build_test.cmake -VV \ &> ctest.out That will submit to out Trilinos dashboard and you can debug things on your side. In summary, what I am asking for is to: 1) Add duration time output to ctest_xxx(...) commands. That way we can see what the time is being taken up for sure. 2) Have someone from Kitware run the entire Trilinos coverage test suite using the experimental_build_test.cmake script metioned above on your own computer. This way, you can see how this behaves for yourselves. 3) Find a way to address the problem (either in CTest proper or with some hack in our CTest driver script). Thanks, - Ross | ||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Tags | No tags attached. | ||||
| Relationships | |||||
| Attached Files | |||||
| Issue History | |||||
| Date Modified | Username | Field | Change | ||
| 2009-03-08 00:06 | Roscoe A. Bartlett | New Issue | |||
| 2009-03-08 05:19 | Roscoe A. Bartlett | Note Added: 0015597 | |||
| 2009-03-09 11:07 | Brad King | Status | new => assigned | ||
| 2009-03-09 11:07 | Brad King | Assigned To | => Brad King | ||
| 2009-03-09 11:10 | Brad King | Note Added: 0015604 | |||
| 2009-03-09 12:20 | Brad King | Note Added: 0015606 | |||
| 2009-03-11 13:39 | Brad King | Note Added: 0015652 | |||
| 2012-08-13 10:44 | Brad King | Status | assigned => backlog | ||
| 2012-08-13 10:44 | Brad King | Note Added: 0030550 | |||
| 2016-06-10 14:27 | Kitware Robot | Note Added: 0041512 | |||
| 2016-06-10 14:27 | Kitware Robot | Status | backlog => resolved | ||
| 2016-06-10 14:27 | Kitware Robot | Resolution | open => moved | ||
| 2016-06-10 14:30 | Kitware Robot | Status | resolved => closed | ||
| Notes | |||||
|
|
|||||
|
|
||||
|
|
|||||
|
|
||||
|
|
|||||
|
|
||||
|
|
|||||
|
|
||||
|
|
|||||
|
|
||||
|
|
|||||
|
|
||||