Message ID | cover.1687247150.git.efraim@flashner.co.il |
---|---|
Headers | show |
Series | More package tuning | expand |
Hello Efraim, Efraim Flashner <efraim@flashner.co.il> skribis: > with gcc-11, gcc gained support for using -march=x86_64-v{1,2,3,4}, > which I'm calling 'generic options,' as opposed to the more targeted > tuning we have with specific architectures. I don’t think these x86_64 psABI “architecture levels” should be treated specially: • From the point of view of ‘--tune’, they’re just another value that may be passed to ‘-march’. • My understanding is that those levels don’t match reality: as discussed in the original ‘--tune’ patch¹, CPUs actually produced don’t follow a pattern of strictly including features of one set. They’re really just a simplification to get more memorizable names, but it’s hard to tell whether a given CPU really covers the set of features of a given level. Overall, my take on this would be to add supported levels to ‘%gcc-11-x86_64-micro-architectures’ & co., without going further. WDYT? ¹ https://issues.guix.gnu.org/52283#0-lineno48 [...] > go cpu tuning targets: I mostly used the chart¹ on the go website, and I > also checked the source code for go-1.18. I put in arm{5,6,7} as arm and > not armhf since armhf only works with armv7 and with go programs, since > they're statically linked, they can just be copied to other machines. Now if Go uses those names, (guix cpu) can provide helpers. Thanks, Ludo’.
On Sun, Jun 25, 2023 at 10:47:42PM +0200, Ludovic Courtès wrote: > Hello Efraim, > > Efraim Flashner <efraim@flashner.co.il> skribis: > > > with gcc-11, gcc gained support for using -march=x86_64-v{1,2,3,4}, > > which I'm calling 'generic options,' as opposed to the more targeted > > tuning we have with specific architectures. > > I don’t think these x86_64 psABI “architecture levels” should be treated > specially: > > • From the point of view of ‘--tune’, they’re just another value that > may be passed to ‘-march’. > > • My understanding is that those levels don’t match reality: as > discussed in the original ‘--tune’ patch¹, CPUs actually produced > don’t follow a pattern of strictly including features of one set. > They’re really just a simplification to get more memorizable names, > but it’s hard to tell whether a given CPU really covers the set of > features of a given level. They're also useful for glibc-hwcaps, so that we could build each package multiple times and install libraries built for the psABI levels into $prefix/lib/glibc-hwcaps/x86-64-v[234]/, but I agree that, for our uses so far, they're not really useful. > Overall, my take on this would be to add supported levels to > ‘%gcc-11-x86_64-micro-architectures’ & co., without going further. > > WDYT? I could see keeping the code from cpu->generic-architecture (renamed cpu->psABI) either as a non-exported function or simply moved into the fallback for x86_64. > ¹ https://issues.guix.gnu.org/52283#0-lineno48 > > [...] > > > go cpu tuning targets: I mostly used the chart¹ on the go website, and I > > also checked the source code for go-1.18. I put in arm{5,6,7} as arm and > > not armhf since armhf only works with armv7 and with go programs, since > > they're statically linked, they can just be copied to other machines. > > Now if Go uses those names, (guix cpu) can provide helpers. Go also uses power8 and power9 as PPC64(le) options, so that's also a possible use-case I was trying to also prepare for. That was my plan for the gcc-architecture->generic-architecture function, to allow for --tune to work without needing to pass different values to different packages.