5 subroutine init (v1
, v2
, N
)
7 real, pointer, dimension(:) :: v1
, v2
14 subroutine check (p
, N
)
16 real, parameter :: EPS
= 0.00001
17 real, pointer, dimension(:) :: p
20 diff
= p(i
) - (i
+ 2.0) * (i
- 3.0)
21 if (diff
> EPS
.or
. -diff
> EPS
) call abort
25 subroutine vec_mult (p
, v1
, v2
, N
)
26 real :: p(N
), v1(N
), v2(N
)
28 !$omp target teams map(to: v1, v2) map(from: p)
29 !$omp distribute parallel do simd
33 !$omp end target teams
38 use e_54_6_mod
, only
: init
, check
, vec_mult
39 real, pointer, dimension(:) :: p
, v1
, v2
42 allocate (p(n
), v1(n
), v2(n
))
44 call vec_mult (p
, v1
, v2
, n
)
46 deallocate (p
, v1
, v2
)