2 ! { dg-require-effective-target offload_device_nonshared_as }
5 integer, parameter :: THRESHOLD1
= 500, THRESHOLD2
= 100
7 subroutine init (v1
, v2
, N
)
16 subroutine check (p
, N
)
18 real, parameter :: EPS
= 0.00001
21 diff
= p(i
) - (i
+ 2.0) * (i
- 3.0)
22 if (diff
> EPS
.or
. -diff
> EPS
) stop 1
26 subroutine vec_mult (N
)
27 use omp_lib
, only
: omp_is_initial_device
29 real :: p(N
), v1(N
), v2(N
)
31 !$omp target if(N > THRESHOLD1) map(to: v1,v2) map(from: p)
32 if (omp_is_initial_device ()) stop 2
33 !$omp parallel do if(N > THRESHOLD2)
43 use e_50_5_mod
, only
: vec_mult