| /* { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting |
| aspects of that functionality. */ |
| |
| const int n = 100; |
| |
| int |
| private_reduction () |
| { |
| int i, r; |
| |
| #pragma acc parallel |
| #pragma acc loop private (r) reduction (+:r) |
| for (i = 0; i < 100; i++) |
| r += 10; |
| |
| return r; |
| } |
| |
| int |
| parallel_reduction () |
| { |
| int sum = 0; |
| int dummy = 0; |
| |
| #pragma acc data copy (dummy) |
| { |
| #pragma acc parallel num_gangs (10) copy (sum) reduction (+:sum) |
| /* { dg-bogus "warning: region is gang partitioned but does not contain gang partitioned code" "TODO 'reduction'" { xfail *-*-* } .-1 } */ |
| { |
| int v = 5; |
| sum += 10 + v; |
| } |
| } |
| |
| return sum; |
| } |
| |
| int |
| main () |
| { |
| int i, s = 0; |
| |
| #pragma acc parallel num_gangs (10) copy (s) reduction (+:s) |
| /* { dg-bogus "warning: region is gang partitioned but does not contain gang partitioned code" "TODO 'reduction'" { xfail *-*-* } .-1 } */ |
| for (i = 0; i < n; i++) |
| s += i+1; |
| |
| #pragma acc parallel num_gangs (10) reduction (+:s) copy (s) |
| /* { dg-bogus "warning: region is gang partitioned but does not contain gang partitioned code" "TODO 'reduction'" { xfail *-*-* } .-1 } */ |
| for (i = 0; i < n; i++) |
| s += i+1; |
| |
| return 0; |
| } |