Re: Fedora 32 System-Wide Change proposal: x86-64 micro-architecture update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 23, 2019 at 4:31 AM Igor Gnatenko
<ignatenkobrain@xxxxxxxxxxxxxxxxx> wrote:
>
> Hi Florian,
>
> On Mon, Jul 22, 2019 at 9:28 PM Ben Cotton <bcotton@xxxxxxxxxx> wrote:
> >
> > https://fedoraproject.org/wiki/Changes/x86-64_micro-architecture_update
> >
> > == Summary ==
> > Fedora currently uses the original K8 micro-architecture (without
> > 3DNow! and other AMD-specific parts) as the baseline for its
> > <code>x86_64</code> architecture.  This baseline dates back to 2003
> > and has not been updated since.  As a result, performance of Fedora is
> > not as good as it could be on current CPUs.
> >
> > This change to update the micro-architecture level for the
> > architecture to something more recent.
> >
> > == Owner ==
> > * Name: [[User:fweimer| Florian Weimer]]
> > * Email: [mailto:fweimer@xxxxxxxxxx fweimer@xxxxxxxxxx]
> >
> > == Detailed Description ==
> >
> > 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.
>
> It seems that Intel is still manufacturing CPUs without AVX support
> (not even talking about AVX2) in 2019. So this is clearly no-go for
> me.
>
> But I do want to see some refreshments in this area! There are
> multiple options how to proceed I think:
>
> 1. Lower requirement to something like SSE4 and select other CPU
> features which are available in most of CPUs for last decade.
> 2. Build every package on x86_64 twice (one for compatible set and one
> for this new-features set), possibly by introducting sub-architecture
> in koji or using koji-shadow (that's just implementation detail.
> Produce an official spin which is built from these packages.

Thinking about this even more, it should not be very hard thing to do:

* Define new architecture in RPM/libsolv (let's call it "haswell" or
"x86_64modern")
* Define set of capabilities it should have, write appropriate check
in RPM/libdnf
* Add new architecture in Fedora Koji
* Once bootstrapped, create composes
* At some point in future, merge this arch back to x86_64 and move forward

What do you think?

> 3. Invent some mechanism for selecting appropriate feature set in
> runtime (somebody mentioned fat binaries in this thread).
>
> These options can be combined.
>
> >
> > A test rebuild of a distribution largely based on Fedora 28 showed
> > that there is only a small number of build failures due to the
> > baseline switch. Very few packages are confused about the availability
> > of the CMPXCHG16B instruction, leading to linking failures related to
> > <code>-latomic</code>, and there are some hard-coded floating point
> > results that could change due to vectorization.  (The latter is within
> > bounds of the usual cross-architecture variation for such tests.)
> >
> > == Benefit to Fedora ==
> >
> > Fedora will use current CPUs more efficiently, increasing performance
> > and reducing power consumption.
> >
> > Moreover, when Fedora is advertised as a distribution by a compute
> > service provider, users can be certain that their AVX2-optimized
> > software will run in this environment.
> >
> > == Scope ==
> > * Proposal owners: Update the <code>gcc</code> and
> > <code>redhat-rpm-config</code> package to implement the new compiler
> > flags.  It is expected that the new baseline will be implemented in a
> > new GCC <code>-march=</code> option for convenience.
> >
> > * Other developers: Other developers may have to adjust test suites
> > which expect exact floating point results, and correct linking with
> > <code>libatomic</code>. They will also have to upgrade their x86-64
> > machines to something that can execute AVX2 instructions.
> >
> > * Release engineering: [https://pagure.io/releng/issue/8513 #8513]
> > ** All Fedora builders need to be AVX2-capable.
> > ** Infrastructure ticket:
> > [https://pagure.io/fedora-infrastructure/issue/7968 #7968]
> > * Policies and guidelines: No guidelines need to be changed.
> > * Trademark approval: N/A (not needed for this Change)
> >
> > == Upgrade/compatibility impact ==
> > Fedora installations on systems with CPUs which are not able to
> > execute AVX2 instructions will not be able to upgrade.
> >
> > == How To Test ==
> > General system testing will provide test coverage for this change.
> >
> > == User Experience ==
> > User should observe improved performance and, likely, battery life.
> > Developers will benefit from the knowledge that code with AVX2
> > optimizations will run wherever Fedora runs.
> >
> > == Dependencies ==
> > There are no direct dependencies on this change at this time.
> >
> > == Contingency Plan ==
> > It is possible to not implement this change, or implement a smaller
> > subset of it (adopting the CMPXCHG16B instruction only, for example).
> >
> > * Contingency mechanism: Mass rebuild with different/previous compiler glags.
> > * Contingency deadline: Final mass rebuild.
> > * Blocks release? No.
> > * Blocks product? No.
> >
> > == Documentation ==
> > The new micro-architecture baseline and the resulting requirements
> > need to be documented.
> >
> > == Release Notes ==
> > Release notes must mention how users can determine whether their
> > system supports AVX2 prior to upgrading, for example by running
> > <code>grep avx2 /proc/cpuinfo</code>.
> >
> > --
> > Ben Cotton
> > He / Him / His
> > Fedora Program Manager
> > Red Hat
> > TZ=America/Indiana/Indianapolis
> > _______________________________________________
> > devel-announce mailing list -- devel-announce@xxxxxxxxxxxxxxxxxxxxxxx
> > To unsubscribe send an email to devel-announce-leave@xxxxxxxxxxxxxxxxxxxxxxx
> > 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-announce@xxxxxxxxxxxxxxxxxxxxxxx
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux