| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
| "http://www.w3.org/TR/html4/strict.dtd"> |
| <html> |
| <head> |
| <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> |
| <title>Polly - Getting Started</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>Getting Started: Building and Installing Polly</h1> |
| |
| <h2> Automatic </h2> |
| |
| There is a <a href="polly.sh">script</a> available to automatically checkout, |
| update, build, and test Polly. This script contains all the commands that are |
| subsequently described on this webpage. The automatic installation consists |
| of four simple steps: |
| |
| <pre> |
| mkdir polly && cd polly |
| wget http://polly.llvm.org/polly.sh |
| chmod +x polly.sh |
| ./polly.sh |
| </pre> |
| |
| <h2> Manual </h2> |
| <h3 id="source"> Get the code </h3> |
| |
| The Polly source code is available in the LLVM SVN repository as well as through |
| an official git mirror. It is added to the <em>tools</em> |
| directory of the llvm sources. |
| <b>Polly and LLVM need to be checked out at the same time. Checkouts |
| from different dates may not work!</b> |
| <h4>Set the directory layout:</h4> |
| <pre> |
| export BASE=`pwd` |
| export LLVM_SRC=${BASE}/llvm |
| export POLLY_SRC=${LLVM_SRC}/tools/polly |
| |
| # Also build the matching clang-version (optional) |
| export CLANG_SRC=${LLVM_SRC}/tools/clang |
| </pre> |
| |
| <h4>SVN</h4> |
| <pre> |
| svn checkout http://llvm.org/svn/llvm-project/llvm/trunk ${LLVM_SRC} |
| svn checkout http://llvm.org/svn/llvm-project/polly/trunk ${POLLY_SRC} |
| |
| # Also build the matching clang-version (optional) |
| svn checkout http://llvm.org/svn/llvm-project/cfe/trunk ${CLANG_SRC} |
| </pre> |
| <h4>GIT</h4> |
| <pre> |
| git clone http://llvm.org/git/llvm.git ${LLVM_SRC} |
| git clone http://llvm.org/git/polly.git ${POLLY_SRC} |
| |
| # Also build the matching clang-version (optional) |
| git clone http://llvm.org/git/clang.git ${CLANG_SRC} |
| </pre> |
| <h3 id="prerequisites"> Prerequisites </h3> |
| <ul> |
| <li>libgmp</li> |
| <li>isl</li> |
| </ul> |
| |
| <h4> libgmp </h4> |
| Install libgmp (library + developer package) through the package management |
| system of your operating system. |
| |
| <h4> isl</h4> |
| |
| Polly is tested with a fixed version of isl. To obtain the source code of isl |
| use checkout_isl.sh as available in ${POLLY_SRC}/utils/checkout_isl.sh. |
| |
| <h4>Set the directory layout:</h4> |
| <pre> |
| export ISL_SRC=${BASE}/isl_src |
| export ISL_INSTALL=${BASE}/isl_install |
| </pre> |
| |
| <h4> First installation</h4> |
| <pre> |
| ${POLLY_SRC}/utils/checkout_isl.sh ${ISL_SRC} |
| cd ${ISL_SRC} |
| ./configure --prefix=${ISL_INSTALL} |
| make |
| make install |
| cd ${BASE} |
| </pre> |
| |
| <h4> Update the installation</h4> |
| |
| Updating isl may become necessary, if Polly uses a feature |
| only available in a recent version of isl. |
| <pre> |
| ${POLLY_SRC}/utils/checkout_isl.sh ${ISL_SRC} |
| cd ${ISL_SRC} |
| make |
| make install |
| cd ${BASE} |
| </pre> |
| |
| <h3 id="build">Build Polly</h3> |
| |
| To build Polly you can either use the autoconf or the cmake build system. At the |
| moment only the autoconf build system allows to run the llvm test-suite and only |
| the cmake build system allows to run 'make check-polly'. |
| |
| <h4>Set the directory layout:</h4> |
| <pre> |
| export LLVM_BUILD=${BASE}/llvm_build |
| mkdir ${LLVM_BUILD} |
| cd ${LLVM_BUILD} |
| </pre> |
| |
| <h4>CMake</h4> |
| |
| <pre> |
| cmake -DCMAKE_PREFIX_PATH=${ISL_INSTALL} ${LLVM_SRC} |
| make |
| </pre> |
| |
| <h4> Autoconf </h4> |
| |
| <pre> |
| ${LLVM_SRC}/configure --with-isl=${ISL_INSTALL} |
| make |
| </pre> |
| |
| <h3> Test Polly</h3> |
| |
| <p>To check if Polly works correctly you can run <em>make check-polly</em> for the |
| cmake build or <em>make check-polly -C tools/polly/test/</em> for the autoconf |
| build. |
| |
| <p>If you get something like <em>"... libisl.so.9: cannot open shared object file .."</em>, |
| it is because you installed isl to a non-standard path, and libisl |
| could not be found. To solve this issue, you need to append the path of parent |
| directory of libisl, i.e. ${ISL_INSTALL}/lib, to LD_LIBRARY_PATH by: |
| |
| <pre>export LD_LIBRARY_PATH=${ISL_INSTALL}/lib:$LD_LIBRARY_PATH</pre> |
| |
| <p>Also try the above command if you get errors such as: |
| <code>undefined symbol: isl_ctx_get_max_operations</code> |
| |
| <p>If you get an error in one of the python files, your system probably uses python3 |
| as default python interpreter. This is the case, for instance, under Arch Linux. |
| To solve this issue, run <code>cmake</code> again, but with the added argument: |
| <code>-DPYTHON_EXECUTABLE=/usr/bin/python2</code> (replace <code>/usr/bin/python2</code> |
| with the location of the python2 interpreter under your system). |
| |
| <pre>cmake -DCMAKE_PREFIX_PATH=${ISL_INSTALL} -DPYTHON_EXECUTABLE=/usr/bin/python2 ${LLVM_SRC}</pre> |
| |
| <h2> Optional Features </h2> |
| |
| <h3> Pocc [Supported until <a href="http://llvm.org/releases/download.html#3.4.2">LLVM 3.4.2</a>]</h3> |
| |
| <p>Polly can use <a href="http://www.cse.ohio-state.edu/~pouchet/software/pocc"> |
| PoCC</a> as an external optimizer. PoCC is a research project that provides |
| an integrated version of <a href="http://pluto-compiler.sf.net">Pluto</a>, an |
| advanced data-locality and tileability optimizer. Polly includes internally |
| already a similar optimizer, such that in general PoCC is not needed. It is |
| only recommended for people who want to compare against a different |
| optimizer.</a> |
| <br/> |
| To use it install PoCC 1.0-rc3.1 (the one with Polly support) and add it to your PATH. |
| |
| <pre> |
| wget <a |
| href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz">http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz</a> |
| tar xzf pocc-1.0-rc3.1-full.tar.gz |
| cd pocc-1.0-rc3.1 |
| ./install.sh |
| export PATH=$PATH:`pwd`/bin |
| </pre> |
| |
| You also need to install scoplib-0.2.0 and provide its location to |
| Polly's cmake or configure call. |
| |
| <pre> |
| wget <a |
| href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz" |
| >http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz</a> |
| tar xzf scoplib-0.2.0.tar.gz |
| cd scoplib-0.2.0 |
| ./configure --enable-mp-version --prefix=/path/to/scoplib/installation |
| make && make install |
| </pre> |
| </div> |
| </div> |
| |
| </body> |
| </html> |