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