12 int *(&a)[N] = a_orig;
14 for (int i = 0; i < N; i++)
15 a[i] = (int *) calloc (M, sizeof (int));
17 /* 'target enter data'/'target exit data' with array of pointers. */
18 #pragma omp target enter data map(alloc: a[0:N])
20 for (int i = 0; i < N; i++)
22 #pragma omp target enter data map(to: a[i][0:M])
25 #pragma omp target map(alloc: a)
27 for (int i = 0; i < N; i++)
28 for (int j = 0; j < M; j++)
32 for (int i = 0; i < N; i++)
34 #pragma omp target exit data map(release: a[i]) map(from: a[i][0:M])
37 #pragma omp target exit data map(release: a, a[0:N])
39 /* 'target data' with array of pointers. */
40 #pragma omp target data map(alloc: a[0:N])
42 #pragma omp target data map(tofrom: a[5][0:M])
44 #pragma omp target map(alloc: a)
46 for (int i = 0; i < M; i++)
52 /* 'target' with array of pointers. */
53 #pragma omp target data map(alloc: a[0:N])
55 #pragma omp target map(tofrom: a[7][0:M])
57 for (int i = 0; i < M; i++)
62 for (int i = 0; i < N; i++)
63 for (int j = 0; j < M; j++)
64 assert (a[i][j] == i + j + (i == 5) + 2 * (i == 7));
66 for (int i = 0; i < N; i++)