On Mon, Jul 22, 2019 at 3:27 PM Ben Cotton <bcotton(a)redhat.com> wrote:
== 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:email@example.com fweimer(a)redhat.com]
== 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].
Would it be possible to include some basic instructions or a script
for people to run on their systems to see if they are AVX2 compliant?
That would help them assess the impact.
> 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.
> 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
> ** All Fedora builders need to be AVX2-capable.
> ** Infrastructure ticket:
> * 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
> devel mailing list -- devel(a)lists.fedoraproject.org
> To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
> Fedora Code of Conduct:
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: