Federico Beffa <be...@ieee.org> skribis: > On Sun, Oct 26, 2014 at 12:25 AM, Ludovic Courtès <l...@gnu.org> wrote: >> I think ATLAS should do like GMP, libc, etc.: build all the possible >> variants, and then use IFUNC or a similar mechanism to select the right >> variant at load time. > > I would like to highlight two points: > > 1. there are many variants (see below).
I think this is not too different from libc and GMP. > 2. even for the same configure time configuration, the build phase > does not necessarily produce identical libraries all the time. The > build phase tries many variants of algorithms, times them and picks > the best performing one. The result may be different depending on the > overall performance of the system such as on memory access time, and > several other factors. Oh, OK; that’s definitely different. >> That doesn’t answer your initial question, though. For now, I think >> it’s OK to let it do its configure-time tuning and add a statement in >> the description about substitutes, unless other packages depend on it >> (in the former case, people would be installing it explicitly, so they >> would most likely know what they’re doing.) > > I'm preparing numpy/scipy and they depend on ATLAS. But initially it > will be independent. In that case, what about making a generic version (one that can be substituted, at the expense of being less optimized), which would be the one used by NumPy, and then the optimized version? In the not-too-distant future, we’ll be able to mark the package as non-substitutable, which will be best. There’s already a #:local-build? flag around, but its semantics are a bit fuzzy at the moment because it determines both whether to offload and whether to substitute. I would like that to be improved, by having two different options, before we start relying on it in packages. Thanks, Ludo’.