mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-02 18:53:22 +00:00
55 lines
943 B
Fortran
55 lines
943 B
Fortran
! { dg-do run }
|
|
|
|
! complex reductions
|
|
|
|
program reduction_4
|
|
implicit none
|
|
|
|
integer, parameter :: n = 10, vl = 32
|
|
integer :: i
|
|
complex :: vresult, result
|
|
complex, dimension (n) :: array
|
|
|
|
do i = 1, n
|
|
array(i) = i
|
|
end do
|
|
|
|
result = 0
|
|
vresult = 0
|
|
|
|
! '+' reductions
|
|
|
|
!$acc parallel vector_length(vl) num_gangs(1)
|
|
!$acc loop reduction(+:result)
|
|
do i = 1, n
|
|
result = result + array(i)
|
|
end do
|
|
!$acc end parallel
|
|
|
|
! Verify the results
|
|
do i = 1, n
|
|
vresult = vresult + array(i)
|
|
end do
|
|
|
|
if (result .ne. vresult) call abort
|
|
|
|
result = 1
|
|
vresult = 1
|
|
|
|
! ! '*' reductions
|
|
!
|
|
! !$acc parallel vector_length(vl)
|
|
! !$acc loop reduction(*:result)
|
|
! do i = 1, n
|
|
! result = result * array(i)
|
|
! end do
|
|
! !$acc end parallel
|
|
!
|
|
! ! Verify the results
|
|
! do i = 1, n
|
|
! vresult = vresult * array(i)
|
|
! end do
|
|
!
|
|
! if (result.ne.vresult) call abort
|
|
end program reduction_4
|