Skip to content

Commit abaeaf3

Browse files
authored
[OpenMP][flang] Adding more tests for commonblock with target map (#71146)
This patch addresses the concern about multiple devices and also adds more tests for `map(to:)`, `map(from:)` and named common blocks.
1 parent 6cd7500 commit abaeaf3

File tree

1 file changed

+51
-4
lines changed

1 file changed

+51
-4
lines changed

openmp/libomptarget/test/offloading/fortran/target_map_common_block.f90

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@
1212
! Testing simple variables in common block.
1313
program main
1414
call check_device
15-
call commonblock_simple_with_implicit_type
15+
call commonblock_simple_with_implicit_type_var
1616
call commonblock_simple_with_integer
1717
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
1822
end program main
1923

2024
!-----
@@ -26,14 +30,17 @@ subroutine check_device
2630
!$omp target map(tofrom:devices)
2731
devices(2) = omp_get_device_num()
2832
!$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]]
2938
print *, "devices: ", devices
3039
end subroutine check_device
3140

32-
!CHECK: devices: 1 0
33-
3441
!-----
3542

36-
subroutine commonblock_simple_with_implicit_type
43+
subroutine commonblock_simple_with_implicit_type_var
3744
use omp_lib
3845
common var1
3946
var1 = 10
@@ -80,3 +87,43 @@ subroutine commonblock_simple_with_real
8087

8188
! CHECK: var3 before target = 12.5
8289
! 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

Comments
 (0)