Hi Ludovic, Ludovic Courtès <ludovic.cour...@inria.fr> writes:
> Hi, > > zimoun <zimon.touto...@gmail.com> skribis: > >> On Wed, 24 Nov 2021 at 13:10, Ricardo Wurmus <rek...@elephly.net> wrote: >> >>> The build phases that patch out these features would have to check >>> for that build system option, much like they check the TESTS? >>> option before attempting to run tests. >> >> Then it could be a transformation. The idea sounds good to me. > > I’ve been working on it last week with my HPC hat on. > > To be clear, I think in may cases, passing ‘-march’ like you suggest is > the wrong approach; instead software should use (and usually does use) > function multi-versioning: > > https://hpc.guix.info/blog/2018/01/pre-built-binaries-vs-performance/ > > I found one case though where this is not possible: C++ header-only > libraries such as Eigen contain hand-optimized vectorized routines, > selected at build time, but we end up compiling Eigen users as the > x86_64/AArch64 baseline, which is a waste. (If you do know of other > problematic cases, I’m interested in taking a look!) I think that 'atlas' is such an example of a package that uses multi-versioning but fails to build reproducibly depending on the exact CPU it was built. I've reported that here [0]. [0] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51536 Thank you, Maxim