diff options
Diffstat (limited to 'polly/www/example_load_Polly_into_clang.html')
-rw-r--r-- | polly/www/example_load_Polly_into_clang.html | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/polly/www/example_load_Polly_into_clang.html b/polly/www/example_load_Polly_into_clang.html deleted file mode 100644 index fdf3132a01c..00000000000 --- a/polly/www/example_load_Polly_into_clang.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> -<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ --> -<html> -<head> - <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>Polly - Load Polly into clang</title> - <link type="text/css" rel="stylesheet" href="menu.css"> - <link type="text/css" rel="stylesheet" href="content.css"> -</head> -<body> -<div id="box"> -<!--#include virtual="menu.html.incl"--> -<div id="content"> -<!--=====================================================================--> -<h1>Load Polly into clang and automatically run it at -O3</h1> -<!--=====================================================================--> - -<p><b>Warning:</b> Even though this example makes it very easy to use Polly, -you should be aware that Polly is a young research project. It is expected -to crash, produce invalid code or to hang in complex calculations even for -simple examples. In case you see such a problem, please check the <a -href="bugs.html">Bug database</a> and consider reporting a bug. -<p> -<b>Warning II:</b> clang/LLVM/Polly need to be in sync. This means - you need to compile them yourself from a recent svn/git checkout</b> -<h2>Load Polly into clang</h2> - -By default Polly is configured as a shared library plugin that is loaded in -tools like clang, opt, and bugpoint when they start their execution. - -By loading Polly into clang (or opt) the Polly options become automatically -available. You can load Polly either by adding the relevant commands to -the CPPFLAGS or by creating an alias. - -<pre class="code"> -$ export CPPFLAGS="-Xclang -load -Xclang ${POLLY_BUILD_DIR}/lib/LLVMPolly.so" -</pre> - -or -<pre class="code"> -$ alias pollycc clang -Xclang -load -Xclang ${POLLY_BUILD_DIR}/lib/LLVMPolly.so -</pre> - -To avoid having to load Polly in the tools, Polly can optionally be configured -with cmake to be statically linked in the tools: - -<pre class="code"> -$ cmake -D LINK_POLLY_INTO_TOOLS:Bool=ON -</pre> - -<h2>Optimizing with Polly</h2> - -Optimizing with Polly is as easy as adding <b>-O3 -mllvm -polly</b> to your -compiler flags (Polly is only available at -O3). - -<pre class="code">pollycc -O3 -mllvm -polly file.c</pre> - -<h2>Automatic OpenMP code generation</h2> - -To automatically detect parallel loops and generate OpenMP code for them you -also need to add <b>-mllvm -polly-parallel -lgomp</b> to your CFLAGS. - -<pre class="code">pollycc -O3 -mllvm -polly -mllvm -polly-parallel -lgomp file.c</pre> - -<h2>Automatic Vector code generation</h2> - -Automatic vector code generation can be enabled by adding <b>-mllvm --polly-vectorizer=stripmine</b> to your CFLAGS. - -<pre class="code">pollycc -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine file.c</pre> - -<h2>Extract a preoptimized LLVM-IR file</h2> - -Often it is useful to derive from a C-file the LLVM-IR code that is actually -optimized by Polly. Normally the LLVM-IR is automatically generated from -the C code by first lowering C to LLVM-IR (clang) and by subsequently applying a -set of preparing transformations on the LLVM-IR. To get the LLVM-IR after the -preparing transformations have been applied run Polly with '-O0'. - -<pre class="code">pollycc -O0 -mllvm -polly -S -emit-llvm file.c</pre> - -<h2>Further options</h2> - -Polly supports further options that are mainly useful for the development or -the -analysis of Polly. The relevant options can be added to clang by appending -<b>-mllvm -option-name</b> to the CFLAGS or the clang -command line. - -<h3>Limit Polly to a single function</h3> -To limit the execution of Polly to a single function, use the option -<b>-polly-only-func=functionname</b>. - -<h3>Disable LLVM-IR generation</h3> -Polly normally regenerates LLVM-IR from the Polyhedral representation. To only -see the effects of the preparing transformation, but to disable Polly code -generation add the option <b>polly-no-codegen</b>. - -<h3>Graphical view of the SCoPs</h3> - -Polly can use graphviz to show the SCoPs it detects in a program. The relevant -options are <b>-polly-show</b>, <b>-polly-show-only</b>, <b>-polly-dot</b> and -<b>-polly-dot-only</b>. The 'show' options automatically run dotty or another -graphviz viewer to show the scops graphically. The 'dot' options store for each -function a dot file that highlights the detected SCoPs. If 'only' is appended at -the end of the option, the basic blocks are shown without the statements the -contain. - -<h3>Change/Disable the Optimizer</h3> -Polly uses by default the isl scheduling optimizer. The isl optimizer optimizes -for data-locality and parallelism using the <a -href="http://pluto-compiler.sf.net">Pluto</a> algorithm. For research it is also -possible to run <a -href="http://www-rocq.inria.fr/~pouchet/software/pocc/">PoCC</a> as external -optimizer. PoCC provides access to the original Pluto implementation. To use -PoCC add <b>-polly-optimizer=pocc</b> to the command line (only available if -Polly was compiled with scoplib support) [removed after <a href="http://llvm.org/releases/download.html#3.4.2">LLVM 3.4.2</a>]. -To disable the optimizer entirely use the option <b>-polly-optimizer=none</b>. - -<h3>Disable tiling in the optimizer</h3> -By default both optimizers perform tiling, if possible. In case this is not -wanted the option <b>-polly-tiling=false</b> can be used to disable it. (This -option disables tiling for both optimizers). - -<h3>Ignore possible aliasing</h3> -By default we only detect scops, if we can prove that the different array bases -can not alias. This is correct do if we optimize automatically. However, -without special user annotations like 'restrict' we can often not prove that -no aliasing is possible. In case the user knows no aliasing can happen in the -code the <b>-polly-ignore-aliasing</b> can be used to disable the check for -possible aliasing. - -<h3>Import / Export</h3> -The flags <b>-polly-import</b> and <b>-polly-export</b> allow the export and -reimport of the polyhedral representation. By exporting, modifying and -reimporting the polyhedral representation externally calculated transformations -can be applied. This enables external optimizers or the manual optimization of -specific SCoPs. -</div> -</div> -</body> -</html> |