Public Talk:Intelligent Optimization Tuning

From ZevilsWiki

Jump to: navigation, search

Progress Log

Started this write-up. —Matthewg 14:33, 3 November 2006 (PST)

I met with Tim yesterday and made him a wiki account. We talked about work we could do while ACOVEA is cranking along. We discussed how to approach part 2, the classification problem. We spent some time discussing how to test its performance. The first step is to figure out what features we should extract, though. I'll be doing that over the next couple of weeks. [1] and [2] might be worth rereading. —Matthewg 13:51, 7 November 2006 (PST)

Features

Features used in [1]:

  • Loop nest level
  • Number of ops. in loop body.
  • Number of floating point ops. in loop body.
  • Number of branches in loop body.
  • Number of memory ops. in loop body.
  • Number of operands in loop body.
  • Number of implicit instructions in loop body.
  • Number of unique predicates in loop body.
  • Estimated latency of the critical path of loop.
  • Estimated cycle length of loop body.
  • Number of parallel “computations” in loop.
  • Max. dependence height of computations.
  • Max. height of memory dependencies of computations.
  • Max. height of control dependencies of computations.
  • Average dependence height of computations.
  • Number of indirect references in loop body.
  • Min. memory-to-memory loop-carried dependence.
  • Number of memory-to-memory dependencies.
  • Tripcount of the loop (-1 if unknown).
  • Number of uses in the loop.
  • Number of defs. in the loop.

That's a lot of features for tuning just a single setting! They made some attempts to pick out which ones were the most useful. Mutual information said:

  • Number of floating point ops.
  • Number of operands
  • "Instruction fan-in in DAG" (not quite sure what this means...)
  • Live range size
  • Number of memory ops.

Greedy classifier for nearest neighbor said:

  • Number of operands
  • Live range size
  • Critical path length
  • Number of operations
  • Known tripcount

Greedy SVM classifier said:

  • Number of floating point ops.
  • Loop nest level
  • Number of operands
  • Number of branches
  • Number of memory ops

[3] is good background reading.

Matthewg 13:37, 17 November 2006 (PST)

References

  1. 1.1 1.2 Predicting Unroll Factors Using Supervised Classification
  2. Compiler Optimization-Space Exploration
  3. Understanding the Behavior of Compiler Optimizations
Personal tools