On 27/11/2025 16:42, Tobias Burnus wrote:
The current default configuration has the problem:
   several GPUs aren't supported by default
and, additionally, that there are too many multilibs

This patch addresses the first one by adding the generic
architectures - with the plan to removed the specific ones
in GCC 17 (except for gfx908/gfx90a which do not have
a generic arch).

Hence:
* Minimal LLVM version for build will move from LLVM 15 to LLVM 19
* 4 new multilibs will be build (4 generic), making it 13.
* This will add support for several new devices, albeit
   for generic support ROCm 6.4.0 is required (by then 1 year old)

For GCC 17, my suggestion is:
* Use only 4 generic + 2 specific = 6 are supposed to be used
* This will then require updates to Makefiles.
[A variant would be to do this already for GCC 16.]

NOTE: When a specific gfx... is not supported but a generic is,
there is a message like:
   gcn mkoffload: fatal error: GCC was built without library
   support for ‘-march=gfx1150’; consider compiling for the
   associated generic architecture ‘-march=gfx11-generic’

Comments? Support for this patch? Arguments against?
OK for mainline?

* * *

IMHO, LLVM 19 is old enough to require it for a newly released
GCC compiler, esp. given that older LLVM down to LLVM 13 work with
some manual work (namely: --with-multilib-list=).
Likewise for ROCm 6.4, esp. by the time GCC 17 has been released.

Thanks,

Tobias


I'm in two minds whether to just go ahead and remove the older architectures right now? I wish I knew what devices people are using in the wild (or even *if* anyone is using it).

On the one hand, removing stuff without warning feels bad, but on the other hand, adding extra multilibs will increase build time (especially for you and me!) But then, we're not actually removing anything if the generic support works for those devices.

My main concern here has been the LLVM dependency, but as you say LLVM 19 isn't that bad, at this point. The easiest realistic source for users is the LLVM included with ROCm (maybe we should write that in our instructions?), and ROCm 6.4 reported "19.0.0git", which I assume meets our requirements (actually, my guess is ROCm LLVM supports more than upstream with the same number). No doubt newer ROCm are also good.

Also, if we're changing the default multilib (which we will be, because explicit gfx900 is to be discontinued), then we need to think about what the new default should be. Selfish me would like gfx90a, but maybe one of the generics makes more sense? Once decided, we probably shouldn't keep switching it, which is why we've always had it as the oldest supported device, up to now.

Maybe we should just switch to the final plan now?

Andrew

Reply via email to