| ! { dg-do run } |
| ! { dg-additional-options "-g" } |
| |
| module test_functions |
| contains |
| integer function compute_sum4 (step,n) result(sum) |
| implicit none |
| integer :: i, step, n |
| |
| sum = 0 |
| !$omp parallel do reduction(+:sum) lastprivate(i) |
| !$omp unroll partial(5) |
| do i = 1,n,step |
| sum = sum + 1 |
| end do |
| end function compute_sum4 |
| |
| integer function compute_sum5 (step,n) result(sum) |
| implicit none |
| integer :: i, step, n |
| |
| sum = 0 |
| !$omp parallel do reduction(+:sum) lastprivate(i) |
| !$omp unroll partial(5) |
| !$omp unroll partial(10) |
| do i = 1,n,step |
| sum = sum + 1 |
| end do |
| end function compute_sum5 |
| |
| integer function compute_sum6 (step,n) result(sum) |
| implicit none |
| integer :: i, j, step, n |
| |
| sum = 0 |
| !$omp parallel do reduction(+:sum) lastprivate(i) & |
| !$omp & private(j) |
| do i = 1,n,step |
| !$omp unroll full |
| !$omp unroll partial(10) |
| do j = 1, 1000 |
| sum = sum + 1 |
| end do |
| end do |
| end function compute_sum6 |
| end module test_functions |
| |
| program test |
| use test_functions |
| implicit none |
| integer :: result |
| |
| result = compute_sum4 (1, 100) |
| if (result .ne. 100) then |
| stop 1 |
| end if |
| |
| result = compute_sum4 (1, 9) |
| if (result .ne. 9) then |
| stop 2 |
| end if |
| |
| result = compute_sum4 (2, 96) |
| if (result .ne. 48) then |
| stop 3 |
| end if |
| |
| result = compute_sum4 (-2, -98) |
| if (result .ne. 50) then |
| stop 4 |
| end if |
| |
| result = compute_sum4 (-2, -100) |
| if (result .ne. 51) then |
| stop 5 |
| end if |
| |
| result = compute_sum5 (1, 100) |
| if (result .ne. 100) then |
| stop 6 |
| end if |
| |
| result = compute_sum5 (1, 9) |
| if (result .ne. 9) then |
| stop 7 |
| end if |
| |
| result = compute_sum5 (2, 96) |
| if (result .ne. 48) then |
| stop 8 |
| end if |
| |
| result = compute_sum5 (-2, -98) |
| if (result .ne. 50) then |
| stop 9 |
| end if |
| |
| result = compute_sum5 (-2, -100) |
| if (result .ne. 51) then |
| stop 10 |
| end if |
| end program |