Re: [PATCH] parallelize g++ testing a bit more
Mike Stump mikest...@comcast.net writes: On Jun 17, 2011, at 10:47 AM, Nathan Froyd wrote: I've done a lot of g++-only testsuite runs lately I think it is reasonable to have even more of them, say, if you have 16 cores and just test c++... I wonder what the scaling is like as we approach larger N. :-) I've got a patch to do this, prompted by the use of UltraSPARC-T2 machines with 8 cores/8 strands which are quite slow on their own: [build, testsuite, v3] Increase gcc, g++, gfortran and libstdc++-v3 testsuite parallelism http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01633.html but haven't yet incorporated Jakub's comments. Rainer -- - Rainer Orth, Center for Biotechnology, Bielefeld University
Re: [PATCH] parallelize g++ testing a bit more
On 06/17/2011 08:20 PM, Mike Stump wrote: On Jun 17, 2011, at 10:47 AM, Nathan Froyd wrote: I've done a lot of g++-only testsuite runs lately I think it is reasonable to have even more of them, say, if you have 16 cores and just test c++... I wonder what the scaling is like as we approach larger N. :-) In my test runs, one of the libstdc++ batches (normal3) takes longer than any of the g++ batches, so breaking that up would be more effective for me. :) Jason
Re: [PATCH] parallelize g++ testing a bit more
On Jun 20, 2011, at 4:06 AM, Rainer Orth wrote: I've got a patch to do this, prompted by the use of UltraSPARC-T2 machines with 8 cores/8 strands which are quite slow on their own: [build, testsuite, v3] Increase gcc, g++, gfortran and libstdc++-v3 testsuite parallelism http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01633.html but haven't yet incorporated Jakub's comments. Yeah, I would not even consider a patch that was count based. :-) Ideally, what you want to do is to bin pack the completed in N seconds in B bins, where B is related to the physical number of cores. The, there is _no_ extra overhead for subdivision on 1 core, and on 10,000 core, it still works, though, one is going to need slightly better 1 to B code. Anyone know of a bin packer command line argument? We don't care if it is slow, because we can bin pack every 10th run, and start with idealized times. I would have contributed that sort of change a while ago, but didn't spot a bin packer. I also did up code to pull from a single work list, but, dejagnu isn't structured to do that. :-( That would be the best solution, but is much more work.
Re: [PATCH] parallelize g++ testing a bit more
On Mon, Jun 20, 2011 at 09:28:56AM -0400, Jason Merrill wrote: On 06/17/2011 08:20 PM, Mike Stump wrote: On Jun 17, 2011, at 10:47 AM, Nathan Froyd wrote: I've done a lot of g++-only testsuite runs lately I think it is reasonable to have even more of them, say, if you have 16 cores and just test c++... I wonder what the scaling is like as we approach larger N. :-) In my test runs, one of the libstdc++ batches (normal3) takes longer than any of the g++ batches, so breaking that up would be more effective for me. :) Yeah, certainly, libstdc++ needs more parallelization most. But, as I wrote already to Rainer in Autumn, the methodology for splitting things up should be on a fast box look at the time spent in each of the parts as reported by dejagnu in the log files, and split it to make the jobs roughly even sized with not overcomplicated patterns. Here are some numbers from my last x86_64-linux regtest. From these numbers, I'd say the first parallelization changes should be split gcc/execute.exp testing from 2 to 4 parallel jobs, gcc/compile.exp from one to 2, gfortran/dg.exp from 3 to 6 and libstdc++-v3/conformance.exp from 4 to 8 or 10. Everything else is much less important. gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/bprob/bprob.exp completed in 23 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/charset/charset.exp completed in 9 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/compat/compat.exp completed in 49 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/compat/struct-layout-1.exp completed in 271 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/debug/debug.exp completed in 156 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp completed in 7 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/dfp/dfp.exp completed in 25 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/gcov/gcov.exp completed in 3 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/gomp/gomp.exp completed in 16 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/graphite/graphite.exp completed in 0 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/guality/guality.exp completed in 11 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/lto/lto.exp completed in 176 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/pch/pch.exp completed in 18 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/plugin/plugin.exp completed in 5 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/special/ecos.exp completed in 2 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/tls/tls.exp completed in 1 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/torture/dg-torture.exp completed in 469 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp completed in 52 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp completed in 22 seconds gcc/testsuite/g++/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/vect/vect.exp completed in 1 seconds gcc/testsuite/g++1/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.old-deja/old-deja.exp completed in 662 seconds gcc/testsuite/g++2/g++.log.sep:testcase /usr/src/gcc/gcc/testsuite/g++.dg/dg.exp completed in 704 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp completed in 227 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/autopar/autopar.exp completed in 9 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/charset/charset.exp completed in 4 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/compat/compat.exp completed in 87 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/cpp/cpp.exp completed in 31 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/cpp/trad/trad.exp completed in 5 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/debug/debug.exp completed in 201 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp completed in 6 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/dfp/dfp.exp completed in 28 seconds gcc/testsuite/gcc/gcc.log.sep:testcase /usr/src/gcc/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp completed in 0 seconds gcc/testsuite/gcc/gcc.log.sep:testcase
[PATCH] parallelize g++ testing a bit more
I've done a lot of g++-only testsuite runs lately and I noticed that it didn't parallelize all that well. The patch below adds a couple more .exp files to the parallel infrastructure. dg-torture.exp is the big one; it takes about as much time as old-deja.exp. Other valid candidates are lto.exp and debug.exp, but the patch cuts g++ testing time in half as-is, so I felt it was a sufficient stopping point. OK to commit? -Nathan gcc/cp/ * Make-lang.in (check_g++_parallelize): Add more .exp files. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 45efd67..95bae37 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -154,7 +154,7 @@ check-c++-subtargets : check-g++-subtargets lang_checks += check-g++ lang_checks_parallelized += check-g++ # For description see comment above check_gcc_parallelize in gcc/Makefile.in. -check_g++_parallelize = old-deja.exp dg.exp +check_g++_parallelize = old-deja.exp dg.exp dg-torture.exp struct-layout-1.exp # # Install hooks:
Re: [PATCH] parallelize g++ testing a bit more
OK. Jason