public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* legitimate parallel make check?
@ 2010-03-09 11:43 IainS
  2010-03-09 12:11 ` Rainer Orth
  0 siblings, 1 reply; 13+ messages in thread
From: IainS @ 2010-03-09 11:43 UTC (permalink / raw)
  To: GCC Development

for the sake of keeping information segregated in log files (and  
balancing out test times)
  I tried the following (from within a regression testing script):

'make -k check-gcc-c RUNTESTFLAGS=$runTEST >${STATE}/$svnRevision- 
check-c-log.txt 2>&1' &
(sleep 2) 'make -k check-gcc-c++ RUNTESTFLAGS=$runTEST >${STATE}/ 
$svnRevision-check-c++-log.txt 2>&1' &
(sleep 2) 'make -k check-gcc-fortran RUNTESTFLAGS=$runTEST >${STATE}/ 
$svnRevision-check-fortran-log.txt 2>&1' &
(sleep 2) ' make -k check-gcc-objc RUNTESTFLAGS=$runTEST >${STATE}/ 
$svnRevision-check-objc-log.txt 2>&1' &
(sleep 2) 'make -k check-gcc-obj-c++ RUNTESTFLAGS=$runTEST >${STATE}/ 
$svnRevision-check-obc++-log.txt 2>&1' &
(sleep 2) 'make -k check-target-libstdc++-v3 RUNTESTFLAGS=$runTEST >$ 
{STATE}/$svnRevision-check-target-libstdc++-log.txt 2>&1'&
(sleep 2) 'make -k check-target-libgomp RUNTESTFLAGS=$runTEST >$ 
{STATE}/$svnRevision-check-target-libgomp-log.txt 2>&1' &

firstly; this actually breaks the make process permanently (I suspect  
a race to make site.exp) unless the parallel jobs are launched with a  
time delay.
by permanently I mean that after trying this - "make check-gcc"  fails  
from the command line until config.status is re-run in the gcc dir.

====

secondly;  if I use  "-k -j3 check-gcc-c "
    together with "-k -j2 check-gcc-fortran " (for example)

I get sporadic bus errors :
/bin/sh: line 1: 67618 Bus error               `if [ -f ${srcdir}/../ 
dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo  
runtest; fi` --tool gfortran --target_board=unix\{-m32,-m64\}  
$runtestflags
make[2]: [check-parallel-gfortran] Error 138 (ignored)

large chunks of tests go silently missing at this point...

===

Am I trying something that is unsupported - or is this is a bug?

===

"make -k -j8 check " is not particularly helpful (a) because it tests  
gmp/mpfr/mpc every time (b) any redirected output is hard to scan for  
problems.

Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 11:43 legitimate parallel make check? IainS
@ 2010-03-09 12:11 ` Rainer Orth
  2010-03-09 12:29   ` IainS
  0 siblings, 1 reply; 13+ messages in thread
From: Rainer Orth @ 2010-03-09 12:11 UTC (permalink / raw)
  To: IainS; +Cc: GCC Development

IainS <developer@sandoe-acoustics.co.uk> writes:

> Am I trying something that is unsupported - or is this is a bug?
>
> ===
>
> "make -k -j8 check " is not particularly helpful (a) because it tests
> gmp/mpfr/mpc every time (b) any redirected output is hard to scan for
> problems.

What you're trying is far too complicated: just use -k -j<N> check from
the toplevel and forget about the make check output, which, as you say,
is interleaved and useless, just like the make -j<N> bootstrap output.

Instead, run make mail-report.log afterwards and check that.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 12:11 ` Rainer Orth
@ 2010-03-09 12:29   ` IainS
  2010-03-09 12:46     ` Rainer Orth
  2010-03-09 14:23     ` Tim Prince
  0 siblings, 2 replies; 13+ messages in thread
From: IainS @ 2010-03-09 12:29 UTC (permalink / raw)
  To: Rainer Orth; +Cc: GCC Development


On 9 Mar 2010, at 12:10, Rainer Orth wrote:

> IainS <developer@sandoe-acoustics.co.uk> writes:
>
>> Am I trying something that is unsupported - or is this is a bug?
>>
>> ===
>>
>> "make -k -j8 check " is not particularly helpful (a) because it tests
>> gmp/mpfr/mpc every time (b) any redirected output is hard to scan for
>> problems.
>
> What you're trying is far too complicated: just use -k -j<N> check  
> from
> the toplevel and forget about the make check output, which, as you  
> say,
> is interleaved and useless, just like the make -j<N> bootstrap output.

OK.

> Instead, run make mail-report.log afterwards and check that.

Although, I note that contrib/test_summary only reports what gets into  
the *.sum files -- i.e. tests that complete or timeout.
It doesn't log problems in the actual make process itself - to find  
those one still has to trawl through the interleaved stuff.

It would be nice to allow the apparently independent targets [e.g. gcc- 
c,fortran,c++ etc.] to be (explicitly) make-checked in parallel.

thanks,
Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 12:29   ` IainS
@ 2010-03-09 12:46     ` Rainer Orth
  2010-03-09 15:05       ` IainS
  2010-03-09 14:23     ` Tim Prince
  1 sibling, 1 reply; 13+ messages in thread
From: Rainer Orth @ 2010-03-09 12:46 UTC (permalink / raw)
  To: IainS; +Cc: GCC Development

IainS <developer@sandoe-acoustics.co.uk> writes:

>> Instead, run make mail-report.log afterwards and check that.
>
> Although, I note that contrib/test_summary only reports what gets into the
> *.sum files -- i.e. tests that complete or timeout.
> It doesn't log problems in the actual make process itself - to find those
> one still has to trawl through the interleaved stuff.

No, you haven't.  You need to look at the corresponding *.log files
instead; most of this isn't in the regular make check output anyway.

> It would be nice to allow the apparently independent targets [e.g. gcc-
> c,fortran,c++ etc.] to be (explicitly) make-checked in parallel.

This is exactly what happens when you invoke make -j<N> -k check,
provided that the parallelism specified is big enough (and the machine
can handle the load).  Otherwise, you may end up running (say) the c
testsuite in parallel, which isn't bad either.

As I wrote before, I'm going to use this on an (effectively) 64-core
machine and hope to achieve to use all cores in parallel :-)

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 12:29   ` IainS
  2010-03-09 12:46     ` Rainer Orth
@ 2010-03-09 14:23     ` Tim Prince
  1 sibling, 0 replies; 13+ messages in thread
From: Tim Prince @ 2010-03-09 14:23 UTC (permalink / raw)
  To: gcc

On 3/9/2010 4:28 AM, IainS wrote:
>
>
> It would be nice to allow the apparently independent targets [e.g. 
> gcc-c,fortran,c++ etc.] to be (explicitly) make-checked in parallel.
>
>
On certain targets, it has been necessary to do this explicitly for a 
long time, submitting make check-gcc, make check-fortran, make check-g++ 
separately.  Perhaps a script could be made which would detect when the 
build is complete, then submit the separate make check serial jobs together.


-- 
Tim Prince

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 12:46     ` Rainer Orth
@ 2010-03-09 15:05       ` IainS
  2010-03-09 15:17         ` Rainer Orth
  0 siblings, 1 reply; 13+ messages in thread
From: IainS @ 2010-03-09 15:05 UTC (permalink / raw)
  To: Rainer Orth; +Cc: GCC Development


On 9 Mar 2010, at 12:46, Rainer Orth wrote:

> IainS <developer@sandoe-acoustics.co.uk> writes:
>
>>> Instead, run make mail-report.log afterwards and check that.

... <snip>

>> suite in parallel, which isn't bad either.
>
> As I wrote before, I'm going to use this on an (effectively) 64-core
> machine and hope to achieve to use all cores in parallel :-)

on my mere 8 cores :-)   I'm still getting sporadic Bus errors on:

"make -k -j8 check RUNTESTFLAGS ... "
[from the command line on a bootstrapped clean trunk @157307]

so there's something else wrong somewhere...
... I guess a target-related issue ({i686,powerpc}-apple-darwin9)

(note that this error does *not* get into the .log files, AFAICS)

Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 15:05       ` IainS
@ 2010-03-09 15:17         ` Rainer Orth
       [not found]           ` <fc556a771003091113g4837d6e4o9e34288d8344f2@mail.gmail.com>
  0 siblings, 1 reply; 13+ messages in thread
From: Rainer Orth @ 2010-03-09 15:17 UTC (permalink / raw)
  To: IainS; +Cc: GCC Development

IainS <developer@sandoe-acoustics.co.uk> writes:

> on my mere 8 cores :-)   I'm still getting sporadic Bus errors on:
>
> "make -k -j8 check RUNTESTFLAGS ... "
> [from the command line on a bootstrapped clean trunk @157307]
>
> so there's something else wrong somewhere...

