gcc/libgomp/testsuite/libgomp.oacc-fortran/lib-13.f90
Tom de Vries b2eb177978 [libgomp, openacc, testsuite] Fix async/wait logic in lib-13.f90
The purpose of the lib-13.f90 test-case is to test acc_wait_all_async.  The
test indeed calls acc_wait_all_async, but then subsequentlys calls
acc_wait_all, so the acc_wait_all_async functionality is not tested.
Furthermore, all acc_async_test calls are placed in a location where they are
not guaranteed to succeed, which explains why there's an xfail for the lower
optimization levels.

This patch fixes the problems by replacing acc_wait_all with an acc_wait on
the async id used for the acc_wait_all_async call, and moving the
acc_async_test calls to the correct locations.

Reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Tom de Vries  <tdevries@suse.de>

	* testsuite/libgomp.oacc-fortran/lib-13.f90: Replace acc_wait_all with
	acc_wait.  Move acc_async_test calls to correct locations.  Remove
	xfail.

From-SVN: r262989
2018-07-26 07:52:35 +00:00

33 lines
630 B
Fortran

! { dg-do run }
program main
use openacc
implicit none
integer :: i, j
integer, parameter :: N = 1000000
integer, parameter :: nprocs = 2
integer :: k(nprocs)
k(:) = 0
!$acc data copy (k(1:nprocs))
do j = 1, nprocs
!$acc parallel async (j)
do i = 1, N
k(j) = k(j) + 1
end do
!$acc end parallel
end do
!$acc end data
call acc_wait_all_async (nprocs + 1)
call acc_wait (nprocs + 1)
if (acc_async_test (1) .neqv. .TRUE.) call abort
if (acc_async_test (2) .neqv. .TRUE.) call abort
if (acc_async_test (nprocs + 1) .neqv. .TRUE.) call abort
end program