This is the mail archive of the gcc@gcc.gnu.org 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]

[committed] Improve e.54.2.c testcase


On Fri, Nov 14, 2014 at 11:14:59AM +0100, Richard Biener wrote:
> On Thu, Nov 13, 2014 at 10:47 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> > On Thu, Nov 13, 2014 at 11:53:53PM +0300, Ilya Verbin wrote:
> >> > Don't you need another plugin to claim those offload IR sections?
> >>
> >> No, the plan was that a regular plugin will just ignore offload IR
> >> sections by default.  In your configuration ld detects a __gnu_lto_slim
> >> symbol and decided that the object file contains only LTO IR without asm.
> >> I am going to investigate where is the difference with my configuration
> >> and fix the bug.
> >
> > FYI, I'm getting
> > +WARNING: program timed out.
> > +FAIL: libgomp.c/examples-4/e.54.2.c execution test
> > on both x86_64-linux and i686-linux (normal --enable-checking=yes,rtl
> > bootstrap, no offloading configure options).
> > binutils-2.24, ld.bfd.
> 
> Me too, with default checking (timeouts are really annoying....).

So, it turns out that the problem is in heavily parallel testing that
these two testcases spawn just way too many #pragma omp parallels in
sequence (32768), unnecessarily so.  And, with the default partial busy
waiting (something in between OMP_WAIT_POLICY=passive and active) if too
often when some threads busy wait on some barrier big amounts of other jobs
(other tests) contend for the CPUs, it means the test can run for minutes,
while normally it takes 0.5s.  Fixed thusly, committed to trunk.

With all the additions to the libgomp test, seems even on a fast box (but
with heavy contention) libgomp testing now takes already 30 minutes or so,
I guess I should play with the possibility to set OMP_WAIT_POLICY=passive
for libgomp testing in the environment of the tests, e.g. if make -jN
was used (and keep the default wait policy if it wasn't).

2014-11-14  Jakub Jelinek  <jakub@redhat.com>

	* libgomp.c/examples-4/e.54.2.c (main): Use N / 8 instead
	of 32 as block_size.
	* libgomp.fortran/examples-4/e.54.2.f90 (e_54_1): Use n / 8
	instead of 32 as block_size.

--- libgomp/testsuite/libgomp.c/examples-4/e.54.2.c.jj	2014-11-13 15:13:18.000000000 +0100
+++ libgomp/testsuite/libgomp.c/examples-4/e.54.2.c	2014-11-14 15:07:07.428485712 +0100
@@ -61,7 +61,7 @@ int main ()
   init (v1, v2, N);
 
   p1 = dotprod_ref (v1, v2, N);
-  p2 = dotprod (v1, v2, N, 32, 2, 8);
+  p2 = dotprod (v1, v2, N, N / 8, 2, 8);
 
   check (p1, p2);
 
--- libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90.jj	2014-11-13 15:13:17.000000000 +0100
+++ libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90	2014-11-14 15:08:41.471776859 +0100
@@ -59,7 +59,7 @@ program e_54_1
   allocate (B(n), C(n))
   call init (B, C, n)
   ref = dotprod_ref (B, C, n)
-  d = dotprod (B, C, n, 32, 2, 8)
+  d = dotprod (B, C, n, n / 8, 2, 8)
   call check (ref, d)
   deallocate (B, C)
 end program

	Jakub


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