Announcement

Collapse
No announcement yet.

Radeon RADV "ACO" Performance On Mesa 19.3 Looking Good

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

  • #11
    Typos:

    Originally posted by phoronix View Post
    But be aware currently the back-end supports just GFX8 and GFX9 hardware throguh Vega:
    GFX8 isn't Vega?

    Comment


    • #12
      Originally posted by tildearrow View Post
      Typos:



      GFX8 isn't Vega?
      From https://github.com/RadeonOpenCompute/ROCm/wiki it seems not.

      GFX8 GPUs
      • “Fiji” chips, such as on the AMD Radeon R9 Fury X and Radeon Instinct MI8
      • “Polaris 10” chips, such as on the AMD Radeon RX 580 and Radeon Instinct MI6
      • .....
      • “Polaris 11” chips, such as on the AMD Radeon RX 570 and Radeon Pro WX 4100
      • “Polaris 12” chips, such as on the AMD Radeon RX 550 and Radeon RX 540
      GFX9 GPUs
      • “Vega 10” chips, such as on the AMD Radeon RX Vega 64 and Radeon Instinct MI25
      • “Vega 7nm” chips, such as on the Radeon Instinct MI50, Radeon Instinct MI60 or AMD Radeon VII

      Comment


      • #13
        Originally posted by shmerl View Post
        Are you using Navi? It works with Vega. For Navi, there is a separate ACO branch, but it's not working for it either, beyond the main menu.
        RX 570. The Witcher 3 failed to display anything with mesa-git irrespective of whether RADV_PERFTEST=aco was set. I reinstalled mesa-19.2.0.

        Comment


        • #14
          Works fine for me with RX 5700 XT using Mesa master from a couple of days ago. Is it some very recent commit regression?

          Comment


          • #15
            Originally posted by shmerl View Post
            The best way to log framerates and frametimes is using GALLIUM_HUD and Mesa Vulkan overlay. Works regardless of the application.
            It isn't the best way. Some issues:
            • GALLIUM_HUD=frametime GALLIUM_HUD_DUMP_DIR=$PWD:
              • The file "frametime_(ms)" is a list of values without wallclock time. How do you suggest to match two frametime files against each other without wallclock information?
            • Can DXVK_HUD log frametimes into a file?
            • VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=output_file=foo,no_di splay=1:
              • Missing wallclock time
              • How to make it record the frametime at the end of each frame?
            Last edited by atomsymbol; 10-06-2019, 02:53 AM.

            Comment


            • #16
              Originally posted by atomsymbol View Post

              It isn't the best way. Some issues:
              • GALLIUM_HUD=frametime GALLIUM_HUD_DUMP_DIR=$PWD:
                • The file "frametime_(ms)" is a list of values without wallclock time. How do suggest to match two frametime files against each other without wallclock information?
              • Can DXVK_HUD log frametimes into a file?
              • VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=output_file=foo,no_di splay=1:
                • Missing wallclock time
                • How to make it record the frametime at the end of each frame?
              Not sure what you mean by wallclock time, system time? No need to show that, since it's using fixed update period, which is 0.5 sec (seconds, float). You can change it with GALLIUM_HUD_PERIOD. See: https://www.mesa3d.org/envvars.html

              For Vulkan, configure Mesa Vulkan overlay. For details on usage, see:

              Code:
              VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=help vkcube
              The period is changed with fps_sampling_period (milliseconds, integer) which is set to 500 by default, so matches GALLIUM_HUD default.
              Last edited by shmerl; 10-06-2019, 01:16 AM.

              Comment


              • #17
                Originally posted by shmerl View Post
                Not sure what you mean by wallclock time, system time? No need to show that, since it's using fixed update period, which is 0.5 sec (seconds, float). You can change it with GALLIUM_HUD_PERIOD. See: https://www.mesa3d.org/envvars.html

                For Vulkan, configure Mesa Vulkan overlay. For details on usage, see:

                Code:
                VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=help vkcube
                The period is changed with fps_sampling_period (milliseconds, integer) which is set to 500 by default, so matches GALLIUM_HUD default.
                A definition of wallclock time: $ man clock_gettime

                It seems the best way of explaining what the problems are is to follow these steps:
                1. Delete shader caches
                2. Run Shadow of Mordor benchmark and record frametimes via GALLIUM_HUD to file1
                3. Run Shadow of Mordor benchmark and record frametimes via GALLIUM_HUD to file2 (without deleting shader caches)
                4. Write (or find) a program that matches the corresponding elements of file1 and file2
                  • The number of records in file1 before/after the benchmark starts/ends (=prefix/postfix) is different from the prefix/postfix in file2
                  • The files most likely differ in the number of benchmark records they contain
                5. Update https://github.com/phoronix-test-sui...nix-test-suite
                An upgrade to the task can be to match frametimes of two different GPUs (Polaris vs Vega), change resolutions, change quality settings, etc. The sizes of file1 and file2 will differ more than in the previous case (the previous case = single GPU, single resolution, same rendering quality).

                One of the reasons Shadow of Mordor and other games are recording frametimes themselves is that the game knows when the benchmark starts and ends, thus avoiding the need to determine the prefix and the postfix.
                Last edited by atomsymbol; 10-06-2019, 02:54 AM.

                Comment


                • #18
                  If you mean you can't match records in the file to events in the game, I don't get why not. Measure the full time you run the test, check at what points of time something happened (for example one minute into the test), and using sampling period, get your values. Not sure what cache has to do with anything, since sampling period is constant.

                  Number of records in the file will be directly dependent on the duration of your test. The logging can't know what you need to focus on, so it's up to you to record the fact that "event A happened at time B". For example, you can perform screen capture (record video of the test), and using video you can establish times of events that interest you. It's trivial to find corresponding record in the file matching that event.
                  Last edited by shmerl; 10-06-2019, 03:11 AM.

                  Comment


                  • #19
                    minimum framerate suffers too often to call it improvement. i'm waiting for next round
                    and btw totalwar minimum is ridiculous regardless of compiler

                    Comment


                    • #20
                      Originally posted by LeJimster View Post

                      The main benefit of ACO is faster initial compilation times, and much reduced stutter in games. I would say the performance shown in Michaels benchmarks don't reflect the whole picture. Theres also optimizations to do with DXVK that aren't available with LLVM.
                      I doubt it. Caching is likely involved, in which case the shader compiler is not involved.
                      AFAIK there are much more than one run in phoronix benchmarks and the shaders may have been cached even earlier on.
                      Michael do you know whether that was the case in your benchmarks?

                      Comment

                      Working...
                      X