This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gcc parallel make check

On Wed, Sep 03, 2014 at 09:37:19AM +0000, VandeVondele  Joost wrote:
> > It is intentional.  With -j it is essentially a fork bomb, just don't use it.
> well, silently ignoring it for just this target did cost me a lot of time, while an eventual fork bomb would have been dealt with much more quickly.
> >> Somewhat related.... is there a rule of thumb on how is the granularity of
> >> parallel check decided ?  E.g.  check-fortran seems to be limited to about
> >> ~5 parallel targets, which is few for a typical server (but of course a
> >> welcome speedup already).
> >
> >The splitting has some cost (e.g. lots of various checks are cached, with
> >split jobs they need to be done in each separate goal), and the goal of the
> >split is toplevel make check parallelization, not individual directory or
> >language testing.  For the latter perhaps more fine grained split could be
> >useful, but how would one find out if it is a toplevel make check, or say
> >make -C gcc check where you test many languages, or check-gfortran?
> the cost must be small compared to the possible gain... on a 32 core
> server, testing of fortran FE changes would be 4x larger.  I notice that

It depends.  For make -j2 if you split check-gfortran alone into 32 pieces,
check-gcc into 32 pieces, check-g++ into 32 pieces, libstdc++ into 32 pieces
etc., it might be too much.
The problem with too fine-grained split beyond some cost to start the
testing in the goal, and running various cached tests, is also that once you
want to split a single *.exp job into smaller parts, you need to use
wildcards, but then it is a maintainance problem, you don't want to test
anything more than once, or not at all, even if new tests with weirdo names
are added later.

> even on a full check, the Fortran tests are still running when the number
> of processes is already way below 32.  However, the longest running (by a
> few minutes) are those:
> expect -- /usr/share/dejagnu/runtest.exp --tool gcc lto.exp weak.exp tls.exp ipa.exp tree-ssa.exp debug.exp dwarf2.exp fixed-point.exp vxworks.exp cilk-plus.exp vmx.exp pch.exp simulate-thread.exp x86_64-costmodel-vect.exp i386-costmodel-vect.exp spu-costmodel-vect.exp ppc-costmodel-vect.exp charset.exp noncompile.exp tsan.exp graphite.exp compat.exp
> expect -- /usr/share/dejagnu/runtest.exp --tool g++ lto.exp tls.exp gcov.exp debug.exp dwarf2.exp cilk-plus.exp pch.exp bprob.exp simulate-thread.exp vect.exp charset.exp tsan.exp graphite.exp compat.exp struct-layout-1.exp ubsan.exp tm.exp gomp.exp dfp.exp tree-prof.exp stackalign.exp plugin.exp guality.exp asan.exp ecos.exp
> so can those be run more independently ?

It is a moving target, new tests are added every day.  I'm trying to adjust
it during stage3/stage4 occassionally, but it also very much depends on
which target it is (e.g. i?86/x86_64 has many more tests in i386.exp then
other targets in their, how fast the compiler is on the target
(e.g. on some targets -g is much slower than on others, etc.).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]