13 for (int i
= 0; i
< N
; i
++)
14 a
[i
] = (int *) calloc (M
, sizeof (int));
16 /* 'target enter data'/'target exit data' with array of pointers. */
17 #pragma omp target enter data map(alloc: a[0:N])
19 for (int i
= 0; i
< N
; i
++)
21 #pragma omp target enter data map(to: a[i][0:M])
24 #pragma omp target map(alloc: a)
26 for (int i
= 0; i
< N
; i
++)
27 for (int j
= 0; j
< M
; j
++)
31 for (int i
= 0; i
< N
; i
++)
33 #pragma omp target exit data map(release: a[i]) map(from: a[i][0:M])
36 #pragma omp target exit data map(release: a, a[0:N])
38 /* 'target data' with array of pointers. */
39 #pragma omp target data map(alloc: a[0:N])
41 #pragma omp target data map(tofrom: a[5][0:M])
43 #pragma omp target map(alloc: a)
45 for (int i
= 0; i
< M
; i
++)
51 /* 'target' with array of pointers. */
52 #pragma omp target data map(alloc: a[0:N])
54 #pragma omp target map(tofrom: a[7][0:M])
56 for (int i
= 0; i
< M
; i
++)
61 for (int i
= 0; i
< N
; i
++)
62 for (int j
= 0; j
< M
; j
++)
63 assert (a
[i
][j
] == i
+ j
+ (i
== 5) + 2 * (i
== 7));
65 for (int i
= 0; i
< N
; i
++)