| ! { 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 |