12
12
! Testing simple variables in common block.
13
13
program main
14
14
call check_device
15
- call commonblock_simple_with_implicit_type
15
+ call commonblock_simple_with_implicit_type_var
16
16
call commonblock_simple_with_integer
17
17
call commonblock_simple_with_real
18
+ call commonblock_simple_to
19
+ call commonblock_simple_from
20
+ call set_commonblock_named
21
+ call use_commonblock_named
18
22
end program main
19
23
20
24
!- ----
@@ -26,14 +30,17 @@ subroutine check_device
26
30
! $omp target map(tofrom:devices)
27
31
devices(2 ) = omp_get_device_num()
28
32
! $omp end target
33
+ print * , omp_get_num_devices()
34
+ ! CHECK: [[ND:[0-9]+]]
35
+ print * , omp_get_default_device()
36
+ ! CHECK: [[DD:[0-9]+]]
37
+ ! CHECK: devices: [[ND]] [[DD]]
29
38
print * , " devices: " , devices
30
39
end subroutine check_device
31
40
32
- ! CHECK: devices: 1 0
33
-
34
41
!- ----
35
42
36
- subroutine commonblock_simple_with_implicit_type
43
+ subroutine commonblock_simple_with_implicit_type_var
37
44
use omp_lib
38
45
common var1
39
46
var1 = 10
@@ -80,3 +87,43 @@ subroutine commonblock_simple_with_real
80
87
81
88
! CHECK: var3 before target = 12.5
82
89
! CHECK: var3 after target = 14.5
90
+
91
+ ! -----
92
+
93
+ subroutine commonblock_simple_to_from
94
+ use omp_lib
95
+ integer :: var4 , tmp
96
+ common var4
97
+ var4 = 10
98
+ tmp = 20
99
+ ! $omp target map(to:var4) map(from:tmp)
100
+ tmp = var4
101
+ var4 = 20
102
+ ! $omp end target
103
+ print * , " var4 after target = " , var4
104
+ print * , " tmp after target = " , tmp
105
+ end subroutine
106
+
107
+ ! CHECK: var4 after target = 10
108
+ ! CHECK: tmp after target = 10
109
+
110
+ ! -----
111
+
112
+ subroutine set_commonblock_named
113
+ integer :: var6
114
+ common / my_common_block/ var6
115
+ var6 = 20
116
+ end subroutine
117
+
118
+ subroutine use_commonblock_named
119
+ integer :: var6
120
+ common / my_common_block/ var6
121
+ print * , " var6 before target = " , var6
122
+ ! $omp target map(tofrom: var6)
123
+ var6 = 30
124
+ ! $omp end target
125
+ print * , " var6 after target = " , var6
126
+ end subroutine
127
+
128
+ ! CHECK: var6 before target = 20
129
+ ! CHECK: var6 after target = 30
0 commit comments