On Sun, May 24, 2020 at 10:14:49PM +0200, Stefan Weil wrote:
> Adrian, I am afraid that there is a misunderstanding.
>
> The code part which is compiled with -march=native is never executed by
> default.
I get that point.
> There is a command line option which allows users to select the code
> which is used for certain time critical calculations (dot product). A
> wrong choice is not a security problem
You misunderstand the part about the security update,
security updates are just the most common reason why
a package gets updated (and therefore rebuilt) in a
stable distribution.
Example:
Debian 11 will be released in summer 2021.
In autumn 2021 a user sets up a new system and selects "native"
for an important production setup with an Intel CPU.
In spring 2022 a (security or other) update for Tesseract happens
in Debian 11, built on a buildd with the latest AMD CPU.
The working production setup suddenly always crashes.
> That's quite common for other packages including the standard C
> library and scientific libraries, too. They all contain optimized
> functions which require certain hardware and which crash otherwise.
With proper runtime autodetection of the hardware, if you manage to get
a crash it is a bug in these packages. It is quite rare that packages
offer manual selection in addition to autodetection.
> but simply will crash the
> application, no matter whether the user selected "native", "avx" or
> "neon".
Even when built on the same computer I would have doubts whether
automatic vectorization[1] of the trivial C code really beats the
hand-written AVX2 code, but when the code is not even built for
the computer in question what's the point?
A "native" option meaning "some random buildd somewhere" is just
confusing, it doesn't make sense for distributions.
> Regards
>
> Stefan
cu
Adrian
[1] if it happens at all, the Debian package build currently overwrites
the -O3 with a subsequent -O2