Subject: [bug#67742] [PATCH] gnu: ci: Build tuned packages for common baselines.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 18 Dec 2023 23:26:25 +0100

Hello,

Efraim Flashner <[email-masked]> skribis:

> On Mon, Dec 11, 2023 at 10:37:26PM +0100, Ludovic Courtès wrote:

[...]

>> >  (define %x86-64-micro-architectures
>> >    ;; Micro-architectures for which we build tuned variants.
>> > -  '("westmere" "ivybridge" "haswell" "skylake" "skylake-avx512"))
>> > +  '("x86-64-v2" "x86-64-v3" "x86-64-v4"))
>> 
>> Right now, on my laptop, I get:
>> 
>> --8<---------------cut here---------------start------------->8---
>> $ guix build gsl -n --tune
>> guix build: tuning [email-masked] for CPU skylake

[...]

> I'm not sure how we'd determine what would count as common.  I think if
> we added a '--tune=close-enough' and used cpu->micro-architecture-level
> or gcc-architecture->micro-architecture-level from (guix cpu) to choose
> x86_64-v[234] that would count more as common than the list above :P.

Sure, but that’s not the case yet:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build gsl --tune -n 
guix build: tuning [email-masked] for CPU skylake
1.5 MB would be downloaded:
  /gnu/store/kx060kry6ka7khzganfcqk98agqp226i-gsl-2.7.1
--8<---------------cut here---------------end--------------->8---

So my suggestion was something like this:

  (define %x86-64-micro-architectures
    ;; Micro-architectures for which we build tuned variants.
    '("ivybridge" "haswell" "skylake" "skylake-avx512"
      "x86-64-v2" "x86-64-v3" "x86-64-v4"))

… so we don’t lose substitutes for “common” architectures.

Alternatively, we can go towards using x86-64-v* only, but in that case
we need to adjust the way ‘--tune’ (without arguments) guesses the
target architecture.

WDYT?

Ludo’.