Message ID | 20220331074045.GA29630@delia.home |
---|---|
State | New |
Headers | show |
Series | [committed,nvptx] Fix ASM_SPEC workaround for sm_30 | expand |
Hi! On 2022-03-31T09:40:47+0200, Tom de Vries via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > Newer versions of CUDA no longer support sm_30, and nvptx-tools as > currently doesn't handle that gracefully when verifying > ( https://github.com/MentorEmbedded/nvptx-tools/issues/30 ). There's now <https://github.com/MentorEmbedded/nvptx-tools/pull/33> 'as: Deal with CUDA 11.0, "Support for Kepler 'sm_30' and 'sm_32' architecture based products is dropped"' available for comment/testing. > There's a --no-verify work-around in place in ASM_SPEC, but that one doesn't > work when using -Wa,--verify on the command line. With that resolved in nvptx-tools, we may then revert these GCC-level workarounds, GCC commit bf4832d6fa817f66009f100a9cd68953062add7d "[nvptx] Fix ASM_SPEC workaround for sm_30", and GCC commit 12fa7641ceed9c9139e2ea7b62c11f3dc5b6f6f4 "[nvptx] Use --no-verify for sm_30". OK to push, once nvptx-tools ready? > Use a more robust workaround: verify using sm_35 when misa=sm_30 is specified > (either implicitly or explicitly). Thanks for that suggestion! Grüße Thomas ----------------- 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
On 4/7/22 16:17, Thomas Schwinge wrote: > Hi! > > On 2022-03-31T09:40:47+0200, Tom de Vries via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: >> Newer versions of CUDA no longer support sm_30, and nvptx-tools as >> currently doesn't handle that gracefully when verifying >> ( https://github.com/MentorEmbedded/nvptx-tools/issues/30 ). > > There's now <https://github.com/MentorEmbedded/nvptx-tools/pull/33> > 'as: Deal with CUDA 11.0, "Support for Kepler 'sm_30' and 'sm_32' > architecture based products is dropped"' available for comment/testing. > >> There's a --no-verify work-around in place in ASM_SPEC, but that one doesn't >> work when using -Wa,--verify on the command line. > > With that resolved in nvptx-tools, we may then revert these GCC-level > workarounds, GCC commit bf4832d6fa817f66009f100a9cd68953062add7d > "[nvptx] Fix ASM_SPEC workaround for sm_30", and > GCC commit 12fa7641ceed9c9139e2ea7b62c11f3dc5b6f6f4 > "[nvptx] Use --no-verify for sm_30". OK to push, once nvptx-tools ready? > >> Use a more robust workaround: verify using sm_35 when misa=sm_30 is specified >> (either implicitly or explicitly). > > Thanks for that suggestion! > Hi, I've tested the nvptx-tools patch in combination with a patch that remote ASM_SPEC, and that went fine. [ Well apart from a new libgomp FAIL: ... FAIL: libgomp.oacc-fortran/private-variables.f90 -DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none -O1 at line 142 (test for bogus messages, line 131) ... but I assume that's unrelated ] So, patch that removes ASM_SPEC pre-approved. Thanks, - Tom
diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h index 75ac7a666b1..3b06f33032f 100644 --- a/gcc/config/nvptx/nvptx.h +++ b/gcc/config/nvptx/nvptx.h @@ -29,10 +29,24 @@ #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}%{misa=sm_30:--no-verify}" +/* Newer versions of CUDA no longer support sm_30, and nvptx-tools as + currently doesn't handle that gracefully when verifying + ( https://github.com/MentorEmbedded/nvptx-tools/issues/30 ). Work around + this by verifying with sm_35 when having misa=sm_30 (either implicitly + or explicitly). */ +#define ASM_SPEC \ + "%{" \ + /* Explict misa=sm_30. */ \ + "misa=sm_30:-m sm_35" \ + /* Separator. */ \ + "; " \ + /* Catch-all. */ \ + "misa=*:-m %*" \ + /* Separator. */ \ + "; " \ + /* Implicit misa=sm_30. */ \ + ":-m sm_35" \ + "}" #define TARGET_CPU_CPP_BUILTINS() nvptx_cpu_cpp_builtins ()