public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Thomas Schwinge <thomas@codesourcery.com>
To: Tom de Vries <tdevries@suse.de>
Cc: <gcc-patches@gcc.gnu.org>
Subject: Re: [committed][nvptx] Add march-map
Date: Thu, 9 Jun 2022 12:39:52 +0200	[thread overview]
Message-ID: <87pmjixgqv.fsf@euler.schwinge.homeip.net> (raw)
In-Reply-To: <20220329120321.GA29849@delia.home>

Hi Tom!

On 2022-03-29T14:03:22+0200, Tom de Vries via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> Say we have an sm_50 board, and we want to run a benchmark using the highest
> possible march setting.
>
> Currently there's march=sm_30, march=sm_35, march=sm_53, but no march=sm_50.
>
> So, we'd need to pick march=sm_35.
>
> Likewise, for a test script that handles multiple boards, we'd need a mapping
> from native board sm_xx to march, which might have to be updated with newer
> gcc releases.

ACK.

> Add an option march-map, such that we can just specify march-map=sm_50, and
> let the compiler map this to the appropriate march.

So, I understand that the idea is, that users should use
'-march-map=[...]' instead of '-misa=[...]' or alias '-march=[...]',
because the former ('-march-map=[...]') will always Do The Right Thing:
pick the best available SM level for GCC/nvptx code generation (like
you've said: may change with GCC releases, and users then don't have to
change their receipes), and it'll never error out, in contrast to
'-misa=[...]' or alias '-march=[...]' do when the requested architecture
isn't directly supported:

    xgcc: error: unrecognized argument in option ‘-misa=sm_50’
    xgcc: note: valid arguments to ‘-misa=’ are: sm_30 sm_35 sm_53 sm_70 sm_75 sm_80; did you mean ‘sm_30’?

My question, though, is: why did you add a new option name '-march-map'
instead of directly using '-march' for that (instead of "[nvptx] Add
march alias for misa", added on the same day)?  Would you accept a patch
that: (a) un-aliases '-march' -> '-misa', and (b) renames '-march-map' to
'-march', and (c) sets up a '-march-map' -> '-march' alias for backwards
compatibility (if so desired)?  Regarding (a), (b), in my opinion,
there's no backwards compatibility issue there: the "new '-march'" will
simply accept more options than the "old '-march'" did.  Regarding (c),
I'd even drop the user-visible '-march-map' option completely; I suppose
nobody's really used that by now?


Grüße
 Thomas


> The option is implemented as a list of aliases, such that we have a somewhat
> lengthy (17 lines in total):
> ...
> $ gcc --help=target
>   ...
>   -march-map=sm_30            Same as -misa=sm_30.
>   -march-map=sm_32            Same as -misa=sm_30.
>   ...
>   -march-map=sm_87            Same as -misa=sm_80.
>   -march-map=sm_90            Same as -misa=sm_80.
> ...
>
> This implementation was chosen in the hope that it'll be easier if
> we end up with some misa multilib.
>
> It would be nice to have the mapping list generated from an updated
> nvptx-sm.def, but for now it's spelled out in nvptx.opt.
>
> Tested on nvptx.
>
> Committed to trunk.
>
> Thanks,
> - Tom
>
> [nvptx] Add march-map
>
> gcc/ChangeLog:
>
> 2022-03-29  Tom de Vries  <tdevries@suse.de>
>
>       PR target/104714
>       * config/nvptx/nvptx.opt (march-map=*): Add aliases.
>
> gcc/testsuite/ChangeLog:
>
> 2022-03-29  Tom de Vries  <tdevries@suse.de>
>
>       PR target/104714
>       * gcc.target/nvptx/march-map.c: New test.
>
> ---
>  gcc/config/nvptx/nvptx.opt                 | 51 ++++++++++++++++++++++++++++++
>  gcc/testsuite/gcc.target/nvptx/march-map.c |  5 +++
>  2 files changed, 56 insertions(+)
>
> diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
> index b5d0170e9e9..58eddeeabf4 100644
> --- a/gcc/config/nvptx/nvptx.opt
> +++ b/gcc/config/nvptx/nvptx.opt
> @@ -60,6 +60,57 @@ march=
>  Target RejectNegative Joined Alias(misa=)
>  Alias:
>
> +march-map=sm_30
> +Target RejectNegative Alias(misa=,sm_30)
> +
> +march-map=sm_32
> +Target RejectNegative Alias(misa=,sm_30)
> +
> +march-map=sm_35
> +Target RejectNegative Alias(misa=,sm_35)
> +
> +march-map=sm_37
> +Target RejectNegative Alias(misa=,sm_35)
> +
> +march-map=sm_50
> +Target RejectNegative Alias(misa=,sm_35)
> +
> +march-map=sm_52
> +Target RejectNegative Alias(misa=,sm_35)
> +
> +march-map=sm_53
> +Target RejectNegative Alias(misa=,sm_53)
> +
> +march-map=sm_60
> +Target RejectNegative Alias(misa=,sm_53)
> +
> +march-map=sm_61
> +Target RejectNegative Alias(misa=,sm_53)
> +
> +march-map=sm_62
> +Target RejectNegative Alias(misa=,sm_53)
> +
> +march-map=sm_70
> +Target RejectNegative Alias(misa=,sm_70)
> +
> +march-map=sm_72
> +Target RejectNegative Alias(misa=,sm_70)
> +
> +march-map=sm_75
> +Target RejectNegative Alias(misa=,sm_75)
> +
> +march-map=sm_80
> +Target RejectNegative Alias(misa=,sm_80)
> +
> +march-map=sm_86
> +Target RejectNegative Alias(misa=,sm_80)
> +
> +march-map=sm_87
> +Target RejectNegative Alias(misa=,sm_80)
> +
> +march-map=sm_90
> +Target RejectNegative Alias(misa=,sm_80)
> +
>  Enum
>  Name(ptx_version) Type(int)
>  Known PTX ISA versions (for use with the -mptx= option):
> diff --git a/gcc/testsuite/gcc.target/nvptx/march-map.c b/gcc/testsuite/gcc.target/nvptx/march-map.c
> new file mode 100644
> index 00000000000..00838e55fc0
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/nvptx/march-map.c
> @@ -0,0 +1,5 @@
> +/* { dg-options "-march-map=sm_50" } */
> +
> +#include "main.c"
> +
> +/* { dg-final { scan-assembler-times "\\.target\tsm_35" 1 } } */
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

      reply	other threads:[~2022-06-09 10:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-29 12:03 Tom de Vries
2022-06-09 10:39 ` Thomas Schwinge [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pmjixgqv.fsf@euler.schwinge.homeip.net \
    --to=thomas@codesourcery.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=tdevries@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).