No announcement yet.

GCC 8 Through GCC 11 Stable Plus GCC 12 Compiler Benchmarks

  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by oleid View Post
    That can be tricky to do as part of a CI pipeline. The variances will be high.
    What the rust team does is they also count the number of instructions generated for a code snippet. It has a high correlation with the wall time of a benchmark and the variance is low.
    While that's interesting, you'd still have to test multiple benchmarks with multiple ISA targets. Maybe not all ISA targets, but you'd need representative samples of different sorts of ISAs.


    • #12
      Originally posted by david-nk View Post
      Yes, but such work can only realistically happen with a testing framework to guide you, to see if deductions and assumptions are actually correct. Something that might seem like good logic to make a decision and indeed works well for the cases you are currently analyzing might fail in unexpected ways in other situations. Not only are CPUs complex, GCC is complex. Optimization/analysis passes can depend on each other and interfere with each other. It's a common problem with GCC that when one optimization is being applied, it sometimes breaks other ones, sometimes even really basic ones like constant propagation or strength reduction. The extensive testing (which already exists for correctness of code generation, but not performance) would tell you right away whether you overlooked something (you probably did).
      I was reluctant to say this, as it's become such a buzzword of late, but this does sound ripe for the application of deep learning.

      Basically, the problem boils down to one of determining which optimizations to apply and with what parameters, for a given piece of code. Once you get the input representation right, training it would be a fairly straight-forward matter of benchmarking it with the parameters it suggests, and optimizing it for the shortest time.


      • #13
        The Botan regression has been fixed. See