On Mon, Jul 22, 2019 at 11:52 AM Ben Cotton <bcot...@redhat.com> wrote:

> https://fedoraproject.org/wiki/Changes/x86-64_micro-architecture_update
>
> == Summary ==
>
> After preliminary discussions with CPU vendors, we propose AVX2 as the
> new baseline.  AVX2 support was introduced into CPUs from 2013 to
> 2015. See [
> https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX2
> CPUs with AVX2].
>
> Along with AVX2, it makes sense to enable certain other CPU features
> which are not strictly implied by AVX2, such as CMPXCHG16B, FMA, and
> earlier vector extensions such as SSE 4.2.  Details are still being
> worked out.
>
>
In the interest of a productive discussion, could we maybe focus on what
the benefits are, both of changing the baseline in general and of enabling
any particular features? As I see it, there are a few classes of relevant
features:

Features like SSE2: enabling SSE2 as the basic floating point mechanism
changes the ABI drastically.  But x86_64 already requires SSE2, so this is
irrelevant.

Things like SSSE3, SSE3, SSE4, AVX1, AVX2, FMA, etc: for the most part,
these accelerate existing algorithms.  I'm sure that someone somewhere has
written an algorithm that requires FMA for enhanced precision, but
otherwise pretty much any code that benefits from any of these features
would work just fine, if slower, without the features.

Things like CMPXCHG16B that change the set of things that can be done on
the CPU.  I could easily imagine programs that use algorithms that
fundamentally depend on CMPXCHG16B.  There is no drop-in replacement.

Things like FSGSBASE that change the way that software interacts with the
kernel.  Don't even get me started on FSGSBASE on Linux.

So I could see a concrete benefit to Fedora from requiring CMPXCHG16B.  If
FSGSBASE were actually supported and widely used, I could see that, too,
but FSGSBASE is not a credible requirement for Fedora since IIRC it's not
supported on Sandy Bridge.  Even Intel seems to consider Sandy Bridge to be
an important CPU to support.

As for the vector features, they're always a moving target.  Even if Fedora
did require AVX2, performance would be left on the table by not using
AVX-512 where avaiable.  (And AVX2 isn't such a great thing anyway given
certain microarchitectures' latency and power issues.)

I think that, for vector extensions, Fedora shouldn't require anything
beyond SSE2 for basic functionality.  Instead, Fedora should figure out
where there are material benefits to using them and find ways to make it
easier for packagers to make them available.  Ideally this would all be
figured out at runtime, but install-time choices could make sense, too.
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org

Reply via email to