Subject: Re: [bug#52283] [PATCH 02/10] transformations: Add '--tune'.

From: Ludovic Courtès <[email-masked]>
Date: Tue, 07 Dec 2021 15:52:44 +0100

zimoun <[email-masked]> skribis:

> On Tue, 7 Dec 2021 at 09:06, Ludovic Courtès <[email-masked]> wrote:
>
>> The reason the test suite is skipped is because we cannot know for sure
>> whether the machine that hosts the daemon is able to run code for this
>> specific micro-architecture.
>
> Naive question: is it possible to effectively run it via emulation?

Not to my knowledge.

>> The test suite runs in the “baseline” package build anyway, so assuming
>> the compiler works fine, skipping the test suite on tuned builds is
>> okay.
>
> I miss if the test suite is effectively run somewhere?

Yes, for the default/generic/baseline package, when not using ‘--tune’.

> And "baseline" package build means the package built for generic
> architecture, right?

Correct.

> My questions are coming from Julia packages in mind, where the test
> suite is the only way to know all is fine.  And many times, add System
> Image for Julia had been discussed and basically this System Image is
> precompilation (generic one or specialized for micro-architecture).
> Therefore, maybe this new 'tune' transformation would fit the bill.
> :-)
>
> https://docs.julialang.org/en/v1/devdocs/sysimg/

According to this page, ‘--tune’ won’t be necessary here because Julia
supports function multi-versioning for its “system image”:

  The system image can be compiled simultaneously for multiple CPU
  microarchitectures under the same instruction set architecture (ISA).
  Multiple versions of the same function may be created with minimum
  dispatch point inserted into shared functions in order to take
  advantage of different ISA extensions or other microarchitecture
  features.  The version that offers the best performance will be
  selected automatically at runtime based on available CPU features.

I guess we should follow the instructions at
<https://docs.julialang.org/en/v1/devdocs/sysimg/#Specifying-multiple-system-image-targets>
to build a system image that contains multiple versions of each
function.

Thanks,
Ludo’.