1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
! { dg-do run }
program main
implicit none
integer, allocatable, dimension(:) :: AA, BB, CC, DD
integer :: i, N = 20
allocate(BB(N))
AA = [(i, i=1,N)]
!$omp target enter data map(alloc: BB)
!$omp target enter data map(to: AA)
!$omp target
BB = 3 * AA
!$omp end target
!$omp target exit data map(delete: AA)
!$omp target exit data map(from: BB)
if (any (BB /= [(3*i, i=1,N)])) stop 1
if (any (AA /= [(i, i=1,N)])) stop 2
CC = 31 * BB
DD = [(-i, i=1,N)]
!$omp target enter data map(to: CC) map(alloc: DD)
!$omp target
DD = 5 * CC
!$omp end target
!$omp target exit data map(delete: CC) map(from: DD)
if (any (CC /= [(31*3*i, i=1,N)])) stop 3
if (any (DD /= [(31*3*5*i, i=1,N)])) stop 4
end
|