Hi Tom!

On 2020-10-09T13:56:09+0200, Tom de Vries <tdevr...@suse.de> wrote:
> The nvptx-as assembler verifies the ptx code using ptxas, if there's any
> in the PATH.
>

After quite some digression to first add a testsuite to nvptx-tools (see
<https://twitter.com/schwinge_thomas/status/1348626368578408449> or just
<https://github.com/MentorEmbedded/nvptx-tools/tree/master/test/>), which
I found advisable generally, and then given the kinds of changes we're
now doing :-) -- I've now prepared nvptx-as code changes as discussed in
<https://github.com/MentorEmbedded/nvptx-tools/issues/24> "nvptx-as
should not assume a default sm version".  (Currently testing.)

> The default in the nvptx port for -misa=sm_xx is sm_30, but the ptxas of the
> latest cuda release (11.1) no longer supports sm_30.
>
> Consequently we cannot build gcc against that release (although we should
> still be able to build without any cuda release).
>
> Fix this by setting -misa=sm_35 by default.
>
> Tested check-gcc on nvptx.
>
> Tested libgomp on x86_64-linux with nvpx accelerator.
>
> Both build against cuda 9.1.
>
> Committed to trunk.

ACK.

What is your opinion about backporting that (plus Tobias' documentation
update, plus corresponding web 'changes.html' updates?) to release
branches, so that nvptx offloading users may use GCC 10/9/8 with CUDA
11.0+?

I don't think losing sm_30 support is a major concern: support for sm_35
has been introduced with PTX ISA 3.1, CUDA 5.0, driver r302.


Further:

> [nvptx] Set -misa=sm_35 by default

>       PR target/97348
>       * config/nvptx/nvptx.h (ASM_SPEC): Also pass -m to nvptx-as if
>       default is used.
>       * config/nvptx/nvptx.opt (misa): Init with PTX_ISA_SM35.

> --- a/gcc/config/nvptx/nvptx.h
> +++ b/gcc/config/nvptx/nvptx.h

> -#define ASM_SPEC "%{misa=*:-m %*}"
> +/* Default needs to be in sync with default for misa in nvptx.opt.
> +   We add a default here to work around a hard-coded sm_30 default in
> +   nvptx-as.  */
> +#define ASM_SPEC "%{misa=*:-m %*; :-m sm_35}"

> --- a/gcc/config/nvptx/nvptx.opt
> +++ b/gcc/config/nvptx/nvptx.opt

> +; Default needs to be in sync with default in ASM_SPEC in nvptx.h.
>  misa=
> -Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) 
> Init(PTX_ISA_SM30)
> +Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) 
> Init(PTX_ISA_SM35)
>  Specify the version of the ptx ISA to use.

As I'd suggested in
<https://github.com/MentorEmbedded/nvptx-tools/issues/24> "nvptx-as
should not assume a default sm version", I'd then push the attached
"[nvptx] Let nvptx-as figure out the target architecture [PR97348]" to
GCC master branch, OK?  (Currently testing.)

That one I wouldn't backport to GCC release branches, so that we don't
require users to update nvptx-tools for these builds.


Grüße
 Thomas


-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander 
Walter
>From eac0d3458f38cd5bb4c930b2887a547b64b046ef Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tho...@codesourcery.com>
Date: Wed, 13 Jan 2021 09:04:47 +0100
Subject: [PATCH] [nvptx] Let nvptx-as figure out the target architecture
 [PR97348]

... now that it has been enhanced to do so.

This is a follow-up to PR97348 commit 383400a6078d75bbfa1216c9af2c37f7e88740c9
"[nvptx] Set -misa=sm_35 by default".

	gcc/
	PR target/97348
	* config/nvptx/nvptx.h (ASM_SPEC): Don't set.
	* config/nvptx/nvptx.opt (misa): Adjust comment.
---
 gcc/config/nvptx/nvptx.h   | 5 -----
 gcc/config/nvptx/nvptx.opt | 1 -
 2 files changed, 6 deletions(-)

diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h
index 2451703e77f..1a61e6207f6 100644
--- a/gcc/config/nvptx/nvptx.h
+++ b/gcc/config/nvptx/nvptx.h
@@ -29,11 +29,6 @@
 
 #define STARTFILE_SPEC "%{mmainkernel:crt0.o}"
 
-/* Default needs to be in sync with default for misa in nvptx.opt.
-   We add a default here to work around a hard-coded sm_30 default in
-   nvptx-as.  */
-#define ASM_SPEC "%{misa=*:-m %*; :-m sm_35}"
-
 #define TARGET_CPU_CPP_BUILTINS()		\
   do						\
     {						\
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 51363e4e276..cf7f9022663 100644
--- a/gcc/config/nvptx/nvptx.opt
+++ b/gcc/config/nvptx/nvptx.opt
@@ -61,7 +61,6 @@ Enum(ptx_isa) String(sm_30) Value(PTX_ISA_SM30)
 EnumValue
 Enum(ptx_isa) String(sm_35) Value(PTX_ISA_SM35)
 
-; Default needs to be in sync with default in ASM_SPEC in nvptx.h.
 misa=
 Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) Init(PTX_ISA_SM35)
 Specify the version of the ptx ISA to use.
-- 
2.17.1

Reply via email to