[gomp4] OpenACC reduction tests
Thomas Schwinge
thomas@codesourcery.com
Fri Sep 18 08:29:00 GMT 2015
Hi Cesar!
Great progress with your OpenACC reductions work!
On Fri, 17 Jul 2015 11:13:59 -0700, Cesar Philippidis <cesar@codesourcery.com> wrote:
> This patch updates the libgomp OpenACC reduction test cases [...]
> --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
> +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
> @@ -4,9 +4,12 @@
>
> program reduction
> integer, parameter :: n = 40, c = 10
> - integer :: i, vsum, sum
> + integer :: i, vsum, gs, ws, vs, cs
>
> - call redsub (sum, n, c)
> + call redsub_gang (gs, n, c)
> + call redsub_worker (gs, n, c)
> + call redsub_vector (vs, n, c)
> + call redsub_combined (cs, n, c)
>
> vsum = 0
>
> @@ -15,10 +18,11 @@ program reduction
> vsum = vsum + c
> end do
>
> - if (sum.ne.vsum) call abort ()
> + if (gs .ne. vsum) call abort ()
> + if (vs .ne. vsum) call abort ()
> end program reduction
This looks incomplete to me, so I extended it as follows.
With -O0, I frequently see this test FAIL (thus XFAILed), both for nvptx
offloading and host-fallback execution. Adding a few printfs, I observe
redsub_gang compute "random" results. Given the following
-Wuninitialized/-Wmaybe-uninitialized warnings (for -O1, for example),
maybe there's some initialization of (internal) variables missing?
(These user-visible warnings about compiler internals need to be
addressed regardless.) Would you please have a look at that?
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90: In function 'redsub_combined_._omp_fn.0':
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90:73:0: warning: '<anonymous>' is used uninitialized in this function [-Wuninitialized]
!$acc loop reduction(+:sum) gang worker vector
^
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90: In function 'redsub_vector_._omp_fn.1':
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90:60:0: warning: '<anonymous>' is used uninitialized in this function [-Wuninitialized]
!$acc loop reduction(+:sum) vector
^
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90: In function 'redsub_worker_._omp_fn.2':
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90:47:0: warning: '<anonymous>' is used uninitialized in this function [-Wuninitialized]
!$acc loop reduction(+:sum) worker
^
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90: In function 'redsub_gang_._omp_fn.3':
source-gcc/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90:34:0: warning: 'sum.43' may be used uninitialized in this function [-Wmaybe-uninitialized]
!$acc loop reduction(+:sum) gang
^
Committed to gomp-4_0-branch in r227897:
commit 0a1cca2cc3c1d1e2310c6438299e63a7bd99396b
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri Sep 18 08:07:47 2015 +0000
Extend OpenACC reduction test case, XFAIL for -O0
libgomp/
* testsuite/libgomp.oacc-fortran/reduction-5.f90: Extend. XFAIL
execution test for -O0.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@227897 138bc75d-0d04-0410-961f-82ee72b054a4
---
libgomp/ChangeLog.gomp | 5 +++++
libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 | 5 ++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git libgomp/ChangeLog.gomp libgomp/ChangeLog.gomp
index 63bc7dc..0c0e697 100644
--- libgomp/ChangeLog.gomp
+++ libgomp/ChangeLog.gomp
@@ -1,3 +1,8 @@
+2015-09-18 Thomas Schwinge <thomas@codesourcery.com>
+
+ * testsuite/libgomp.oacc-fortran/reduction-5.f90: Extend. XFAIL
+ execution test for -O0.
+
2015-09-15 Nathan Sidwell <nathan@codesourcery.com>
* oacc-parallel.c (GOACC_parallel_keyed): Use GOMP_DIM constants.
diff --git libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
index 304fe7f..f787e7d 100644
--- libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
+++ libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
@@ -1,4 +1,5 @@
! { dg-do run }
+! { dg-xfail-run-if "TODO" { *-*-* } { "-O0" } }
! subroutine reduction
@@ -7,7 +8,7 @@ program reduction
integer :: i, vsum, gs, ws, vs, cs
call redsub_gang (gs, n, c)
- call redsub_worker (gs, n, c)
+ call redsub_worker (ws, n, c)
call redsub_vector (vs, n, c)
call redsub_combined (cs, n, c)
@@ -19,7 +20,9 @@ program reduction
end do
if (gs .ne. vsum) call abort ()
+ if (ws .ne. vsum) call abort ()
if (vs .ne. vsum) call abort ()
+ if (cs .ne. vsum) call abort ()
end program reduction
subroutine redsub_gang(sum, n, c)
> -subroutine redsub(sum, n, c)
> +subroutine redsub_gang(sum, n, c)
> integer :: sum, n, c
>
> sum = 0
> @@ -29,4 +33,43 @@ subroutine redsub(sum, n, c)
> sum = sum + c
> end do
> !$acc end parallel
> -end subroutine redsub
> +end subroutine redsub_gang
> +
> +subroutine redsub_worker(sum, n, c)
> + integer :: sum, n, c
> +
> + sum = 0
> +
> + !$acc parallel copyin (n, c) num_workers(4) vector_length (32) copy(sum)
> + !$acc loop reduction(+:sum) worker
> + do i = 1, n
> + sum = sum + c
> + end do
> + !$acc end parallel
> +end subroutine redsub_worker
> +
> +subroutine redsub_vector(sum, n, c)
> + integer :: sum, n, c
> +
> + sum = 0
> +
> + !$acc parallel copyin (n, c) vector_length(32) copy(sum)
> + !$acc loop reduction(+:sum) vector
> + do i = 1, n
> + sum = sum + c
> + end do
> + !$acc end parallel
> +end subroutine redsub_vector
> +
> +subroutine redsub_combined(sum, n, c)
> + integer :: sum, n, c
> +
> + sum = 0
> +
> + !$acc parallel num_gangs (8) num_workers (4) vector_length(32) copy(sum)
> + !$acc loop reduction(+:sum) gang worker vector
> + do i = 1, n
> + sum = sum + c
> + end do
> + !$acc end parallel
> +end subroutine redsub_combined
Grüße,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150918/a3d0dbe8/attachment.sig>
More information about the Gcc-patches
mailing list