! { dg-do run } | |
! subroutine reduction | |
program reduction | |
integer, parameter :: n = 40, c = 10 | |
integer :: i, vsum, sum | |
call redsub (sum, n, c) | |
vsum = 0 | |
! Verify the results | |
do i = 1, n | |
vsum = vsum + c | |
end do | |
if (sum.ne.vsum) call abort () | |
end program reduction | |
subroutine redsub(sum, n, c) | |
integer :: sum, n, c | |
sum = 0 | |
!$acc parallel vector_length(n) copyin (n, c) num_gangs(1) | |
!$acc loop reduction(+:sum) | |
do i = 1, n | |
sum = sum + c | |
end do | |
!$acc end parallel | |
end subroutine redsub |