Skip to content

Commit 31b83e2

Browse files
committed
bug-tested
1 parent 6ac95e9 commit 31b83e2

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+

0 commit comments

Comments
 (0)