* 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).