| /* Diagnostics about potentially suboptimal choices related to OpenACC |
| parallelism. |
| |
| { dg-additional-options "-Wopenacc-parallelism" } |
| */ |
| |
| |
| //TODO 'kernels' |
| |
| //TODO 'serial' |
| |
| //TODO 'routine' |
| |
| //TODO Fortran |
| |
| |
| static void f1 () |
| { |
| int ary[10]; |
| |
| |
| #pragma acc parallel num_gangs (1) |
| /* { dg-warning "region contains gang partitioned code but is not gang partitioned" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop gang |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_workers (1) |
| /* { dg-warning "region contains worker partitioned code but is not worker partitioned" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop worker |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel vector_length (1) |
| /* { dg-warning "region contains vector partitioned code but is not vector partitioned" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop vector |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| } |
| |
| |
| static void f2 () |
| { |
| int ary[10]; |
| |
| |
| #pragma acc parallel num_gangs (8) |
| /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop worker |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_gangs (8) |
| /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop vector |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_gangs (8) |
| /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop worker vector |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_workers (8) |
| /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop gang |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_workers (8) |
| /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop vector |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel num_workers (8) |
| /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop gang vector |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel vector_length (8) |
| /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop gang |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel vector_length (8) |
| /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop worker |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| |
| #pragma acc parallel vector_length (8) |
| /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */ |
| { |
| #pragma acc loop gang worker |
| for (int i = 0; i < 10; i++) |
| ary[i] = i; |
| } |
| } |