3 struct blk
{ int x
, y
; };
9 struct blk
* blocks
[N
];
13 void foo (struct L
*l
)
15 for (int i
= 0; i
< N
; i
++)
17 l
->m
.blocks
[i
] = (struct blk
*) malloc (sizeof (struct blk
) * N
);
18 l
->m
.num_blocks
[i
] = N
;
21 #pragma omp target enter data map(to:l[:1])
22 for (int i
= 0; i
< N
; i
++)
24 #pragma omp target enter data map(to:l->m.blocks[i][:l->m.num_blocks[i]])
29 for (int i
= 0; i
< N
; i
++)
30 for (int j
= 0; j
< N
; j
++)
32 l
->m
.blocks
[i
][j
].x
= i
+ j
;
33 l
->m
.blocks
[i
][j
].y
= i
* j
;
37 for (int i
= 0; i
< N
; i
++)
39 #pragma omp target exit data map(from:l->m.blocks[i][:l->m.num_blocks[i]])
41 #pragma omp target exit data map(from:l[:1])
44 for (int i
= 0; i
< N
; i
++)
45 for (int j
= 0; j
< N
; j
++)
47 if (l
->m
.blocks
[i
][j
].x
!= i
+ j
)
49 if (l
->m
.blocks
[i
][j
].y
!= i
* j
)