(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
goacc/
diag-parallelism-1.c
       1  /* Diagnostics about potentially suboptimal choices related to OpenACC
       2     parallelism.
       3  
       4     { dg-additional-options "-Wopenacc-parallelism" }
       5  */
       6  
       7  
       8  //TODO 'kernels'
       9  
      10  //TODO 'serial'
      11  
      12  //TODO 'routine'
      13  
      14  //TODO Fortran
      15  
      16  
      17  static void f1 ()
      18  {
      19    int ary[10];
      20  
      21  
      22  #pragma acc parallel num_gangs (1)
      23    /* { dg-warning "region contains gang partitioned code but is not gang partitioned" "" { target *-*-* } .-1 } */
      24    {
      25      #pragma acc loop gang
      26      for (int i = 0; i < 10; i++)
      27        ary[i] = i;
      28    }
      29  
      30  #pragma acc parallel num_workers (1)
      31    /* { dg-warning "region contains worker partitioned code but is not worker partitioned" "" { target *-*-* } .-1 } */
      32    {
      33      #pragma acc loop worker
      34      for (int i = 0; i < 10; i++)
      35        ary[i] = i;
      36    }
      37  
      38  #pragma acc parallel vector_length (1)
      39    /* { dg-warning "region contains vector partitioned code but is not vector partitioned" "" { target *-*-* } .-1 } */
      40    {
      41      #pragma acc loop vector
      42      for (int i = 0; i < 10; i++)
      43        ary[i] = i;
      44    }
      45  }
      46  
      47  
      48  static void f2 ()
      49  {
      50    int ary[10];
      51  
      52  
      53  #pragma acc parallel num_gangs (8)
      54    /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */
      55    {
      56      #pragma acc loop worker
      57      for (int i = 0; i < 10; i++)
      58        ary[i] = i;
      59    }
      60  
      61  #pragma acc parallel num_gangs (8)
      62    /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */
      63    {
      64      #pragma acc loop vector
      65      for (int i = 0; i < 10; i++)
      66        ary[i] = i;
      67    }
      68  
      69  #pragma acc parallel num_gangs (8)
      70    /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-1 } */
      71    {
      72      #pragma acc loop worker vector
      73      for (int i = 0; i < 10; i++)
      74        ary[i] = i;
      75    }
      76  
      77  #pragma acc parallel num_workers (8)
      78    /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */
      79    {
      80      #pragma acc loop gang
      81      for (int i = 0; i < 10; i++)
      82        ary[i] = i;
      83    }
      84  
      85  #pragma acc parallel num_workers (8)
      86    /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */
      87    {
      88      #pragma acc loop vector
      89      for (int i = 0; i < 10; i++)
      90        ary[i] = i;
      91    }
      92  
      93  #pragma acc parallel num_workers (8)
      94    /* { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 } */
      95    {
      96      #pragma acc loop gang vector
      97      for (int i = 0; i < 10; i++)
      98        ary[i] = i;
      99    }
     100  
     101  #pragma acc parallel vector_length (8)
     102    /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */
     103    {
     104      #pragma acc loop gang
     105      for (int i = 0; i < 10; i++)
     106        ary[i] = i;
     107    }
     108  
     109  #pragma acc parallel vector_length (8)
     110    /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */
     111    {
     112      #pragma acc loop worker
     113      for (int i = 0; i < 10; i++)
     114        ary[i] = i;
     115    }
     116  
     117  #pragma acc parallel vector_length (8)
     118    /* { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 } */
     119    {
     120      #pragma acc loop gang worker
     121      for (int i = 0; i < 10; i++)
     122        ary[i] = i;
     123    }
     124  }