2024-11-13 11:07:08 -08:00

40 lines
848 B
Fortran

! @@name: assumption.2
! @@type: F-free
! @@operation: compile
! @@expect: success
! @@version: omp_6.0
module mm
interface
subroutine init(arr, n)
integer :: arr(*)
integer :: n
end subroutine
function element_transform(a) result(r)
!$omp declare target
integer :: a, r
end function
end interface
end module
program main
use mm
integer, parameter :: N=5
integer :: arr(N), arr_bang(N)
!!Case 1: Use in sequential code
!$omp assume no_openmp
call init(arr,N)
!$omp end assume
!!Case 2: Use inside openmp construct
!$omp target teams loop map(to: arr) map(from: arr_bang)
do i=1,N
!$omp assume no_parallelism
arr_bang(i) = element_transform(arr(i))
!$omp end assume
enddo
print *, arr_bang(1), arr_bang(N)
end program main