[PATCH] [og10] Fix goacc/routine-4-extern.c test

Thomas Schwinge thomas@codesourcery.com
Tue Jul 28 08:44:29 GMT 2020


Hi Kwok!

On 2020-07-26T14:05:32+0100, Kwok Cheung Yeung <kcy@codesourcery.com> wrote:
> On 24/07/2020 8:27 am, Thomas Schwinge wrote:
>> That however completely defeats what we're intending to test here, which
>> is to "Test invalid intra-routine parallelism".  The same problem has
>> been introduced in og10 commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca
>> "Various OpenACC reduction enhancements - test cases" for
>> 'gcc/testsuite/c-c++-common/goacc/routine-4.c', which throughout changed:
>>
>>      -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" }
>>      +#pragma acc loop seq reduction (+:red)
>>
>> Please revert that, and instead replace 'reduction (+:red)' with a
>> different "dummy loop operation" (just an empty loop body?), and in the
>> commit log state that this should've been included in the respective og10
>> commit adding the "gang reduction on an orphan loop" checking.
>
> I have reverted all the previous changes and replaced the orphan loop gang
> reductions with empty loops as suggested, and checked that the tests now pass.
>
> Is this version okay for OG10?

Yes, thanks.


Grüße
 Thomas


> From 280957dc80090bd0b92ad7a73f528851aad94051 Mon Sep 17 00:00:00 2001
> From: Kwok Cheung Yeung <kcy@codesourcery.com>
> Date: Sun, 26 Jul 2020 05:11:30 -0700
> Subject: [PATCH] Fix c-c++-common/goacc/routine-4.c and
>  c-c++-common/goacc/routine-4-extern.c testcases
>
> 'Various OpenACC reduction enhancements - FE changes' (commit
> 6b3e1f7f05cd360bbd356b3f78511aa2ec3f40c3) introduced checks for gang
> reductions on orphan loops.  The checks triggered in the routine-4.c
> and routine-4-extern.c testcases, requiring changes that effectively
> rendered them useless as test cases.
>
> This patch restores the original intent of the test cases, by restoring
> the original tests and removing the orphan loop reductions that were
> triggering the new check.
>
> This patch should probably have been part of 'Various OpenACC reduction
> enhancements - test cases' (commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca).
>
> 2020-07-26  Kwok Cheung Yeung  <kcy@codesourcery.com>
>
>       gcc/testsuite/
>       * c-c++-common/goacc/routine-4.c (seq, vector, worker, gang): Revert
>       previous changes.  Remove loop reductions.
>       * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker, gang):
>       Likewise.
> ---
>  .../c-c++-common/goacc/routine-4-extern.c          | 72 ++++++++++------------
>  gcc/testsuite/c-c++-common/goacc/routine-4.c       | 72 ++++++++++------------
>  2 files changed, 64 insertions(+), 80 deletions(-)
>
> diff --git a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c
> index c23ddcf..ec44758 100644
> --- a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c
> +++ b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c
> @@ -26,23 +26,21 @@ void seq (void)
>    extern_vector ();  /* { dg-error "routine call uses" } */
>    extern_seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" }
> +#pragma acc loop // { dg-warning "insufficient partitioning" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop gang reduction (+:red) // { dg-error "gang reduction on an orphan loop" }
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop worker // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop vector // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void vector (void)
> @@ -52,23 +50,21 @@ void vector (void)
>    extern_vector ();
>    extern_seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop gang reduction (+:red) // { dg-error "gang reduction on an orphan loop" }
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop worker // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void worker (void)
> @@ -78,23 +74,21 @@ void worker (void)
>    extern_vector ();
>    extern_seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop gang reduction (+:red) // { dg-error "gang reduction on an orphan loop" }
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red)
> +#pragma acc loop worker
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void gang (void)
> @@ -104,21 +98,19 @@ void gang (void)
>    extern_vector ();
>    extern_seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop gang reduction (+:red) /* { dg-error "gang reduction on an orphan loop" } */
> +#pragma acc loop gang
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red)
> +#pragma acc loop worker
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
> diff --git a/gcc/testsuite/c-c++-common/goacc/routine-4.c b/gcc/testsuite/c-c++-common/goacc/routine-4.c
> index ad17371..870ff64 100644
> --- a/gcc/testsuite/c-c++-common/goacc/routine-4.c
> +++ b/gcc/testsuite/c-c++-common/goacc/routine-4.c
> @@ -17,23 +17,21 @@ void seq (void)
>    vector ();  /* { dg-error "routine call uses" } */
>    seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" }
> +#pragma acc loop // { dg-warning "insufficient partitioning" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop seq reduction (+:red)
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop worker // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop vector // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void vector (void) /* { dg-message "declared here" "1" } */
> @@ -43,23 +41,21 @@ void vector (void) /* { dg-message "declared here" "1" } */
>    vector ();
>    seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop seq reduction (+:red)
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" }
> +#pragma acc loop worker // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void worker (void) /* { dg-message "declared here" "2" } */
> @@ -69,23 +65,21 @@ void worker (void) /* { dg-message "declared here" "2" } */
>    vector ();
>    seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop seq reduction (+:red)
> +#pragma acc loop gang // { dg-error "disallowed by containing routine" }
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red)
> +#pragma acc loop worker
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
>
>  void gang (void) /* { dg-message "declared here" "3" } */
> @@ -95,21 +89,19 @@ void gang (void) /* { dg-message "declared here" "3" } */
>    vector ();
>    seq ();
>
> -  int red;
> -
> -#pragma acc loop reduction (+:red)
> +#pragma acc loop
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop seq reduction (+:red)
> +#pragma acc loop gang
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop worker reduction (+:red)
> +#pragma acc loop worker
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>
> -#pragma acc loop vector reduction (+:red)
> +#pragma acc loop vector
>    for (int i = 0; i < 10; i++)
> -    red ++;
> +    ;
>  }
-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter


More information about the Gcc-patches mailing list