2 /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
11 main (int argc
, char **argv
)
17 a
= (float *) malloc (N
* sizeof (float));
18 b
= (float *) malloc (N
* sizeof (float));
19 c
= (float *) malloc (N
* sizeof (float));
21 for (i
= 0; i
< N
; i
++)
27 #pragma acc data copyin (a[0:N]) copyout (b[0:N])
33 for (ii
= 0; ii
< N
; ii
++)
38 for (i
= 0; i
< N
; i
++)
44 if (acc_is_present (&a
[0], (N
* sizeof (float))))
47 if (acc_is_present (&b
[0], (N
* sizeof (float))))
50 for (i
= 0; i
< N
; i
++)
56 #pragma acc data copyin (a[0:N]) copyout (b[0:N])
62 for (ii
= 0; ii
< N
; ii
++)
67 for (i
= 0; i
< N
; i
++)
73 if (acc_is_present (&a
[0], (N
* sizeof (float))))
76 if (acc_is_present (&b
[0], (N
* sizeof (float))))
79 for (i
= 0; i
< N
; i
++)
85 d
= (float *) acc_copyin (&a
[0], N
* sizeof (float));
87 for (i
= 0; i
< N
; i
++)
92 #pragma acc data present_or_copyin (a[0:N]) copyout (b[0:N])
98 for (ii
= 0; ii
< N
; ii
++)
103 for (i
= 0; i
< N
; i
++)
109 if (!acc_is_present (&a
[0], (N
* sizeof (float))))
112 if (acc_is_present (&b
[0], (N
* sizeof (float))))
115 acc_delete (&a
[0], N
* sizeof (float));
117 if (acc_is_present (&a
[0], N
* sizeof (float)))
120 for (i
= 0; i
< N
; i
++)
126 #pragma acc data copyin (a[0:N]) present_or_copyout (b[0:N])
132 for (ii
= 0; ii
< N
; ii
++)
137 for (i
= 0; i
< N
; i
++)
143 if (acc_is_present (&a
[0], (N
* sizeof (float))))
146 if (acc_is_present (&b
[0], (N
* sizeof (float))))
149 for (i
= 0; i
< N
; i
++)
155 d
= (float *) acc_copyin (&b
[0], N
* sizeof (float));
157 #pragma acc data copyin (a[0:N]) present_or_copyout (b[0:N])
163 for (ii
= 0; ii
< N
; ii
++)
168 for (i
= 0; i
< N
; i
++)
177 if (acc_is_present (&a
[0], (N
* sizeof (float))))
180 if (!acc_is_present (&b
[0], (N
* sizeof (float))))
183 acc_delete (&b
[0], N
* sizeof (float));
185 if (acc_is_present (&b
[0], (N
* sizeof (float))))
188 for (i
= 0; i
< N
; i
++)
194 #pragma acc data copy (a[0:N]) copyout (b[0:N])
200 for (ii
= 0; ii
< N
; ii
++)
208 for (i
= 0; i
< N
; i
++)
217 if (acc_is_present (&a
[0], (N
* sizeof (float))))
220 if (acc_is_present (&b
[0], (N
* sizeof (float))))
223 for (i
= 0; i
< N
; i
++)
229 #pragma acc data present_or_copy (a[0:N]) present_or_copy (b[0:N])
235 for (ii
= 0; ii
< N
; ii
++)
243 for (i
= 0; i
< N
; i
++)
252 if (acc_is_present (&a
[0], (N
* sizeof (float))))
255 if (acc_is_present (&b
[0], (N
* sizeof (float))))
258 for (i
= 0; i
< N
; i
++)
264 d
= (float *) acc_copyin (&a
[0], N
* sizeof (float));
265 d
= (float *) acc_copyin (&b
[0], N
* sizeof (float));
267 #pragma acc data present_or_copy (a[0:N]) present_or_copy (b[0:N])
273 for (ii
= 0; ii
< N
; ii
++)
281 for (i
= 0; i
< N
; i
++)
290 if (!acc_is_present (&a
[0], (N
* sizeof (float))))
293 if (!acc_is_present (&b
[0], (N
* sizeof (float))))
296 acc_delete (&a
[0], N
* sizeof (float));
298 if (acc_is_present (&a
[0], N
* sizeof (float)))
301 acc_delete (&b
[0], N
* sizeof (float));
303 if (acc_is_present (&b
[0], N
* sizeof (float)))
307 for (i
= 0; i
< N
; i
++)
313 #pragma acc data copyin (a[0:N]) create (c[0:N]) copyout (b[0:N])
319 for (ii
= 0; ii
< N
; ii
++)
327 for (i
= 0; i
< N
; i
++)
336 if (acc_is_present (&a
[0], (N
* sizeof (float))))
339 if (acc_is_present (&b
[0], (N
* sizeof (float))))
342 if (acc_is_present (&c
[0], (N
* sizeof (float))))
345 for (i
= 0; i
< N
; i
++)
351 #pragma acc data copyin (a[0:N]) present_or_create (c[0:N]) copyout (b[0:N])
357 for (ii
= 0; ii
< N
; ii
++)
365 for (i
= 0; i
< N
; i
++)
374 if (acc_is_present (&a
[0], (N
* sizeof (float))))
377 if (acc_is_present (&b
[0], (N
* sizeof (float))))
380 if (acc_is_present (&c
[0], (N
* sizeof (float))))
383 for (i
= 0; i
< N
; i
++)
389 d
= (float *) acc_malloc (N
* sizeof (float));
390 acc_map_data (c
, d
, N
* sizeof (float));
392 #pragma acc data copyin (a[0:N]) present_or_create (c[0:N]) copyout (b[0:N])
398 for (ii
= 0; ii
< N
; ii
++)
406 for (i
= 0; i
< N
; i
++)
415 if (acc_is_present (a
, (N
* sizeof (float))))
418 if (acc_is_present (b
, (N
* sizeof (float))))
421 if (!acc_is_present (c
, (N
* sizeof (float))))
424 d
= (float *) acc_deviceptr (c
);
430 for (i
= 0; i
< N
; i
++)
436 d
= (float *) acc_malloc (N
* sizeof (float));
437 acc_map_data (c
, d
, N
* sizeof (float));
439 #pragma acc data copyin (a[0:N]) present (c[0:N]) copyout (b[0:N])
445 for (ii
= 0; ii
< N
; ii
++)
453 for (i
= 0; i
< N
; i
++)
462 if (acc_is_present (a
, (N
* sizeof (float))))
465 if (acc_is_present (b
, (N
* sizeof (float))))
468 if (!acc_is_present (c
, (N
* sizeof (float))))
473 if (acc_is_present (c
, (N
* sizeof (float))))
478 d
= (float *) acc_malloc (N
* sizeof (float));
479 acc_map_data (c
, d
, N
* sizeof (float));
481 if (!acc_is_present (c
, (N
* sizeof (float))))
484 d
= (float *) acc_malloc (N
* sizeof (float));
485 acc_map_data (b
, d
, N
* sizeof (float));
487 if (!acc_is_present (b
, (N
* sizeof (float))))
490 d
= (float *) acc_malloc (N
* sizeof (float));
491 acc_map_data (a
, d
, N
* sizeof (float));
493 if (!acc_is_present (a
, (N
* sizeof (float))))
496 #pragma acc data present (a[0:N]) present (c[0:N]) present (b[0:N])
502 for (ii
= 0; ii
< N
; ii
++)
511 if (!acc_is_present (a
, (N
* sizeof (float))))
514 if (!acc_is_present (b
, (N
* sizeof (float))))
517 if (!acc_is_present (c
, (N
* sizeof (float))))
520 d
= (float *) acc_deviceptr (b
);
522 acc_memcpy_from_device (b
, d
, N
* sizeof (float));
524 for (i
= 0; i
< N
; i
++)
533 d
= (float *) acc_deviceptr (a
);
539 d
= (float *) acc_deviceptr (b
);
545 d
= (float *) acc_deviceptr (c
);
551 for (i
= 0; i
< N
; i
++)
557 d
= (float *) acc_malloc (N
* sizeof (float));
559 #pragma acc parallel copyin (a[0:N]) deviceptr (d) copyout (b[0:N])
563 for (ii
= 0; ii
< N
; ii
++)
570 for (i
= 0; i
< N
; i
++)
579 if (acc_is_present (a
, (N
* sizeof (float))))
582 if (acc_is_present (b
, (N
* sizeof (float))))
587 for (i
= 0; i
< N
; i
++)
593 d
= (float *) acc_copyin (&a
[0], N
* sizeof (float));
595 for (i
= 0; i
< N
; i
++)
600 #pragma acc data pcopyin (a[0:N]) copyout (b[0:N])
606 for (ii
= 0; ii
< N
; ii
++)
611 for (i
= 0; i
< N
; i
++)
617 if (!acc_is_present (&a
[0], (N
* sizeof (float))))
620 if (acc_is_present (&b
[0], (N
* sizeof (float))))
623 acc_delete (&a
[0], N
* sizeof (float));
625 if (acc_is_present (&a
[0], N
* sizeof (float)))
628 for (i
= 0; i
< N
; i
++)
634 #pragma acc data copyin (a[0:N]) pcopyout (b[0:N])
640 for (ii
= 0; ii
< N
; ii
++)
645 for (i
= 0; i
< N
; i
++)
651 if (acc_is_present (&a
[0], (N
* sizeof (float))))
654 if (acc_is_present (&b
[0], (N
* sizeof (float))))
657 for (i
= 0; i
< N
; i
++)
663 #pragma acc data copyin (a[0:N]) pcreate (c[0:N]) copyout (b[0:N])
669 for (ii
= 0; ii
< N
; ii
++)
677 for (i
= 0; i
< N
; i
++)
686 if (acc_is_present (&a
[0], (N
* sizeof (float))))
689 if (acc_is_present (&b
[0], (N
* sizeof (float))))
692 if (acc_is_present (&c
[0], (N
* sizeof (float))))