8 main(int argc
, char **argv
)
10 float *a
, *b
, *d_a
, *d_b
, exp
, exp2
;
16 a
= (float *) malloc (N
* sizeof (float));
17 b
= (float *) malloc (N
* sizeof (float));
18 d_a
= (float *) acc_malloc (N
* sizeof (float));
19 d_b
= (float *) acc_malloc (N
* sizeof (float));
21 for (i
= 0; i
< N
; i
++)
24 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(1)
28 for (ii
= 0; ii
< N
; ii
++)
30 if (acc_on_device (acc_device_host
))
43 for (i
= 0; i
< N
; i
++)
49 for (i
= 0; i
< N
; i
++)
52 #pragma acc parallel if(0)
56 for (ii
= 0; ii
< N
; ii
++)
58 if (acc_on_device (acc_device_host
))
65 for (i
= 0; i
< N
; i
++)
71 for (i
= 0; i
< N
; i
++)
74 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(one)
78 for (ii
= 0; ii
< N
; ii
++)
80 if (acc_on_device (acc_device_host
))
93 for (i
= 0; i
< N
; i
++)
99 for (i
= 0; i
< N
; i
++)
102 #pragma acc parallel if(zero)
106 for (ii
= 0; ii
< N
; ii
++)
108 if (acc_on_device (acc_device_host
))
115 for (i
= 0; i
< N
; i
++)
121 for (i
= 0; i
< N
; i
++)
124 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(true)
128 for (ii
= 0; ii
< N
; ii
++)
130 if (acc_on_device (acc_device_host
))
143 for (i
= 0; i
< N
; i
++)
149 for (i
= 0; i
< N
; i
++)
152 #pragma acc parallel if(false)
156 for (ii
= 0; ii
< N
; ii
++)
158 if (acc_on_device (acc_device_host
))
165 for (i
= 0; i
< N
; i
++)
171 for (i
= 0; i
< N
; i
++)
176 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(n)
180 for (ii
= 0; ii
< N
; ii
++)
182 if (acc_on_device (acc_device_host
))
195 for (i
= 0; i
< N
; i
++)
201 for (i
= 0; i
< N
; i
++)
206 #pragma acc parallel if(n)
210 for (ii
= 0; ii
< N
; ii
++)
212 if (acc_on_device (acc_device_host
))
219 for (i
= 0; i
< N
; i
++)
225 for (i
= 0; i
< N
; i
++)
230 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(n + n)
234 for (ii
= 0; ii
< N
; ii
++)
236 if (acc_on_device (acc_device_host
))
249 for (i
= 0; i
< N
; i
++)
255 for (i
= 0; i
< N
; i
++)
260 #pragma acc parallel if(n + n)
264 for (ii
= 0; ii
< N
; ii
++)
266 if (acc_on_device (acc_device_host
))
273 for (i
= 0; i
< N
; i
++)
279 for (i
= 0; i
< N
; i
++)
282 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(-2)
286 for (ii
= 0; ii
< N
; ii
++)
288 if (acc_on_device (acc_device_host
))
301 for (i
= 0; i
< N
; i
++)
307 for (i
= 0; i
< N
; i
++)
310 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(one == 1)
314 for (ii
= 0; ii
< N
; ii
++)
316 if (acc_on_device (acc_device_host
))
329 for (i
= 0; i
< N
; i
++)
335 for (i
= 0; i
< N
; i
++)
338 #pragma acc parallel if(one == 0)
342 for (ii
= 0; ii
< N
; ii
++)
344 if (acc_on_device (acc_device_host
))
351 for (i
= 0; i
< N
; i
++)
357 for (i
= 0; i
< N
; i
++)
367 acc_map_data (a
, d_a
, N
* sizeof (float));
368 acc_map_data (b
, d_b
, N
* sizeof (float));
373 #pragma acc update device(a[0:N], b[0:N]) if(1)
375 for (i
= 0; i
< N
; i
++)
381 #pragma acc update host(a[0:N], b[0:N]) if(1)
383 for (i
= 0; i
< N
; i
++)
392 for (i
= 0; i
< N
; i
++)
398 #pragma acc update device(a[0:N], b[0:N]) if(0)
400 for (i
= 0; i
< N
; i
++)
406 #pragma acc update host(a[0:N], b[0:N]) if(1)
408 for (i
= 0; i
< N
; i
++)
417 for (i
= 0; i
< N
; i
++)
423 #pragma acc update device(a[0:N], b[0:N]) if(1)
425 for (i
= 0; i
< N
; i
++)
431 #pragma acc update host(a[0:N], b[0:N]) if(0)
433 for (i
= 0; i
< N
; i
++)
450 for (i
= 0; i
< N
; i
++)
456 #pragma acc data copyin(a[0:N]) copyout(b[0:N]) if(1)
458 #pragma acc parallel present(a[0:N])
462 for (ii
= 0; ii
< N
; ii
++)
469 for (i
= 0; i
< N
; i
++)
475 for (i
= 0; i
< N
; i
++)
481 #pragma acc data copyin(a[0:N]) copyout(b[0:N]) if(0)
484 if (acc_is_present (a
, N
* sizeof (float)))
489 if (acc_is_present (b
, N
* sizeof (float)))
494 for (i
= 0; i
< N
; i
++)
500 #pragma acc data copyin(a[0:N]) if(1)
503 if (!acc_is_present (a
, N
* sizeof (float)))
507 #pragma acc data copyout(b[0:N]) if(0)
510 if (acc_is_present (b
, N
* sizeof (float)))
514 #pragma acc data copyout(b[0:N]) if(1)
516 #pragma acc parallel present(a[0:N]) present(b[0:N])
520 for (ii
= 0; ii
< N
; ii
++)
528 if (acc_is_present (b
, N
* sizeof (float)))
534 for (i
= 0; i
< N
; i
++)
540 #pragma acc enter data copyin (b[0:N]) if (0)
543 if (acc_is_present (b
, N
* sizeof (float)))
547 #pragma acc exit data delete (b[0:N]) if (0)
549 #pragma acc enter data copyin (b[0:N]) if (1)
552 if (!acc_is_present (b
, N
* sizeof (float)))
556 #pragma acc exit data delete (b[0:N]) if (1)
559 if (acc_is_present (b
, N
* sizeof (float)))
563 #pragma acc enter data copyin (b[0:N]) if (zero)
566 if (acc_is_present (b
, N
* sizeof (float)))
570 #pragma acc exit data delete (b[0:N]) if (zero)
572 #pragma acc enter data copyin (b[0:N]) if (one)
575 if (!acc_is_present (b
, N
* sizeof (float)))
579 #pragma acc exit data delete (b[0:N]) if (one)
582 if (acc_is_present (b
, N
* sizeof (float)))
586 #pragma acc enter data copyin (b[0:N]) if (one == 0)
589 if (acc_is_present (b
, N
* sizeof (float)))
593 #pragma acc exit data delete (b[0:N]) if (one == 0)
595 #pragma acc enter data copyin (b[0:N]) if (one == 1)
598 if (!acc_is_present (b
, N
* sizeof (float)))
602 #pragma acc exit data delete (b[0:N]) if (one == 1)
605 if (acc_is_present (b
, N
* sizeof (float)))
609 for (i
= 0; i
< N
; i
++)
612 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(1)
616 for (ii
= 0; ii
< N
; ii
++)
618 if (acc_on_device (acc_device_host
))
631 for (i
= 0; i
< N
; i
++)
637 for (i
= 0; i
< N
; i
++)
640 #pragma acc kernels if(0)
644 for (ii
= 0; ii
< N
; ii
++)
646 if (acc_on_device (acc_device_host
))
653 for (i
= 0; i
< N
; i
++)
659 for (i
= 0; i
< N
; i
++)
662 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(one)
666 for (ii
= 0; ii
< N
; ii
++)
668 if (acc_on_device (acc_device_host
))
681 for (i
= 0; i
< N
; i
++)
687 for (i
= 0; i
< N
; i
++)
690 #pragma acc kernels if(zero)
694 for (ii
= 0; ii
< N
; ii
++)
696 if (acc_on_device (acc_device_host
))
703 for (i
= 0; i
< N
; i
++)
709 for (i
= 0; i
< N
; i
++)
712 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(true)
716 for (ii
= 0; ii
< N
; ii
++)
718 if (acc_on_device (acc_device_host
))
731 for (i
= 0; i
< N
; i
++)
737 for (i
= 0; i
< N
; i
++)
740 #pragma acc kernels if(false)
744 for (ii
= 0; ii
< N
; ii
++)
746 if (acc_on_device (acc_device_host
))
753 for (i
= 0; i
< N
; i
++)
759 for (i
= 0; i
< N
; i
++)
764 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(n)
768 for (ii
= 0; ii
< N
; ii
++)
770 if (acc_on_device (acc_device_host
))
783 for (i
= 0; i
< N
; i
++)
789 for (i
= 0; i
< N
; i
++)
794 #pragma acc kernels if(n)
798 for (ii
= 0; ii
< N
; ii
++)
800 if (acc_on_device (acc_device_host
))
807 for (i
= 0; i
< N
; i
++)
813 for (i
= 0; i
< N
; i
++)
818 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(n + n)
822 for (ii
= 0; ii
< N
; ii
++)
824 if (acc_on_device (acc_device_host
))
837 for (i
= 0; i
< N
; i
++)
843 for (i
= 0; i
< N
; i
++)
848 #pragma acc kernels if(n + n)
852 for (ii
= 0; ii
< N
; ii
++)
854 if (acc_on_device (acc_device_host
))
861 for (i
= 0; i
< N
; i
++)
867 for (i
= 0; i
< N
; i
++)
870 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(-2)
874 for (ii
= 0; ii
< N
; ii
++)
876 if (acc_on_device (acc_device_host
))
889 for (i
= 0; i
< N
; i
++)
895 for (i
= 0; i
< N
; i
++)
898 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(one == 1)
902 for (ii
= 0; ii
< N
; ii
++)
904 if (acc_on_device (acc_device_host
))
917 for (i
= 0; i
< N
; i
++)
923 for (i
= 0; i
< N
; i
++)
926 #pragma acc kernels if(one == 0)
930 for (ii
= 0; ii
< N
; ii
++)
932 if (acc_on_device (acc_device_host
))
939 for (i
= 0; i
< N
; i
++)
945 for (i
= 0; i
< N
; i
++)
955 acc_map_data (a
, d_a
, N
* sizeof (float));
956 acc_map_data (b
, d_b
, N
* sizeof (float));