mirror of
https://github.com/autc04/Retro68.git
synced 2024-11-28 05:51:04 +00:00
42 lines
778 B
Fortran
42 lines
778 B
Fortran
program foo
|
|
integer :: i, j, k
|
|
integer :: a(10), c(10)
|
|
k = 2
|
|
a(:) = 0
|
|
call test1
|
|
call test2
|
|
do i = 1, 10
|
|
if (a(i) .ne. 10 * i) call abort
|
|
end do
|
|
!$omp parallel do reduction (+:c)
|
|
do i = 1, 10
|
|
c = c + a
|
|
end do
|
|
do i = 1, 10
|
|
if (c(i) .ne. 10 * a(i)) call abort
|
|
end do
|
|
!$omp parallel do lastprivate (j)
|
|
do j = 1, 10, k
|
|
end do
|
|
if (j .ne. 11) call abort
|
|
contains
|
|
subroutine test1
|
|
integer :: i
|
|
integer :: b(10)
|
|
do i = 1, 10
|
|
b(i) = i
|
|
end do
|
|
c(:) = 0
|
|
!$omp parallel do reduction (+:a)
|
|
do i = 1, 10
|
|
a = a + b
|
|
end do
|
|
end subroutine test1
|
|
subroutine test2
|
|
!$omp parallel do lastprivate (j)
|
|
do j = 1, 10, k
|
|
end do
|
|
if (j .ne. 11) call abort
|
|
end subroutine test2
|
|
end program foo
|