Hi! On 2025-05-12T17:12:36+0200, Tobias Burnus <tbur...@baylibre.com> wrote: > PING. > > There is actually a minor update as meanwhile CUDA 12.8 was > released that added the 'f' suffix and sm_103 and sm_121. > Still, the pattern remains the same; hence, a normal PING.
(What would a non-normal ping be?) > On April 25, 2025, Tobias Burnus wrote: >> The idea of -march-map= is to simply and future proof select the >> best -march for a certain arch, without requiring that the compiler >> has support for it (like having a special multilib for it) - while >> -march= sets the actually used '.target' (and the compiler might >> actually generate specialized code for it). >> >> The patch updates the sm_X for the CUDA 12.8 additions, namely for >> three Blackwell GPU architectures. >> >> Cf. >> https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#release-notes >> or also >> https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html >> >> OK for mainline? >> >> Tobias >> >> PS: CUDA 12.7 seems to be an internal release, which shows up as >> PTX version but was not released to the public. >> PTX 8.6/CUDA 12.7 added sm_100/sm_101 - and PTX 8.7/CUDA 12.8 added >> sm120. >> >> PPS: sm_80 (Ampere) was added in PTX ISA 7.0 (CUDA 11.0), >> sm_89 (Ada) in PTX ISA 7.8 (CUDA). >> As sm_90 (Hopper) + sm_100/101/120 (Blackwell) currently/now map to >> sm_89, GCC generates PTX ISA .version 7.8 for them. >> Otherwise, sm_80 and sm_89 produce (for now) identical code. > nvptx/nvptx.opt: Update -march-map= for newer sm_xxx Pushed to trunk branch commit 60ba2b61af23e6d561c5cbab8df57ea093ade3b3 "nvptx/nvptx.opt: Update -march-map= for newer sm_xxx", as posted. Grüße Thomas > Usage of the -march-map=: "Select the closest available '-march=' value > that is not more capable." > > As PTX ISA 8.6/8.7 (= unreleased CUDA 12.7 + CUDA 12.8) added the > Nvidia Blackwell GPUs SM_100, SM_101, and SM_120, it makes sense to > add them as well. Note that all three come as sm_XXX and sm_XXXa. > > PTX ISA 8.8 (CUDA 12.9) added SM_103 and SM_121 and the new 'f' suffix > for all SM_1xx. > > Internally, GCC currently generates the same code for >= sm_80 (Ampere); > however, as GCC's -march= also supports sm_89 (Ada), the here added > sm_1xxs (Blackwell) will map to sm_89. > > [Naming note: while ptx code generated for sm_X can also run with sm_Y > if Y > X, code generated for sm_XXXa can (generally) only run on > the specific hardware; and sm_XXXf implies compatibility with only > subsequent targets in the same family.] > > gcc/ChangeLog: > > * config/nvptx/nvptx.opt (march-map=): Add sm_100{,f,a}, > sm_101{,f,a}, sm_103{,a,f}, sm_120{,a,f} and sm_121{,f,a}. > > gcc/config/nvptx/nvptx.opt | 45 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt > index d326ca4ad26..9796839f8df 100644 > --- a/gcc/config/nvptx/nvptx.opt > +++ b/gcc/config/nvptx/nvptx.opt > @@ -120,6 +120,51 @@ Target RejectNegative Alias(misa=,sm_89) > march-map=sm_90a > Target RejectNegative Alias(misa=,sm_89) > > +march-map=sm_100 > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_100f > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_100a > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_101 > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_101f > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_101a > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_103 > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_103f > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_103a > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_120 > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_120f > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_120a > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_121 > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_121f > +Target RejectNegative Alias(misa=,sm_89) > + > +march-map=sm_121a > +Target RejectNegative Alias(misa=,sm_89) > + > Enum > Name(ptx_version) Type(enum ptx_version) > Known PTX ISA versions (for use with the -mptx= option):