File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Checks that "update from" clause in OpenMP is supported when the elements are updated in a non-contiguous manner.
2
+ // RUN: %libomptarget-compile-run-and-check-generic
3
+ #include <omp.h>
4
+ #include <stdio.h>
5
+
6
+ int main () {
7
+ int len = 8 ;
8
+ double data [len ];
9
+ #pragma omp target map(tofrom: len, data[0:len])
10
+ {
11
+ for (int i = 0 ; i < len ; i ++ ) {
12
+ data [i ] = i ;
13
+ }
14
+ }
15
+ // initial values
16
+ printf ("original host array values:\n" );
17
+ for (int i = 0 ; i < len ; i ++ )
18
+ printf ("%f\n" , data [i ]);
19
+ printf ("\n" );
20
+
21
+ #pragma omp target data map(to: len, data[0:len])
22
+ {
23
+ #pragma omp target
24
+ for (int i = 0 ; i < len ; i ++ ) {
25
+ data [i ] += i ;
26
+ }
27
+
28
+ #pragma omp target update from(data[0:8:2])
29
+ }
30
+ // from results
31
+ // CHECK: 0.000000
32
+ // CHECK: 1.000000
33
+ // CHECK: 4.000000
34
+ // CHECK: 3.000000
35
+ // CHECK: 8.000000
36
+ // CHECK: 5.000000
37
+ // CHECK: 12.000000
38
+ // CHECK: 7.000000
39
+ // CHECK-NOT: 2.000000
40
+ // CHECK-NOT: 6.000000
41
+ // CHECK-NOT: 10.000000
42
+ // CHECK-NOT: 14.000000
43
+
44
+ printf ("from target array results:\n" );
45
+ for (int i = 0 ; i < len ; i ++ )
46
+ printf ("%f\n" , data [i ]);
47
+ printf ("\n" );
48
+
49
+ return 0 ;
50
+ }
51
+
You can’t perform that action at this time.
0 commit comments