b2eb177978
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
33 lines
630 B
Fortran
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
|