Probably make gets SIGBUS, which obviously won't be in the runtest output.

> ... I guess a target-related issue ({i686,powerpc}-apple-darwin9)

Or simply a hardware issue?

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
       [not found]           ` <fc556a771003091113g4837d6e4o9e34288d8344f2@mail.gmail.com>
@ 2010-03-09 19:28             ` IainS
  2010-03-09 19:31               ` NightStrike
  2010-03-09 19:36               ` Rainer Orth
  0 siblings, 2 replies; 13+ messages in thread
From: IainS @ 2010-03-09 19:28 UTC (permalink / raw)
  To: Janis Johnson; +Cc: Rainer Orth, GCC Development


On 9 Mar 2010, at 19:13, Janis Johnson wrote:

> To run all of the compiler tests in parallel you can do "make -jn -k  
> check-gcc" from the top level and let the existing build machinery  
> take care of running chunks of tests in parallel and putting the  
> results back together.

that's fine (I couldn't see why not from looking at Makefile.in)
  (maybe Rainer is right and I have a memory fault on my 8-core  
box .. :-(  ) -- just backing up prior to a single user check of  
that ...

..  I don't seem to get the bus errors on a 4CPU g5 or a Core 2 duo ..  
but .. the 8-core machine is faster .. so ... race conditions are more  
likely to manifest there.

> You'd still have to handle the library tests you want to run.

I assume that " make -jn -k check-target RUNTESTFLAGS.... " is equally  
reasonable?

> Perhaps what you want is a way to skip the host library testing,  
> although if you're building them with your new compiler then testing  
> them is a good part of testing that compiler.

I do build gmp/mpfr/mpc in-tree...
given that I almost always run the whole testsuite - I'm torn between  
thinking it's a good idea..
... and that I'm essentially proving little when the versions of gmp/ 
mpfr/and mpc are static.

--

FWIW: I'm trying to update contrib/btest.sh script to handle m32 & m64  
plus a few other things ...

Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 19:28             ` IainS
@ 2010-03-09 19:31               ` NightStrike
  2010-03-09 19:36                 ` IainS
  2010-03-09 19:36               ` Rainer Orth
  1 sibling, 1 reply; 13+ messages in thread
From: NightStrike @ 2010-03-09 19:31 UTC (permalink / raw)
  To: IainS; +Cc: Janis Johnson, Rainer Orth, GCC Development

On Tue, Mar 9, 2010 at 2:27 PM, IainS <developer@sandoe-acoustics.co.uk> wrote:
> I do build gmp/mpfr/mpc in-tree...

How?  Last I tried, it didn't work, as mpc used the system gmp/mpfr,
not the just-built in-tree versions.  Therefore, it's not really an
"in-tree" build, and you can't build on a system that doesn't already
have gmp/mpfr installed.  At least, that's what it was... does that
work now?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 19:28             ` IainS
  2010-03-09 19:31               ` NightStrike
@ 2010-03-09 19:36               ` Rainer Orth
  2010-03-09 20:33                 ` IainS
  1 sibling, 1 reply; 13+ messages in thread
From: Rainer Orth @ 2010-03-09 19:36 UTC (permalink / raw)
  To: IainS; +Cc: Janis Johnson, GCC Development

IainS <developer@sandoe-acoustics.co.uk> writes:

> ..  I don't seem to get the bus errors on a 4CPU g5 or a Core 2 duo .. but
> .. the 8-core machine is faster .. so ... race conditions are more  likely
> to manifest there.

But race conditions don't manifest themselves in make SEGVs ;-(  I'm
regularly running make -k -j128 on a T5220, or -j32 on a Sun Fire X4450
with 4 4-core CPUs, without any problems.

>> You'd still have to handle the library tests you want to run.
>
> I assume that " make -jn -k check-target RUNTESTFLAGS.... " is equally
> reasonable?

Indeed, as well as using a site.exp and pointing the DEJAGNU environment
variable at it, as I've learned from looking at the regression tester
sources in contrib/regression.  Here's what I use for that:

global target_list

case "$target_triplet" in {
    { "i?86-*-solaris2.1[0-9]" } {
	# FIXME: Disable multilib testing if the host cannot execute AMD64
	# binaries.  Should be exceedingly rare now (cf. erebus).
	set target_list { "unix{,-m64}" }
    }
    { "mips-sgi-irix6*" } {
	# FIXME: Disable multilib testing if the host cannot execute N64
	# binaries.  We cannot selectively disable only one multilib during
	# the build.
	set target_list { "unix{,-mabi=32,-mabi=64}" }
    }
    { "sparc*-*-solaris2*" } {
	set target_list { "unix{,-m64}" }
    }
    default {
	# Works for alpha*-*-osf*, i?86-*-solaris2.[89] and mips-sgi-irix5*
	# testing. 
        set target_list { "unix" }
    }
}

> I do build gmp/mpfr/mpc in-tree...
> given that I almost always run the whole testsuite - I'm torn between
> thinking it's a good idea..
> ... and that I'm essentially proving little when the versions of gmp/
> mpfr/and mpc are static.

I'd keep gmp/mpfr/mpc at a fixed version, test them once, and be done
with it.  Testing the compiler and runtime libraries on its own takes
enough time already.

> FWIW: I'm trying to update contrib/btest.sh script to handle m32 & m64 plus
> a few other things ...

No need: works already via DEJAGNU described above.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 19:31               ` NightStrike
@ 2010-03-09 19:36                 ` IainS
  0 siblings, 0 replies; 13+ messages in thread
From: IainS @ 2010-03-09 19:36 UTC (permalink / raw)
  To: NightStrike; +Cc: Janis Johnson, GCC Development


On 9 Mar 2010, at 19:31, NightStrike wrote:

> On Tue, Mar 9, 2010 at 2:27 PM, IainS <developer@sandoe-acoustics.co.uk 
> > wrote:
>> I do build gmp/mpfr/mpc in-tree...
>
> How?  Last I tried, it didn't work, as mpc used the system gmp/mpfr,
> not the just-built in-tree versions.  Therefore, it's not really an
> "in-tree" build, and you can't build on a system that doesn't already
> have gmp/mpfr installed.  At least, that's what it was... does that
> work now?

it's been  fixed for a while (resolution of PR42424)
I keep one copy of gmp mpfr and mpc in a directory at the root of my  
source disk and ln -s to that from within the different gcc source  
trees.

Iain


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
  2010-03-09 19:36               ` Rainer Orth
@ 2010-03-09 20:33                 ` IainS
       [not found]                   ` <yddfx48o7zj.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
  0 siblings, 1 reply; 13+ messages in thread
From: IainS @ 2010-03-09 20:33 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Janis Johnson, GCC Development


On 9 Mar 2010, at 19:36, Rainer Orth wrote:

> IainS <developer@sandoe-acoustics.co.uk> writes:
>
>> ..  I don't seem to get the bus errors on a 4CPU g5 or a Core 2  
>> duo .. but
>> .. the 8-core machine is faster .. so ... race conditions are more   
>> likely
>> to manifest there.
>
> But race conditions don't manifest themselves in make SEGVs ;-(  I'm
> regularly running make -k -j128 on a T5220, or -j32 on a Sun Fire  
> X4450

I'm running memchecks on my 8-core machine ..

> Indeed, as well as using a site.exp and pointing the DEJAGNU  
> environment
> variable at it, as I've learned from looking at the regression tester
> sources in contrib/regression.  Here's what I use for that:
>
> global target_list
>
> case "$target_triplet" in {
>    { "i?86-*-solaris2.1[0-9]" } {
> 	# FIXME: Disable multilib testing if the host cannot execute AMD64
> 	# binaries.  Should be exceedingly rare now (cf. erebus).
> 	set target_list { "unix{,-m64}" }
>    }
>    { "mips-sgi-irix6*" } {
> 	# FIXME: Disable multilib testing if the host cannot execute N64
> 	# binaries.  We cannot selectively disable only one multilib during
> 	# the build.
> 	set target_list { "unix{,-mabi=32,-mabi=64}" }
>    }
>    { "sparc*-*-solaris2*" } {
> 	set target_list { "unix{,-m64}" }
>    }
>    default {
> 	# Works for alpha*-*-osf*, i?86-*-solaris2.[89] and mips-sgi-irix5*
> 	# testing.
>        set target_list { "unix" }
>    }
> }

that's really neat indeed - I should have spotted the potential  
looking at the code in contrib
...  although the site.exp is hardwired in btest.sh at present ;
  I guess one might be able to use .dejagnurc - just need to check on  
the order that the files are processed.

>> FWIW: I'm trying to update contrib/btest.sh script to handle m32 &  
>> m64 plus
>> a few other things ...
>
> No need: works already via DEJAGNU described above.

hmm.  I see that the make check would work using that neat method  
above...
... however,

1/ I want a different language list than the default...
2/ also some other different configure options...

but mainly
3/
...  As I read it -  btest.sh strips everything but the testname from  
the PASSES and FAILS files. (the awk lines that print $2 for a match  
of /FAIL: / etc.)
This means (e.g.) that if a test passes at m32 and fails at m64 I  
think it will appear in both PASSES and FAILS..
...  this seems destined to result in confusion...

I would like to  identify regressions separately for m32 and m64 -  
esp. in obj-c/c++ where there are huge differences on NeXT runtime  
systems.

if I've missed the blindingly obvious (the day job is taking up most  
of my mental resources ;-)) please point it out :-)

Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: legitimate parallel make check?
       [not found]                       ` <yddy6i0mrsv.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
@ 2010-03-10 20:59                         ` IainS
  0 siblings, 0 replies; 13+ messages in thread
From: IainS @ 2010-03-10 20:59 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Janis Johnson, GCC Development

FWIW;
the bus errors were consistently coming from expect in a strcpy [about  
100 tcl levels down]....
the actual fault was a corrupted dejagnu installation - it's not clear  
how that happened - nothing present in syslogs to indicate disk  
problems.
a clean install of dejagnu appears to have cleared the problem.

On 10 Mar 2010, at 09:47, Rainer Orth wrote:

> IainS <developer@sandoe-acoustics.co.uk> writes:
>>> I've got some local patches for btest-gcc.sh which allow just that
>>> (e.g. support for Ada testing), which I'll submit once I'm  
>>> reasonably
>>> confident they are general enough.
>> OK - (but I'm happy that my local mods for this are also working).
>
> Without doubt, but why should everyone trying to use this have to
> reinvent the wheel?

indeed, I have every intention of sharing my changes too (at least  
those that are of any merit).

thanks for the help, and apologies that it was noise in the end...
Iain

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2010-03-10 20:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-09 11:43 legitimate parallel make check? IainS
2010-03-09 12:11 ` Rainer Orth
2010-03-09 12:29   ` IainS
2010-03-09 12:46     ` Rainer Orth
2010-03-09 15:05       ` IainS
2010-03-09 15:17         ` Rainer Orth
     [not found]           ` <fc556a771003091113g4837d6e4o9e34288d8344f2@mail.gmail.com>
2010-03-09 19:28             ` IainS
2010-03-09 19:31               ` NightStrike
2010-03-09 19:36                 ` IainS
2010-03-09 19:36               ` Rainer Orth
2010-03-09 20:33                 ` IainS
     [not found]                   ` <yddfx48o7zj.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
     [not found]                     ` <AFABE34F-D88B-4C9D-BD07-0DBACCB36F64@sandoe-acoustics.co.uk>
     [not found]                       ` <yddy6i0mrsv.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
2010-03-10 20:59                         ` IainS
2010-03-09 14:23     ` Tim Prince

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).