forked from OSchip/llvm-project
234a48270e
The July issue of TOPLAS contains a 50 page discussion of the AST generation techniques used in Polly. This discussion gives not only an in-depth description of how we (re)generate an imperative AST from our polyhedral based mathematical program description, but also gives interesting insights about: - Schedule trees: A tree-based mathematical program description that enables us to perform loop transformations on an abstract level, while issues like the generation of the correct loop structure and loop bounds will be taken care of by our AST generator. - Polyhedral unrolling: We discuss techniques that allow the unrolling of non-trivial loops in the context of parameteric loop bounds, complex tile shapes and conditionally executed statements. Such unrolling support enables the generation of predicated code e.g. in the context of GPGPU computing. - Isolation for full/partial tile separation: We discuss native support for handling full/partial tile separation and -- in general -- native support for isolation of boundary cases to enable smooth code generation for core computations. - AST generation with modulo constraints: We discuss how modulo mappings are lowered to efficient C/LLVM code. - User-defined constraint sets for run-time checks We discuss how arbitrary sets of constraints can be used to automatically create run-time checks that ensure a set of constrainst actually hold. This feature is very useful to verify at run-time various assumptions that have been taken program optimization. Polyhedral AST generation is more than scanning polyhedra Tobias Grosser, Sven Verdoolaege, Albert Cohen ACM Transations on Programming Languages and Systems (TOPLAS), 37(4), July 2015 llvm-svn: 245157 |
||
---|---|---|
.. | ||
documentation | ||
experiments/matmul | ||
images | ||
publications | ||
video-js | ||
.htaccess | ||
bugs.html | ||
changelog.html | ||
content.css | ||
contributors.html | ||
documentation.html | ||
example_load_Polly_into_clang.html | ||
example_load_Polly_into_dragonegg.html | ||
example_manual_matmul.html | ||
examples.html | ||
favicon.ico | ||
get_started.html | ||
index.html | ||
menu.css | ||
menu.html.incl | ||
performance.html | ||
phonecall.html | ||
polly.sh | ||
publications.html | ||
todo.html |