Announcement

Collapse
No announcement yet.

GCC 8.1 vs. GCC 7.3 Compiler Benchmarks On Five AMD/Intel Linux Systems

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • GCC 8.1 vs. GCC 7.3 Compiler Benchmarks On Five AMD/Intel Linux Systems

    Phoronix: GCC 8.1 vs. GCC 7.3 Compiler Benchmarks On Five AMD/Intel Linux Systems

    With GCC 8.1 having been officially released last week, I have spent the past number of days running a variety of compiler benchmarks comparing this initial GCC8 stable release to the previous GCC 7.3 stable compiler release. Tests were done on five different Ubuntu 18.04 LTS Linux systems running very different AMD and Intel processors.

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    Once again?

    Originally posted by phoronix View Post
    The Hiemno pressure
    But wait, more typos:

    Originally posted by phoronix View Post
    See our GCC 8.1 feature overview to learn about the changes in this
    (in this what?)

    Originally posted by phoronix View Post
    with the i9-790XE but the
    (back to the Nehalem)
    Last edited by tildearrow; 10 May 2018, 12:15 PM.

    Comment


    • #3
      Most probably AVX-512 auto-vectorization was significantly improved, as AVX-512 support is what differentiates the two SkyLake-X systems from the rest. A test without -march=native could look differently.

      Comment


      • #4
        Originally posted by Wielkie G View Post
        Most probably AVX-512 auto-vectorization was significantly improved, as AVX-512 support is what differentiates the two SkyLake-X systems from the rest. A test without -march=native could look differently.
        I honestly dontd think auto vectorization is the cause for that difference.

        But I'm no compiler expert.

        Comment


        • #5
          Originally posted by Wielkie G View Post
          Most probably AVX-512 auto-vectorization was significantly improved, as AVX-512 support is what differentiates the two SkyLake-X systems from the rest. A test without -march=native could look differently.
          While GCC 8 supports now skylake-512, it will auto-vectorize to avx256 because avx512 downclocks the CPU.
          There are a lot of differences in auto-vectorization between GCC 7 and GCC 8 because cost-model has been reworked. This affects all core CPUs and Zen.
          There is also new generic tuning that should work better on modern architectures and while working on that core tuning was revisited.

          Comment


          • #6
            GCC 8.1 doesn't use AVX512 per default because of the clock offsets. GCC 7.3 just uses the AVX512 instructions that would be one possible reason for the performance differences.

            Comment


            • #7
              Originally posted by hubicka View Post

              While GCC 8 supports now skylake-512, it will auto-vectorize to avx256 because avx512 downclocks the CPU.
              There are a lot of differences in auto-vectorization between GCC 7 and GCC 8 because cost-model has been reworked. This affects all core CPUs and Zen.
              There is also new generic tuning that should work better on modern architectures and while working on that core tuning was revisited.
              avx2 also downclocks the cpu fwiw.. just not as much

              Comment


              • #8
                Originally posted by hubicka View Post

                While GCC 8 supports now skylake-512, it will auto-vectorize to avx256 because avx512 downclocks the CPU.
                There are a lot of differences in auto-vectorization between GCC 7 and GCC 8 because cost-model has been reworked. This affects all core CPUs and Zen.
                There is also new generic tuning that should work better on modern architectures and while working on that core tuning was revisited.
                But does it used 256bit avx512 (evex prefixed), or 256bit avx (vex prefixed)?

                Just switching to the better AVX512F instructution set just in the AVX512VL 128bit or 256bit modes could yield a performance benefit. The AVX1/2 were really gimpy due all of them operating as two parallel 128bit instructions.

                Comment


                • #9
                  I'd like to see some fresh gcc 8.1 benchmarks on the POWER9 platform after those surprisingly poor results from your april 4 comparison.

                  Comment


                  • #10
                    Originally posted by hubicka View Post
                    While GCC 8 supports now skylake-512, it will auto-vectorize to avx256 because avx512 downclocks the CPU.
                    That is not strictly true and depends on the CPU generation - https://gist.github.com/rygorous/32b...8fd2c64e02d774

                    Comment

                    Working...
                    X