Meeting notes Polly BoF

Dear all,

please find below the meeting notes form the Polly BoF (as taken by Michael Kruse). Comments and feedback is very much appreciated.

Best,
Tobias

Status update

* Polly late in pipeline
* Uses TargetTransformInfo
* Part of the release process
* isl: C++ interface, MIT licenced, improved scheduler
* Polly integration plan; result: isl and Polly available in each build
* Better integration into LLVM

Discussion

* Discussion topics?
* Move Polly into LLVM:
   * See the proposal at: (_http://lists.llvm.org/pipermail/llvm-dev/2017-September/117698.html_)

* Future ideas:
   * Do loop transformations in one phase, collect assumptions/safety conditions
     * Tobias: Generalize assumption collection -> framework?
     * Speculative optimizations without materializing them?
   * Can the compiler/analysis recommend to the user to add pragmas?
     * Hal: Great set of features
   * There are other possibilities for loop optimizations than Polly
     * Tobias: It is possible to write complex loop transformations without Polly, but writing complex loop transformations can be difficult
     * Tobias: Polyhedral optimization is not a totally stupid option :wink:
     * Tobias: Maybe different loop optimization phases, eg different before inliner
   * Tobias: More loop benchmarks in test-suite
   * Tobias: Explore different options, eg. mixed-lp solvers
   * Why polyhedral model to do basic loop transformations?
     * Hal: Helps deriving safety conditions
     * Experience: People like automatically derived safety conditions, even if transformation is not performed automatically
   * Hal: User-directed loop optimizations (#pragmas), less analysis needed
   * What's the next step?
     * Tobias: Figure out what to do with isl; which subdirectory
     * Adjust the LLVM pass pipeline (eg. partial unrolling after inlining, fix bugs)
     * Discussions about how to rearrange LLVM (e.g. TargetTransformInfo for caches, polyhedral value analysis)
   * With SVN move, how much bigger does the repository become?
     * Tobias: In conclusion, not a big difference (guess: 5-10% increase)
   * Current performance of Polly on SPEC benchmarks, compile time
     * clang bootstrap regression 6%
     * aosp buildbot
     * 3 minutes per program, to find compile time issues
     * some regression 20%-30%
     * ScopDetection guards polyhedral modeling
     * Often compile time regression because of loop versioning
     * Some benchmarks 80%-90% speedup
   * Is isl evolving in LLVM tree, and how often?
     * Tobias: Need ability to adapt changes quickly (bugs...)
   * What could be the first upstreamed patches.
     * Tobias: SVN move of Polly, iterative integration: isl, polyhedral value analysis, Parts of Polly as separate low-level analysis.
   * isl integration is a requirement?
     * Yes; isl as an independent component
     * llvm integration into llvm source tree preferable over external library; use latest version and possibly make own changes (good idea?)
   * Is there a use case of isl outside Polly?
     * Johannes: yes: polyhedral value analysis
   * Is Polly history preserved?
     * Yes
   * Zino: With wrapper it is easier put isl into LLVM
     * Tobias: More control over functionality, C++ class hierarchy
     * Tobias: is currently update when convenient
* Do we want to have polyhedral stuff in LLVM?
* Do we want to have a single community (stop polly-dev)?
* Practical integration of Polly and (polyhedral tooling in general)?
* Integration with LLVM / upsteaming to mainline LLVM?

Best,
Tobias