Announcement

Collapse
No announcement yet.

GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

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

  • GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

    Phoronix: GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

    The Linux x86_64 micro-architecture feature levels have taken shape this year for different feature/performance levels based on a CPU's capabilities. Both LLVM Clang 12 and GCC 11 are ready to go in offering the new x86-64-v2, x86-64-v3, and x86-64-v4 targets...

    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
    It seems to be a good idea. Hopefully Bulldozer is supported with x86-64-v2, I don't want to write off those systems quite yet. If it is supported at that level, I might just change my build system to use v2 as its baseline. My build system already accommodates building multiple target versions, although I only turn the multiple target versions on for software that is compute heavy.

    Comment


    • #3
      Like a march=XY light Version. So at the end this seems to be a compromise of the Clear Linux approach. Pkg Builder can decide what their minimal arch is and still maintain a "kinda-generic".
      I hope to see this in use for Distro Falvours.
      Maybe there will be more variety like Ubuntu 22.04 x86_64v2, 22.04 x86_64v3 ...this would be nice.
      Last edited by CochainComplex; 03 November 2020, 08:58 AM.

      Comment


      • #4
        Originally posted by cbxbiker61 View Post
        It seems to be a good idea. Hopefully Bulldozer is supported with x86-64-v2, I don't want to write off those systems quite yet. If it is supported at that level, I might just change my build system to use v2 as its baseline. My build system already accommodates building multiple target versions, although I only turn the multiple target versions on for software that is compute heavy.
        well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

        edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
        POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

        ...one might argue that this is slightly biased. v2 withcout popcnt would be less "discriminating".

        edit2: as written in the next post by patstew POPCNT is part of ABM - which means pre-ryzen AMD will have not be discriminated.
        Last edited by CochainComplex; 03 November 2020, 08:55 AM.

        Comment


        • #5
          Originally posted by CochainComplex View Post

          well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

          edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
          POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

          ...one might argue that this is slightly biased. v2 withcout popcnt would less "discriminating".
          POPCNT is included in 'ABM' for AMD, it's in 'barcelona' (2007) and newer.
          Last edited by patstew; 03 November 2020, 08:52 AM.

          Comment


          • #6
            Originally posted by patstew View Post

            POPCNT is included in 'ABM' for AMD, it's in 'barcelona' (2007) and newer.
            Thx for correcting me!

            Comment


            • #7
              Originally posted by CochainComplex View Post

              well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

              edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
              POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

              ...one might argue that this is slightly biased. v2 withcout popcnt would less "discriminating".
              Albeit there were some discussions on the mailing lists, I haven't read much debate about the definition of the feature levels in regard to these older AMD CPU's. The first RFC still included a feature level for Ivy Bridge around AVX 1 but that was dropped.

              Not all hope is lost though, I found a discrepancy - the GCC page lists POPCNT as only supported on Zen onwards but Wikipedia states that support for both POPCNT and LZCNT were introduced with Barcelona (https://en.wikipedia.org/wiki/SSE4). "AMD calls this pair of instructions Advanced Bit Manipulation (ABM)."

              Maybe it was an oversight in GCC to not expose POPCNT on Barcelona and onwards? Or Wikipedia is wrong here?

              Update: Ah, I wasn't fast enough to see patstew's and Cochain's newer posts.

              Comment


              • #8
                FWIW, the ML posts also explicitly suggest that the intent is for x86-64-v2 to include bdver1-3.

                One could argue that x86-64-v1 (and k8) is now mostly relegated to "legacy", while x86-64-v2 is "compatibility" and x86-64-v3 is "reasonably modern".

                Comment


                • #9
                  I wish they'd have added a level for Sandybridge, since AVX is a pretty big deal. My employer is still supporting customers with Sandybridge systems (these are appliances with a long service life) and my primary home machines are that generation.

                  v4 seems like a hammer for pushing AMD to support AVX-512.

                  Comment


                  • #10
                    Originally posted by coder View Post
                    I wish they'd have added a level for Sandybridge, since AVX is a pretty big deal. My employer is still supporting customers with Sandybridge systems (these are appliances with a long service life) and my primary home machines are that generation.

                    v4 seems like a hammer for pushing AMD to support AVX-512.
                    I read somewhere the hammer comes down on Zen 4.

                    Comment

                    Working...
                    X