Announcement

Collapse
No announcement yet.

Trying The LLVM SI Machine Instruction Scheduler With Mesa 17.2 + LLVM 5.0

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

  • Trying The LLVM SI Machine Instruction Scheduler With Mesa 17.2 + LLVM 5.0

    Phoronix: Trying The LLVM SI Machine Instruction Scheduler With Mesa 17.2 + LLVM 5.0

    A Phoronix reader was recently making comments about the LLVM SI Machine Instruction Scheduler "sisched", so I decided to run some fresh benchmarks of this opt-in feature for RadeonSI Gallium3D...

    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
    I believe there are patches floating around that improve this scheduler but they haven't landed yet.

    Comment


    • #3
      hmm, I'm surprised no changes, my own tests on a Bonaire showed significant differences for Heaven/Valley benchmarks when using the sisched instruction scheduler.

      Comment


      • #4
        Originally posted by spstarr View Post
        hmm, I'm surprised no changes, my own tests on a Bonaire showed significant differences for Heaven/Valley benchmarks when using the sisched instruction scheduler.
        Michael did the tests on a high end system that would have fewer bottlenecks. What are the specs of your system?

        Comment


        • #5
          It's a Dell Precision M6800 32GB RAM, 2GB Bonaire GCN 2 generation card, Fedora 25, agd5f drm-next-4.13-wip + Linus master (sometimes), I use AMDGPU not radeon for driver.

          LLVM 5.0 git master, Mesa master, AMDGPU ddx master, kwin but disable composite effects (vsync disabled).

          Recently changes in either mesa/LLVM (or kernel) has given me even more fps gains

          I've been on IRC and have kept track of all the benchmarking i've done with the basic programs.

          Going back to September 2015: with sisched used

          2015
          ====

          Sept 1st FurMark 1920x1080 - Score: 1376 (+1) - 22 fps - Heaven 1920x1080 - High - No AA - No Tess - Score: 605 (+1) 24.0fps

          Sep 26st: LLVM trunk with SI scheduled enabled / Mesa git master Test results: FurMark 1920x1080 - Score: was (1376) now 1381 (gain: +5) - was 22 fps now 23 fps (gain: +1) - Heaven 1920x1080 - High - No AA - No Tess - Score: was (605) now 591 (loss: -14) - was 24.0fps now 23.5 (loss: 0.5 fps)

          Oct 27th: LLVM trunk w/ LLVM SI scheduler (v2) / Mesa master - Oct 27th build: FurMark 1920x1080 - Base score: 1368, Actual: 1382 (Loss from 1386 from October 5th) - Base fps 22fps, Actual: 23 fps - Heaven 1920x1080 - High - No AA - No Tess - Base Score: 552 / 21.9fps, Actual: 588 / 23.4fps (Loss from: 605 / 24.0fps from August30th)

          Dec 11th: FurMark: 1374, fps 22 - Best ever score 1385 / fps 23

          2016
          ====

          Jan 23rd: w/o SI scheduler: FurMark: 1301 / fps 21 / Haven score: 547 / fps 21.7 - Baseline
          Jan 23rd: with SI scheduler: FurMark: 1321 / fps 22 / Haven score: 587 / fps 23.3

          Feb 01st: 1324, 22fps FurMark, Haven: 587, 23.3fps w/ R600_DEBUG=sisched
          Feb 12nd: 1323, 22fps on FurMark... thats a lot worse with sisched..

          Mar 22nd: AMDGPU CIK: w/ sisched: FurMark: 1312, fps 21 / Heaven: 579 / 23.0fps | Windows
          10: FurMark score 1414 / 23 fps, Heaven: 603 / 23.9 fps

          Mar 29th: Today's mesa/LLVM w/ tstellar's patches : FurMark 1313, fps: 21 @ 1920x1200 | Heaven: 596, 23.6 fps @ 1920x1200, no tess, no AA, High graphics

          Mar 29th: w/ sischeduler DISABLED / today's mesa/LLVM w/ tstellar's patches : FurMark 1297, fps: 21 @ 1920x1200 | Heaven: 551, 21.9 fps @ 1920x1200, no tess, no AA, High graphics [this was testing improvements to the default gcnsched instruction scheduler]

          Starting November things started rapidly improving from there on ive bigger gains.

          Nov 12: wow, 1399 score @ 23fps for FurMark when PRIME is enabled + modesetting DDX used

          2017
          ====

          Apr 03rd: New Record: 1607 score @ 26 fps vs old: Mar 17 new record FurMark 1529 @ 25fps UP from 1517 @ 25fps

          Not just FurMark however

          August 2015 - Heaven: 605, 591, 588 --> to now: 687 score @ 27.3fps up from 24fps from 2015

          So, in some cases, I've gained anywhere from 5-30fps depending on what. I've been working with mannerov and have been testing his changes (not his newest sisched changes coming though), I would not disable sisched as for me, it clearly destroys the default instruction scheduler right now.














          Last edited by spstarr; 18 May 2017, 10:27 PM.

          Comment


          • #6
            Two things:

            . Now with the mesa cache, if your shaders are cached, you don't compile again, thus the scheduler doesn't matter (the cache doesn't care which scheduler was used for it), so you have to disable cache (and delete the cache dir I guess ?)
            . As default scheduler improved, it is expected the difference between it and sisched reduced.

            Comment


            • #7
              mannerov interesting, I'm curious about that. I'll run some tests this weekend to see what differences with cache cleared on each case.

              Comment


              • #8
                Originally posted by mannerov View Post
                Now with the mesa cache, if your shaders are cached, you don't compile again, thus the scheduler doesn't matter (the cache doesn't care which scheduler was used for it)
                @tarceri shouldn't scheduler be part of key?

                Comment


                • #9
                  Originally posted by pal666 View Post
                  @tarceri shouldn't scheduler be part of key?
                  As long as the compiled result is the same, why should it?

                  Comment


                  • #10
                    Originally posted by geearf View Post
                    As long as the compiled result is the same, why should it?
                    lol, if compiled result is the same, why have two schedulers in the first place?

                    Comment

                    Working...
                    X