mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
27 lines
595 B
Fortran
27 lines
595 B
Fortran
! @@name: doacross.4f
|
|
! @@type: F-free
|
|
! @@compilable: yes
|
|
! @@linkable: no
|
|
! @@expect: success
|
|
subroutine work( N, M, A, B, C )
|
|
integer :: N, M
|
|
real(8), dimension(M, N) :: A, B, C
|
|
real(8), external :: foo
|
|
integer :: i, j
|
|
real(8) :: alpha = 1.2
|
|
|
|
!$omp do collapse(2) ordered(2)
|
|
do j=2, N-1
|
|
do i=2, M-1
|
|
A(i,j) = foo(i, j)
|
|
!$omp ordered depend(source)
|
|
|
|
B(i,j) = alpha * A(i,j)
|
|
|
|
!$omp ordered depend(sink: j,i-1) depend(sink: j-1,i)
|
|
C(i,j) = 0.2 * (A(i-1,j) + A(i+1,j) + &
|
|
A(i,j-1) + A(i,j+1) + A(i,j))
|
|
end do
|
|
end do
|
|
end subroutine
|